UNPKG

react-native-flix-codepush

Version:

A modern CodePush implementation for React Native applications

220 lines (197 loc) 5.42 kB
/** * CodePush update status enum */ export enum CodePushUpdateState { RUNNING = 'RUNNING', PENDING = 'PENDING', LATEST = 'LATEST', } /** * CodePush installation status enum */ export enum CodePushInstallMode { IMMEDIATE = 'IMMEDIATE', ON_NEXT_RESTART = 'ON_NEXT_RESTART', ON_NEXT_RESUME = 'ON_NEXT_RESUME', ON_NEXT_SUSPEND = 'ON_NEXT_SUSPEND', } /** * CodePush check frequency enum */ export enum CodePushCheckFrequency { MANUAL = 0, ON_APP_START = 1, ON_APP_RESUME = 2, } /** * CodePush deployment status enum */ export enum CodePushDeploymentStatus { SUCCEEDED = 'DeploymentSucceeded', FAILED = 'DeploymentFailed', } /** * CodePush update info interface */ export interface CodePushUpdateInfo { isAvailable: boolean; appVersion?: string; description?: string; isMandatory?: boolean; packageHash?: string; label?: string; packageSize?: number; downloadURL?: string; } /** * CodePush package interface */ export interface CodePushPackage { deploymentKey: string; description: string; label: string; appVersion: string; isMandatory: boolean; packageHash: string; packageSize: number; localPath: string; } /** * CodePush remote package interface */ export interface CodePushRemotePackage extends CodePushPackage { downloadUrl: string; } /** * CodePush local package interface */ export interface CodePushLocalPackage extends CodePushPackage { isFirstRun: boolean; previousLabelOrAppVersion?: string; isPending: boolean; } /** * CodePush configuration interface */ export interface CodePushConfig { deploymentKey: string; serverUrl: string; appVersion: string; checkFrequency?: CodePushCheckFrequency; installMode?: CodePushInstallMode; mandatoryInstallMode?: CodePushInstallMode; minimumBackgroundDuration?: number; } /** * CodePush sync options interface */ export interface CodePushSyncOptions { deploymentKey?: string; installMode?: CodePushInstallMode; mandatoryInstallMode?: CodePushInstallMode; minimumBackgroundDuration?: number; updateDialog?: UpdateDialogOptions | boolean; ignoreFailedUpdates?: boolean; } /** * Update dialog options interface */ export interface UpdateDialogOptions { appendReleaseDescription?: boolean; descriptionPrefix?: string; mandatoryContinueButtonLabel?: string; mandatoryUpdateMessage?: string; optionalIgnoreButtonLabel?: string; optionalInstallButtonLabel?: string; optionalUpdateMessage?: string; title?: string; } /** * CodePush status report interface */ export interface CodePushStatusReport { deploymentKey: string; label: string; appVersion: string; clientUniqueId: string; previousLabelOrAppVersion?: string; status: CodePushDeploymentStatus; } /** * Native module interface */ export interface FlixCodePushNativeModule { // Update management getUpdateMetadata(): Promise<CodePushLocalPackage | null>; installUpdate(packageHash: string, installMode: CodePushInstallMode): Promise<void>; restartApp(onlyIfUpdateIsPending?: boolean): Promise<void>; // Package management downloadUpdate(updatePackage: CodePushRemotePackage): Promise<CodePushLocalPackage>; processPackage(packageData: ArrayBuffer, packageHash: string, updatePackage: CodePushRemotePackage): Promise<CodePushLocalPackage>; getConfiguration(): Promise<CodePushConfig>; // Device info getAppVersion(): Promise<string>; getDeviceId(): Promise<string>; // Storage operations saveUpdateMetadata(updatePackage: CodePushLocalPackage): Promise<void>; clearUpdates(): Promise<void>; // New Architecture support getConstants(): { isNewArchitectureEnabled: boolean; isHermesEnabled: boolean; }; } /** * CodePush hook return type */ export interface UseCodePushResult { checkForUpdate: (deploymentKey?: string) => Promise<CodePushRemotePackage | null>; sync: (options?: CodePushSyncOptions) => Promise<CodePushSyncStatus>; getCurrentPackage: () => Promise<CodePushLocalPackage | null>; restartApp: () => Promise<void>; clearUpdates: () => Promise<void>; getUpdateMetadata: () => Promise<CodePushLocalPackage | null>; downloadUpdate: (remotePackage: CodePushRemotePackage) => Promise<CodePushLocalPackage>; installUpdate: (packageHash: string, installMode?: CodePushInstallMode) => Promise<void>; syncStatus: CodePushSyncStatus; currentPackage: CodePushLocalPackage | null; pendingUpdate: CodePushRemotePackage | null; isCheckingForUpdate: boolean; isDownloading: boolean; isInstalling: boolean; downloadProgress: { receivedBytes: number; totalBytes: number }; cancelSync: () => void; } /** * CodePush sync status enum */ export enum CodePushSyncStatus { UP_TO_DATE = 0, UPDATE_INSTALLED = 1, UPDATE_IGNORED = 2, UNKNOWN_ERROR = 3, SYNC_IN_PROGRESS = 4, CHECKING_FOR_UPDATE = 5, AWAITING_USER_ACTION = 6, DOWNLOADING_PACKAGE = 7, INSTALLING_UPDATE = 8, } /** * CodePush error interface */ export interface CodePushError extends Error { code: string; domain: string; } /** * Download progress callback */ export type DownloadProgressCallback = (progress: { receivedBytes: number; totalBytes: number }) => void; /** * Sync status change callback */ export type SyncStatusChangedCallback = (status: CodePushSyncStatus) => void; /** * Binary version mismatch callback */ export type BinaryVersionMismatchCallback = (update: CodePushRemotePackage) => boolean;