云同步标签部分

This commit is contained in:
DelLevin-Home
2026-05-28 14:57:19 +08:00
parent e2e0b11d3d
commit 3ac06314c2
5 changed files with 88 additions and 16 deletions

View File

@@ -9,6 +9,7 @@ import 'utils/theme/app_theme.dart';
import 'utils/app_router.dart';
import 'utils/user_prefs.dart';
import 'utils/sync/auto_backup_service.dart';
import 'utils/sync/server_sync_service.dart';
import 'utils/usage_stats_service.dart';
import 'providers/app_provider.dart';
import 'package:flutter/widget_previews.dart';
@@ -18,7 +19,7 @@ void main() async {
await UserPrefs.init();
final appProvider = AppProvider();
runApp(MyApp(appProvider: appProvider));
unawaited(appProvider.initDatabase().then((_) => appProvider.initMainTabIndex()));
unawaited(_validateSyncOnStartup().then((_) => appProvider.initDatabase().then((_) => appProvider.initMainTabIndex())));
unawaited(_initAutoBackup());
unawaited(_initUsageStats());
}
@@ -42,6 +43,34 @@ Future<void> _initUsageStats() async {
}
}
/// 启动时校验同步激活码:有效则继续,过期/失效则下载数据并关闭同步
Future<void> _validateSyncOnStartup() async {
try {
final prefs = UserPrefs();
if (!prefs.syncEnabled || prefs.syncServerUrl.isEmpty || prefs.syncActivationCode.isEmpty) {
return; // 未开启同步,跳过
}
debugPrint('[Startup] 校验同步激活码...');
final result = await ServerSyncService.instance.checkActivation();
if (result != null && result['valid'] == true) {
// 激活码有效,更新有效期信息
await prefs.setSyncExpiresAt(result['expires_at'] ?? '');
await prefs.setSyncIsPermanent(result['is_permanent'] == true);
debugPrint('[Startup] 激活码有效,继续同步模式');
} else {
// 激活码无效/过期,下载服务端数据并关闭同步
debugPrint('[Startup] 激活码失效: ${result?['error'] ?? '未知'},关闭同步并下载数据');
await ServerSyncService.instance.downloadToLocal();
await prefs.setSyncEnabled(false);
debugPrint('[Startup] 已切换到本地模式');
}
} catch (e) {
debugPrint('[Startup] 激活码校验异常: $e');
}
}
class MyApp extends StatefulWidget {
final AppProvider appProvider;
const MyApp({super.key, required this.appProvider});