@fairdatasociety/fairdrive-opfs
Version:
Fairdrive OPFS - integrate data sources from Web 2.0 or Web 3.0
36 lines (35 loc) • 1.07 kB
JavaScript
import { Subject } from 'rxjs';
/**
* FileSync is a class that handles file transfers between mounts and providers.
* It is used by the FdpConnectProvider to handle file transfers.
*/
export class FileSync {
/**
* Creates a new FileSync instance.
* @param transferToProvider ProviderDriver to transfer files to
* @returns FileSync instance
*/
constructor(transferToProvider) {
this.transferToProvider = transferToProvider;
this.onStart = new Subject();
this.onComplete = new Subject();
this.onError = new Subject();
}
/**
* Moves a file from one mount to another
* @param file File to transfer
* @param mount Destination mount
* @param onProgress
*/
async transfer(file, mount) {
let res = {};
try {
this.onStart.next({ file, mount });
res = await this.transferToProvider.upload(file, mount, {});
}
catch (e) {
this.onError.next(e);
}
this.onComplete.next({ result: res });
}
}