feat(in-app-update): add plugin (#3714)

This commit is contained in:
Nandan B N 2021-08-21 00:25:00 +05:30 committed by GitHub
parent 8ebdc6e563
commit eb8d2522b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -0,0 +1,70 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs';
enum UpdateType {
FLEXIBLE, IMMEDIATE
}
enum InstallStatus {
CANCELED, DOWNLOADED, DOWNLOADING, FAILED, INSTALLED, INSTALLING, PENDING, UNKNOWN
}
enum UpdateAvailability {
DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS, UNKNOWN, UPDATE_AVAILABLE, UPDATE_NOT_AVAILABLE
}
class AppUpdateInfo {
updateType: UpdateType;
installStatus: InstallStatus;
availableVersionCode: Number;
bytesDownloaded: Number;
totalBytesToDownload: Number;
clientVersionStalenessDays: Number;
packageName: String;
updateAvailability: UpdateAvailability;
installErrorCode: String;
}
/**
* @name In App Update
* @description
* This pluging enabels In app update For cordova.
*/
@Plugin({
pluginName: 'InAppUpdate',
plugin: 'cordova-in-app-update', // npm package name, example: cordova-plugin-camera
pluginRef: 'window.plugins.InAppUpdate', // the variable reference to call the plugin, example: navigator.geolocation
repo: 'https://github.com/itsLucario/cordova-app-update-plugin', // the github repository URL for the plugin
platforms: ['Android'] // Array of platforms supported, example: ['Android', 'iOS']
})
@Injectable()
export class InAppUpdate extends IonicNativePlugin {
/**
* If you want the user to be prompted about new version information before initiating the update, you can use `check` to retrive the new app version information.
* @return {Promise<AppUpdateInfo>} Returns a promise that resolves with new app version update details
*/
@Cordova()
check(): Promise<AppUpdateInfo> {
return;
}
/**
* Initiate Update Flow with "FLEXIBLE" | "IMMEDIATE" updateType
* @return {Observable<AppUpdateInfo>} Returns a Observable can be subscribed to get update install state
*/
@Cordova({ observable: true })
update(config: { updateType: "FLEXIBLE" | "IMMEDIATE" }): Observable<AppUpdateInfo> {
return;
}
/**
* Flexible updates provide background download. Once flexible update completes the download in background, completion of upgrade can be initiated by calling `completeFlexibleUpdate`.
* @return Returns empty response, fire and forget
*/
@Cordova()
completeFlexibleUpdate(): Promise<any> {
return;
}
}