cap-codepush
Version:
CodePush Plugin for Capacitor. Working with Capacitor 7.
78 lines (68 loc) • 2.64 kB
text/typescript
import { Callback, ErrorCallback, SuccessCallback } from "./callbackUtil";
/**
* Callback / error / logging utilities.
*/
export class CodePushUtil {
/**
* Tag used for logging to the console.
*/
private static TAG: string = "[CodePush]";
/**
* Performs a copy of all members of fromParameter to toParameter, with the condition that they are unassigned or null in toParameter.
*/
public static copyUnassignedMembers(fromParameter: any, toParameter: any) {
for (let key in fromParameter) {
if ((<any>toParameter)[key] === undefined || (<any>toParameter)[key] === null) {
(<any>toParameter)[key] = (<any>fromParameter)[key];
}
}
}
/**
* Given two Cordova style callbacks for success and error, this function returns a node.js
* style callback where the error is the first parameter and the result the second.
*/
public static getNodeStyleCallbackFor<T>(successCallback: SuccessCallback<T>, errorCallback: { (error?: any): void; }): Callback<T> {
return (error: any, result: T) => {
if (error) {
errorCallback && errorCallback(error);
} else {
successCallback && successCallback(result);
}
};
}
/**
* Gets the message of an error, if any. Otherwise it returns the empty string.
*/
public static getErrorMessage(e: Error | undefined): string {
return e && e.message || e && e.toString() || "";
}
/**
* Logs the error to the console and then forwards it to the provided ErrorCallback, if any.
* TODO: remove me
*/
public static invokeErrorCallback = (error: Error, errorCallback: ErrorCallback): void => {
CodePushUtil.logError(null, error);
errorCallback && errorCallback(error);
}
/**
* Logs the error to the console and then throws the error.
*/
public static throwError = (error: Error): void => {
CodePushUtil.logError(null, error);
throw error;
}
/**
* Logs a message using the CodePush tag.
*/
public static logMessage(msg: string): void {
console.log(CodePushUtil.TAG + " " + msg);
}
/**
* Logs an error message using the CodePush tag.
*/
public static logError(message: String, error?: Error): void {
const errorMessage = `${message || ""} ${CodePushUtil.getErrorMessage(error)}`;
const stackTrace = error && error.stack ? `. StackTrace: ${error.stack}` : "";
console.error(`${CodePushUtil.TAG} ${errorMessage}${stackTrace}`);
}
}