import Taro from '@tarojs/taro'
import type { CloudFunctionName } from '@/types/cloud'

export async function callCloud<TReq extends object, TRes>(
  name: CloudFunctionName,
  data: TReq
): Promise<TRes> {
  if (!Taro.cloud) {
    throw new Error('当前环境未启用 Taro.cloud')
  }

  const res = await Taro.cloud.callFunction({
    name,
    data
  })

  return res.result as TRes
}

export function canUseCloud(): boolean {
  return Boolean(process.env.TARO_APP_CLOUD_ENV && Taro.cloud)
}

