opt.: split webdav & other settings (#569)

This commit is contained in:
lollipopkit🏳️‍⚧️
2024-08-31 21:45:09 +08:00
committed by GitHub
parent 7f0dc656b8
commit edb49ead67
10 changed files with 122 additions and 405 deletions

40
lib/core/sync.dart Normal file
View File

@@ -0,0 +1,40 @@
import 'dart:io';
import 'package:fl_lib/fl_lib.dart';
import 'package:server_box/data/model/app/backup.dart';
import 'package:server_box/data/store/no_backup.dart';
const sync = Sync._();
final class Sync extends SyncCfg {
const Sync._() : super();
@override
Future<void> saveToFile() => Backup.backup();
@override
Future<Mergeable> fromFile(String path) async {
final content = await File(path).readAsString();
return Backup.fromJsonString(content);
}
@override
Future<RemoteStorage?> get remoteStorage async {
if (isMacOS || isIOS) await icloud.init('iCloud.tech.lolli.serverbox');
final settings = NoBackupStore.instance;
await webdav.init(WebdavInitArgs(
url: settings.webdavUrl.fetch(),
user: settings.webdavUser.fetch(),
pwd: settings.webdavPwd.fetch(),
prefix: 'serverbox/',
));
final icloudEnabled = settings.icloudSync.fetch();
if (icloudEnabled) return icloud;
final webdavEnabled = settings.webdavSync.fetch();
if (webdavEnabled) return webdav;
return null;
}
}