Skip to content

Commit a4cd2fa

Browse files
committed
chore: update logic of webdav
1 parent d21790c commit a4cd2fa

File tree

2 files changed

+51
-27
lines changed

2 files changed

+51
-27
lines changed

simple_live_app/lib/modules/sync/remote_sync/webdav/remote_sync_webdav_controller.dart

Lines changed: 38 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import 'package:simple_live_app/models/db/history.dart';
2222
import 'package:simple_live_app/requests/webdav_client.dart';
2323
import 'package:simple_live_app/services/bilibili_account_service.dart';
2424
import 'package:simple_live_app/services/db_service.dart';
25+
import 'package:simple_live_app/services/douyin_account_service.dart';
2526
import 'package:simple_live_app/services/local_storage_service.dart';
2627
import 'package:simple_live_app/services/migration_service.dart';
2728

@@ -32,7 +33,8 @@ class RemoteSyncWebDAVController extends BaseController {
3233
var isSyncFollows = true.obs;
3334
var isSyncHistories = true.obs;
3435
var isSyncBlockWord = true.obs;
35-
var isSyncBilibiliAccount = true.obs;
36+
var isSyncAccount = true.obs;
37+
var isSyncSetting = true.obs;
3638

3739
late DAVClient davClient;
3840
var user = "--".obs;
@@ -42,7 +44,7 @@ class RemoteSyncWebDAVController extends BaseController {
4244
final _userFollowJsonName = 'SimpleLive_follows.json';
4345
final _userHistoriesJsonName = 'SimpleLive_histories.json';
4446
final _userBlockedWordJsonName = 'SimpleLive_blocked_word.json';
45-
final _userBilibiliAccountJsonName = 'SimpleLive_bilibili_account.json';
47+
final _userAccountJsonName = 'SimpleLive_bilibili_account.json';
4648
final _userTagsJsonName = 'SimpleLive_Tags.json';
4749
final _userSettingsJsonName = 'SimpleLive_Settings.json';
4850

@@ -144,7 +146,7 @@ class RemoteSyncWebDAVController extends BaseController {
144146
var result = await davClient.backup(Uint8List.fromList(value));
145147
if (result) {
146148
SmartDialog.showToast("上传成功");
147-
DateTime uploadTime =DateTime.now();
149+
DateTime uploadTime = DateTime.now();
148150
lastUploadTime.value = Utils.parseTime(uploadTime);
149151
LocalStorageService.instance.setValue(LocalStorageService.kWebDAVLastUploadTime, uploadTime.millisecondsSinceEpoch);
150152
} else {
@@ -201,18 +203,23 @@ class RemoteSyncWebDAVController extends BaseController {
201203
.writeAsString(jsonEncode(dataShieldListMap));
202204

203205
// bilibili_account
204-
var userBiliAccountCookieMap = {
205-
'data': {'cookie': BiliBiliAccountService.instance.cookie}
206+
var userAccountCookieMap = {
207+
'data': {
208+
'cookie': BiliBiliAccountService.instance.cookie,
209+
'douyin_cookie': DouyinAccountService.instance.cookie
210+
}
206211
};
207-
final bilibiliAccountJsonFile =
208-
File(join(profile.path, _userBilibiliAccountJsonName));
209-
await bilibiliAccountJsonFile
210-
.writeAsString(jsonEncode(userBiliAccountCookieMap));
212+
final accountJsonFile = File(join(profile.path, _userAccountJsonName));
213+
await accountJsonFile.writeAsString(jsonEncode(userAccountCookieMap));
211214
await userTagsJsonFile.writeAsString(jsonEncode(dataTagsMap));
212-
// 同步所有设置
213-
var settingList = LocalStorageService.instance.settingsBox.toMap();
215+
// 根据需要同步部分设置,其中 HiveDbVer为必须项
214216
var dataSettingListMap = {
215-
'data': settingList
217+
'data': {
218+
LocalStorageService.kHiveDbVer: LocalStorageService.instance
219+
.getValue(LocalStorageService.kHiveDbVer, 10708),
220+
LocalStorageService.kWebDAVLastUploadTime:
221+
DateTime.now().millisecondsSinceEpoch,
222+
}
216223
};
217224
final settingJsonFile = File(join(profile.path, _userSettingsJsonName));
218225
await settingJsonFile.writeAsString(jsonEncode(dataSettingListMap));
@@ -244,7 +251,7 @@ class RemoteSyncWebDAVController extends BaseController {
244251
MigrationService.migrateDataByVersion();
245252
SmartDialog.dismiss();
246253
SmartDialog.showToast('同步完成');
247-
DateTime recoverTime =DateTime.now();
254+
DateTime recoverTime = DateTime.now();
248255
lastRecoverTime.value = Utils.parseTime(recoverTime);
249256
LocalStorageService.instance.setValue(LocalStorageService.kWebDAVLastRecoverTime, recoverTime.millisecondsSinceEpoch);
250257
}
@@ -288,20 +295,23 @@ class RemoteSyncWebDAVController extends BaseController {
288295
} catch (e) {
289296
Log.e('同步用户屏蔽词失败:$e', StackTrace.current);
290297
}
291-
} else if (file.name == _userBilibiliAccountJsonName &&
292-
isSyncBilibiliAccount.value) {
298+
} else if (file.name == _userAccountJsonName && isSyncAccount.value) {
293299
try {
294-
var cookie = jsonData['cookie'];
295-
BiliBiliAccountService.instance.setCookie(cookie);
300+
var biliCookie = jsonData['cookie'];
301+
BiliBiliAccountService.instance.setCookie(biliCookie);
296302
BiliBiliAccountService.instance.loadUserInfo();
297-
Log.i('已同步哔哩哔哩账号');
303+
var douyinCookie = jsonData['douyin_cookie'];
304+
DouyinAccountService.instance.setCookie(douyinCookie);
305+
DouyinAccountService.instance.loadUserInfo();
306+
Log.i('已同步用户平台账号');
298307
} catch (e) {
299-
Log.e('同步哔哩哔哩账号失败:$e',StackTrace.current);
308+
Log.e('同步用户平台账号失败:$e', StackTrace.current);
300309
}
301-
} else if (file.name == _userSettingsJsonName) {
310+
} else if (file.name == _userSettingsJsonName && isSyncSetting.value) {
302311
try{
303-
await LocalStorageService.instance.settingsBox.clear();
304-
LocalStorageService.instance.settingsBox.putAll(jsonData);
312+
jsonData.forEach((key, value) {
313+
LocalStorageService.instance.setValue(key, value);
314+
},);
305315
Log.i('已同步用户设置');
306316
} catch (e) {
307317
Log.e("同步用户设置失败:$e", StackTrace.current);
@@ -349,7 +359,11 @@ class RemoteSyncWebDAVController extends BaseController {
349359
isSyncBlockWord.value = !isSyncBlockWord.value;
350360
}
351361

352-
void changeIsSyncBilibiliAccount() {
353-
isSyncBilibiliAccount.value = !isSyncBilibiliAccount.value;
362+
void changeIsSyncAccount() {
363+
isSyncAccount.value = !isSyncAccount.value;
364+
}
365+
366+
void changeIsSyncSetting() {
367+
isSyncSetting.value = !isSyncSetting.value;
354368
}
355369
}

simple_live_app/lib/modules/sync/remote_sync/webdav/remote_sync_webdav_page.dart

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,23 @@ class RemoteSyncWebDAVPage extends GetView<RemoteSyncWebDAVController> {
124124
Obx(
125125
() => CheckboxListTile(
126126
secondary: const Icon(Remix.account_circle_line),
127-
title: const Text("同步哔哩哔哩账号"),
128-
value: controller.isSyncBilibiliAccount.value,
127+
title: const Text("同步用户平台账号"),
128+
value: controller.isSyncAccount.value,
129129
controlAffinity: ListTileControlAffinity.trailing,
130-
onChanged: (value) => controller.changeIsSyncBilibiliAccount(),
130+
onChanged: (value) => controller.changeIsSyncAccount(),
131131
),
132132
),
133133
AppStyle.divider,
134+
Obx(
135+
() => CheckboxListTile(
136+
secondary: const Icon(Remix.user_settings_line),
137+
title: const Text("同步用户设置"),
138+
value: controller.isSyncSetting.value,
139+
controlAffinity: ListTileControlAffinity.trailing,
140+
onChanged: (value) => controller.changeIsSyncSetting(),
141+
),
142+
),
143+
//todo: 启动应用时自动同步数据
134144
],
135145
),
136146
);

0 commit comments

Comments
 (0)