@cloudcome/utils-uni
Version:
cloudcome utils for uni-app
59 lines (58 loc) • 2.1 kB
JavaScript
import { isFunction } from "@cloudcome/utils-core/type";
import { useRequest } from "@cloudcome/utils-vue/request";
import { p as parseCloudMethodOutput } from "./_helpers.mjs";
function importCloudObject(objectName, importOptions) {
const fallbackErrorMessage = importOptions?.fallbackErrorMessage || "请求失败";
const server = importOptions?._mockServer || uniCloud.importObject(objectName, importOptions);
const useCloudMethod = (method, caller, options) => {
return useRequest(
async (...inputs) => {
const methodName = isFunction(method) ? method(...inputs) : method;
const request = server[methodName];
const output = await caller(request, ...inputs);
return parseCloudMethodOutput(output, fallbackErrorMessage);
},
{
...options,
onBefore(...inputs) {
if (options?.showLoading) uni.showLoading({ title: "", mask: true });
importOptions?.onBefore?.();
options?.onBefore?.(...inputs);
},
onSuccess(data, ...inputs) {
importOptions?.onSuccess?.();
options?.onSuccess?.(data, ...inputs);
},
onError(err, ...inputs) {
importOptions?.onError?.(err);
options?.onError?.(err, ...inputs);
if (options?.showError) {
setTimeout(() => {
uni.showToast({ title: err.message, icon: "none", duration: 3e3, mask: false });
});
}
},
onAfter(...inputs) {
if (options?.showLoading) uni.hideLoading();
importOptions?.onAfter?.();
options?.onAfter?.(...inputs);
}
}
);
};
return useCloudMethod;
}
function useDatabase(caller, options) {
const db = options?._mockDatabase || uniCloud.database();
return useRequest(async (...inputs) => {
const { result } = await caller(db, ...inputs);
if (!result.errCode) return result;
throw new Error(result.errMsg || "请求失败");
}, options);
}
export {
importCloudObject,
parseCloudMethodOutput,
useDatabase
};
//# sourceMappingURL=client.mjs.map