@@ -22,6 +22,7 @@ import 'package:simple_live_app/models/db/history.dart';
2222import 'package:simple_live_app/requests/webdav_client.dart' ;
2323import 'package:simple_live_app/services/bilibili_account_service.dart' ;
2424import 'package:simple_live_app/services/db_service.dart' ;
25+ import 'package:simple_live_app/services/douyin_account_service.dart' ;
2526import 'package:simple_live_app/services/local_storage_service.dart' ;
2627import '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}
0 commit comments