vscode-appwrite/src/utils/AppwriteCall.ts
2021-04-19 13:11:56 -07:00

30 lines
938 B
TypeScript

/* eslint-disable @typescript-eslint/ban-types */
import { window } from "vscode";
import { Error } from "../appwrite";
import { ext } from "../extensionVariables";
export default function AppwriteCall<T, R = T>(
promise: Promise<object>,
onSuccess?: (success: T) => R,
onError?: (error: Error) => R
): Promise<R | undefined> {
return promise.then(
(successResp) => {
ext.outputChannel?.appendLog("Appwrite call success");
if (onSuccess) {
return onSuccess((successResp as unknown) as T);
}
return successResp as unknown as R;
},
(errResp: Error) => {
if (onError) {
onError(errResp as Error);
return undefined;
}
window.showErrorMessage(errResp.message);
ext.outputChannel?.appendLog(errResp.message);
return undefined;
}
);
}