diff options
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/drive-sync.js')
| -rw-r--r-- | packages/meshbay-hub/src/meshbay_hub/static/drive-sync.js | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/drive-sync.js b/packages/meshbay-hub/src/meshbay_hub/static/drive-sync.js new file mode 100644 index 0000000..5ddf188 --- /dev/null +++ b/packages/meshbay-hub/src/meshbay_hub/static/drive-sync.js @@ -0,0 +1,29 @@ +// Files backup: the folders the person chose through the system's picker, +// sent into `<folder>/<account>-drive/<chosen folder>/…` of the destination +// every backup shares (sync-destination.js), once a day, on an unmetered +// network, like photos (docs/MESHBAY_DESIGN.md §9.13). +// +// The phone (platform.driveSync) lists the files, leaves out what the photo +// backup sends, keeps the ledger and hands each file over a range at a time; +// the running is the photo backup's own (createBackup). Additive by +// construction: a new version of a file goes beside the one sent, and nothing +// here deletes, renames or replaces anything on the node. + +import * as platform from './platform.js'; +import { t } from './i18n.js'; +import { createBackup } from './photo-sync.js'; +import { LASTING, failureText } from './phone-sync.js'; + +const drive = createBackup({ + name: 'files', + sync: platform.driveSync, + configured: (status) => Boolean(status.on) && (status.folders || []).length > 0, + progress: 'drivesync.notif_progress', + failures: LASTING, + say: (code) => t('phonesync.notice', { what: t('drivesync.heading'), reason: failureText(code) }), +}); + +export const startDriveSync = (context) => drive.start(context); +export const stopDriveSync = () => drive.stop(); +export const runDriveSync = (opts) => drive.run(opts); +export const subscribe = (fn) => drive.subscribe(fn); |