-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(background-upload): add plugin (#3539)
* feat(background-upload): add plugin * fix(background-upload): update usage
- Loading branch information
1 parent
bb10642
commit 13f6da6
Showing
1 changed file
with
112 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,112 @@ | ||
import { Injectable } from '@angular/core'; | ||
import { Plugin, CordovaInstance, IonicNativePlugin, } from '@ionic-native/core'; | ||
|
||
declare const window: any; | ||
|
||
export enum UploadState { | ||
UPLOADED = 'UPLOADED', | ||
FAILED = 'FAILED', | ||
UPLOADING = 'UPLOADING', | ||
} | ||
|
||
export type UploadStateType = keyof typeof UploadState; | ||
|
||
export interface UploadEvent{ | ||
id?: string, // id of the upload | ||
state?: UploadStateType, // state of the upload (either UPLOADING, UPLOADED or FAILED) | ||
statusCode?: number, // response code returned by server after upload is completed | ||
serverResponse?: any, // server response received after upload is completed | ||
error?: any, // error message in case of failure | ||
errorCode?: number, // error code for any exception encountered | ||
progress?: any, // progress for ongoing upload | ||
eventId?: string // id of the event | ||
} | ||
|
||
export interface FTMPayloadOptions { | ||
id: string, | ||
filePath: string, | ||
fileKey?: string, | ||
serverUrl: string, | ||
notificationTitle?: string, | ||
headers?: { | ||
[name: string]: string | ||
}, | ||
parameters?: { | ||
[name: string]: string | ||
} | ||
[prop: string]: any; | ||
} | ||
|
||
export interface FTMOptions { | ||
callBack: (event: UploadEvent) => any; | ||
config?: { | ||
parallelUploadsLimit?: number; | ||
} | ||
} | ||
|
||
export class FileTransferManager { | ||
private _objectInstance: any; | ||
|
||
constructor(options: FTMOptions ) { | ||
this._objectInstance = window.FileTransferManager.init(options.config, options.callBack); | ||
} | ||
|
||
@CordovaInstance() | ||
startUpload(payload: FTMPayloadOptions): void { | ||
return; | ||
} | ||
|
||
@CordovaInstance() | ||
removeUpload(id: any): Promise<any> { | ||
return; | ||
} | ||
|
||
@CordovaInstance() | ||
acknowledgeEvent(id: string): Promise<any> { | ||
return; | ||
} | ||
|
||
@CordovaInstance() | ||
destroy(): Promise<any> { | ||
return; | ||
} | ||
|
||
} | ||
|
||
/** | ||
* @name BackgroundUpload | ||
* @description | ||
* This plugin does something | ||
* | ||
* @usage | ||
* ```typescript | ||
* import { BackgroundUpload } from '@ionic-native/background-upload/ngx'; | ||
* | ||
* | ||
* constructor(private backgroundUpload: BackgroundUpload) { } | ||
* | ||
* ... | ||
* | ||
* | ||
* this.backgroundUpload.init({}) | ||
* .then((res: any) => console.log(res)) | ||
* .catch((error: any) => console.error(error)); | ||
* | ||
* ``` | ||
*/ | ||
@Plugin({ | ||
pluginName: 'BackgroundUpload', | ||
plugin: 'cordova-plugin-background-upload', | ||
pluginRef: 'FileTransferManager', | ||
repo: 'https://github.com/spoonconsulting/cordova-plugin-background-upload', | ||
install: 'ionic cordova plugin add cordova-plugin-background-upload', | ||
platforms: ['Android', 'iOS'], | ||
}) | ||
@Injectable() | ||
export class BackgroundUpload extends IonicNativePlugin { | ||
FileTransferManager = FileTransferManager; | ||
|
||
init(options: FTMOptions): FileTransferManager { | ||
return new FileTransferManager(options) | ||
} | ||
} |