2023-10-09 09:32:07 +08:00
|
|
|
|
// ignore_for_file: use_build_context_synchronously
|
|
|
|
|
|
2023-11-11 01:18:30 +08:00
|
|
|
|
import 'dart:async';
|
2023-11-06 22:23:06 +08:00
|
|
|
|
|
2023-10-09 09:32:07 +08:00
|
|
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
2023-11-11 01:18:30 +08:00
|
|
|
|
import 'package:hexcolor/hexcolor.dart';
|
2023-10-09 09:32:07 +08:00
|
|
|
|
|
|
|
|
|
import 'base/ui_model.dart';
|
|
|
|
|
import 'common/conf.dart';
|
|
|
|
|
import 'ui/settings/upgrade_dialog_ui.dart';
|
|
|
|
|
import 'ui/settings/upgrade_dialog_ui_model.dart';
|
|
|
|
|
|
|
|
|
|
final globalUIModel = AppGlobalUIModel();
|
|
|
|
|
final globalUIModelProvider = ChangeNotifierProvider((ref) => globalUIModel);
|
|
|
|
|
|
|
|
|
|
class AppGlobalUIModel extends BaseUIModel {
|
2023-11-11 01:18:30 +08:00
|
|
|
|
Timer? activityThemeColorTimer;
|
2023-11-10 22:56:55 +08:00
|
|
|
|
|
2023-11-11 01:18:30 +08:00
|
|
|
|
Future<bool> doCheckUpdate(BuildContext context, {bool init = true}) async {
|
2023-12-09 12:49:08 +08:00
|
|
|
|
dynamic checkUpdateError;
|
2023-10-09 09:32:07 +08:00
|
|
|
|
if (!init) {
|
|
|
|
|
try {
|
2023-11-11 01:18:30 +08:00
|
|
|
|
await AppConf.checkUpdate();
|
2023-12-09 12:49:08 +08:00
|
|
|
|
} catch (e) {
|
|
|
|
|
checkUpdateError = e;
|
|
|
|
|
}
|
2023-10-09 09:32:07 +08:00
|
|
|
|
}
|
|
|
|
|
await Future.delayed(const Duration(milliseconds: 100));
|
|
|
|
|
if (AppConf.networkVersionData == null) {
|
|
|
|
|
showToast(context,
|
2023-12-12 19:46:39 +08:00
|
|
|
|
"检查更新失败!请检查网络连接... \n进入离线模式.. \n\n请谨慎在离线模式中使用。\n请尝试更换无污染的DNS。 \n当前版本构建日期:${AppConf.appVersionDate}\n QQ群:940696487 \n错误信息:$checkUpdateError");
|
2023-10-09 09:32:07 +08:00
|
|
|
|
return false;
|
|
|
|
|
}
|
2023-11-11 01:41:06 +08:00
|
|
|
|
final lastVersion = AppConf.isMSE
|
|
|
|
|
? AppConf.networkVersionData?.mSELastVersionCode
|
|
|
|
|
: AppConf.networkVersionData?.lastVersionCode;
|
|
|
|
|
if ((lastVersion ?? 0) > AppConf.appVersionCode) {
|
2023-10-09 09:32:07 +08:00
|
|
|
|
// need update
|
|
|
|
|
final r = await showDialog(
|
|
|
|
|
dismissWithEsc: false,
|
|
|
|
|
context: context,
|
|
|
|
|
builder: (context) => BaseUIContainer(
|
|
|
|
|
uiCreate: () => UpgradeDialogUI(),
|
|
|
|
|
modelCreate: () => UpgradeDialogUIModel()));
|
|
|
|
|
if (r != true) {
|
|
|
|
|
showToast(context, "获取更新信息失败,请稍后重试。");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2023-11-06 22:23:06 +08:00
|
|
|
|
|
2023-11-11 01:18:30 +08:00
|
|
|
|
checkActivityThemeColor() {
|
|
|
|
|
if (activityThemeColorTimer != null) {
|
|
|
|
|
activityThemeColorTimer?.cancel();
|
|
|
|
|
activityThemeColorTimer = null;
|
|
|
|
|
}
|
|
|
|
|
if (AppConf.networkVersionData == null ||
|
|
|
|
|
AppConf.networkVersionData?.activityColors?.enable != true) return;
|
|
|
|
|
|
|
|
|
|
final startTime = AppConf.networkVersionData!.activityColors?.startTime;
|
|
|
|
|
final endTime = AppConf.networkVersionData!.activityColors?.endTime;
|
|
|
|
|
if (startTime == null || endTime == null) return;
|
|
|
|
|
final now = DateTime.now().millisecondsSinceEpoch;
|
|
|
|
|
|
|
|
|
|
dPrint("now == $now start == $startTime end == $endTime");
|
|
|
|
|
if (now < startTime) {
|
|
|
|
|
activityThemeColorTimer = Timer(
|
|
|
|
|
Duration(milliseconds: startTime - now), checkActivityThemeColor);
|
|
|
|
|
dPrint("start Timer ....");
|
|
|
|
|
} else if (now >= startTime && now <= endTime) {
|
|
|
|
|
dPrint("update Color ....");
|
|
|
|
|
// update Color
|
|
|
|
|
final colorCfg = AppConf.networkVersionData!.activityColors;
|
|
|
|
|
AppConf.colorBackground =
|
|
|
|
|
HexColor(colorCfg?.background ?? "#132431").withOpacity(.75);
|
|
|
|
|
AppConf.colorMenu =
|
|
|
|
|
HexColor(colorCfg?.menu ?? "#132431").withOpacity(.95);
|
|
|
|
|
AppConf.colorMica = HexColor(colorCfg?.mica ?? "#0A3142");
|
|
|
|
|
notifyListeners();
|
|
|
|
|
// wait for end
|
|
|
|
|
activityThemeColorTimer =
|
|
|
|
|
Timer(Duration(milliseconds: endTime - now), checkActivityThemeColor);
|
|
|
|
|
} else {
|
|
|
|
|
dPrint("reset Color ....");
|
|
|
|
|
AppConf.colorBackground = HexColor("#132431").withOpacity(.75);
|
|
|
|
|
AppConf.colorMenu = HexColor("#132431").withOpacity(.95);
|
|
|
|
|
AppConf.colorMica = HexColor("#0A3142");
|
|
|
|
|
notifyListeners();
|
|
|
|
|
}
|
|
|
|
|
notifyListeners();
|
|
|
|
|
}
|
2023-10-09 09:32:07 +08:00
|
|
|
|
}
|