electron-file-handler.ts
1.19 KB
import { Observable, Subscriber } from 'rxjs';
import { FileHandler } from '../api/file-handler';
export class ElectronFileHandler implements FileHandler {
constructor (private ipcRenderer:any) {
}
download(source:string, target:string) : Observable<number> {
return Observable.create((subscriber:Subscriber<number>) => {
this.ipcRenderer.once('bsync-download-complete', () => {
this.ipcRenderer.removeAllListeners('bsync-download-progress');
this.ipcRenderer.removeAllListeners('bsync-download-error');
subscriber.complete();
});
this.ipcRenderer.on('bsync-download-progress', (progress:number) => {
subscriber.next(progress);
});
this.ipcRenderer.once('bsync-download-error', (error:any) => {
this.ipcRenderer.removeAllListeners('bsync-download-progress');
this.ipcRenderer.removeAllListeners('bsync-download-complete');
subscriber.error(error);
});
this.ipcRenderer.send('bsync-download', {
source : source ,
target : target
});
});
}
}