feat(background-upload): add plugin (#3539)

* feat(background-upload): add plugin

* fix(background-upload): update usage
This commit is contained in:
MaximBelov 2020-11-19 09:40:22 +02:00 committed by GitHub
parent bb1064225d
commit 13f6da69ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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)
}
}