Skip to content

Commit

Permalink
feat(in-app-update): add plugin (#3714)
Browse files Browse the repository at this point in the history
  • Loading branch information
Nandan B N committed Aug 20, 2021
1 parent 8ebdc6e commit eb8d252
Showing 1 changed file with 70 additions and 0 deletions.
70 changes: 70 additions & 0 deletions src/@ionic-native/plugins/in-app-update/index.ts
@@ -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;
}
}

0 comments on commit eb8d252

Please sign in to comment.