electron-file-handler.ts
1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { EventEmitter } from 'events';
import { FileHandler } from '../api/file-handler';
import { File } from '../api/file';
export class ElectronFileHandler extends EventEmitter implements FileHandler {
constructor (private ipcRenderer:any) {
super();
}
download(source:string, target:string) {
this.ipcRenderer.once('bsync-download-complete', () => {
this.ipcRenderer.removeAllListeners('bsync-download-progress');
this.ipcRenderer.removeAllListeners('bsync-download-error');
this.emit('complete');
});
this.ipcRenderer.on('bsync-download-progress', (progress:number) => {
this.emit('progress', progress);
});
this.ipcRenderer.once('bsync-download-error', (error:any) => {
this.ipcRenderer.removeAllListeners('bsync-download-progress');
this.ipcRenderer.removeAllListeners('bsync-download-complete');
this.emit('error', error);
});
this.ipcRenderer.send('bsync-download', {
source : source ,
target : target
});
return this;
}
cleanup(files:Array<File>) : Promise<void> {
return new Promise<void>((resolve, reject) => {
this.ipcRenderer.once('bsync-cleanup-complete', () => {
this.emit('cleanup-complete');
resolve();
});
this.ipcRenderer.send('bsync-cleanup', files);
});
}
}