cordova-file-handler.ts 961 Bytes
import { FileHandler } from '../api/file-handler';

declare var Rx;

export class CordovaDownloader implements FileHandler {

    download(source:string, target:string) : Rx.Observable<number> {
        return Rx.Observable.create((subscriber:Rx.Subscriber<number>) => {

            if (!window['FileTransfer']) {
                subscriber.error("Cordova FileTransfer object undefined");
            }

            let fileTransfer = new window['FileTransfer']();

            fileTransfer.onprogress = (progress:ProgressEvent) => {
                subscriber.next(progress.loaded / progress.total);
            };

            fileTransfer.download(
                source ,
                target ,
                (entry:any) => {
                    subscriber.complete();
                } ,
                (error:any) => {
                    subscriber.error(error);
                },
                true
            );

        });        
    }

}