Skip to content

Commit

Permalink
feat(background-upload): add plugin (#3539)
Browse files Browse the repository at this point in the history
* feat(background-upload): add plugin

* fix(background-upload): update usage
  • Loading branch information
MaximBelov authored Nov 19, 2020
1 parent bb10642 commit 13f6da6
Showing 1 changed file with 112 additions and 0 deletions.
112 changes: 112 additions & 0 deletions src/@ionic-native/plugins/background-upload/index.ts
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)
}
}

0 comments on commit 13f6da6

Please sign in to comment.