Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(in-app-update): add plugin (#3714)
- 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.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} | ||
} |