diff --git a/lib/app.dart b/lib/app.dart index 9154e8b..1707bdc 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -43,6 +43,7 @@ class AppGlobalState with _$AppGlobalState { AppVersionData? networkVersionData, @Default(ThemeConf()) ThemeConf themeConf, Locale? appLocale, + Box? appConfBox, }) = _AppGlobalState; } @@ -129,6 +130,7 @@ class AppGlobalModel extends _$AppGlobalModel { try { Hive.init("$applicationSupportDir/db"); final box = await Hive.openBox("app_conf"); + state = state.copyWith(appConfBox: box); if (box.get("install_id", defaultValue: "") == "") { await box.put("install_id", const Uuid().v4()); AnalyticsApi.touch("firstLaunch"); @@ -153,7 +155,7 @@ class AppGlobalModel extends _$AppGlobalModel { try { await SystemHelper.initPowershellPath(); dPrint("---- Powershell init -----"); - }catch (e){ + } catch (e) { dPrint("powershell init failed : $e"); } diff --git a/lib/app.freezed.dart b/lib/app.freezed.dart index 0239fe6..1cc18c4 100644 --- a/lib/app.freezed.dart +++ b/lib/app.freezed.dart @@ -22,6 +22,7 @@ mixin _$AppGlobalState { AppVersionData? get networkVersionData => throw _privateConstructorUsedError; ThemeConf get themeConf => throw _privateConstructorUsedError; Locale? get appLocale => throw _privateConstructorUsedError; + Box? get appConfBox => throw _privateConstructorUsedError; @JsonKey(ignore: true) $AppGlobalStateCopyWith get copyWith => @@ -40,7 +41,8 @@ abstract class $AppGlobalStateCopyWith<$Res> { String? applicationBinaryModuleDir, AppVersionData? networkVersionData, ThemeConf themeConf, - Locale? appLocale}); + Locale? appLocale, + Box? appConfBox}); $ThemeConfCopyWith<$Res> get themeConf; } @@ -64,6 +66,7 @@ class _$AppGlobalStateCopyWithImpl<$Res, $Val extends AppGlobalState> Object? networkVersionData = freezed, Object? themeConf = null, Object? appLocale = freezed, + Object? appConfBox = freezed, }) { return _then(_value.copyWith( deviceUUID: freezed == deviceUUID @@ -90,6 +93,10 @@ class _$AppGlobalStateCopyWithImpl<$Res, $Val extends AppGlobalState> ? _value.appLocale : appLocale // ignore: cast_nullable_to_non_nullable as Locale?, + appConfBox: freezed == appConfBox + ? _value.appConfBox + : appConfBox // ignore: cast_nullable_to_non_nullable + as Box?, ) as $Val); } @@ -116,7 +123,8 @@ abstract class _$$AppGlobalStateImplCopyWith<$Res> String? applicationBinaryModuleDir, AppVersionData? networkVersionData, ThemeConf themeConf, - Locale? appLocale}); + Locale? appLocale, + Box? appConfBox}); @override $ThemeConfCopyWith<$Res> get themeConf; @@ -139,6 +147,7 @@ class __$$AppGlobalStateImplCopyWithImpl<$Res> Object? networkVersionData = freezed, Object? themeConf = null, Object? appLocale = freezed, + Object? appConfBox = freezed, }) { return _then(_$AppGlobalStateImpl( deviceUUID: freezed == deviceUUID @@ -165,6 +174,10 @@ class __$$AppGlobalStateImplCopyWithImpl<$Res> ? _value.appLocale : appLocale // ignore: cast_nullable_to_non_nullable as Locale?, + appConfBox: freezed == appConfBox + ? _value.appConfBox + : appConfBox // ignore: cast_nullable_to_non_nullable + as Box?, )); } } @@ -178,7 +191,8 @@ class _$AppGlobalStateImpl implements _AppGlobalState { this.applicationBinaryModuleDir, this.networkVersionData, this.themeConf = const ThemeConf(), - this.appLocale}); + this.appLocale, + this.appConfBox}); @override final String? deviceUUID; @@ -193,10 +207,12 @@ class _$AppGlobalStateImpl implements _AppGlobalState { final ThemeConf themeConf; @override final Locale? appLocale; + @override + final Box? appConfBox; @override String toString() { - return 'AppGlobalState(deviceUUID: $deviceUUID, applicationSupportDir: $applicationSupportDir, applicationBinaryModuleDir: $applicationBinaryModuleDir, networkVersionData: $networkVersionData, themeConf: $themeConf, appLocale: $appLocale)'; + return 'AppGlobalState(deviceUUID: $deviceUUID, applicationSupportDir: $applicationSupportDir, applicationBinaryModuleDir: $applicationBinaryModuleDir, networkVersionData: $networkVersionData, themeConf: $themeConf, appLocale: $appLocale, appConfBox: $appConfBox)'; } @override @@ -217,7 +233,9 @@ class _$AppGlobalStateImpl implements _AppGlobalState { (identical(other.themeConf, themeConf) || other.themeConf == themeConf) && (identical(other.appLocale, appLocale) || - other.appLocale == appLocale)); + other.appLocale == appLocale) && + (identical(other.appConfBox, appConfBox) || + other.appConfBox == appConfBox)); } @override @@ -228,7 +246,8 @@ class _$AppGlobalStateImpl implements _AppGlobalState { applicationBinaryModuleDir, networkVersionData, themeConf, - appLocale); + appLocale, + appConfBox); @JsonKey(ignore: true) @override @@ -245,7 +264,8 @@ abstract class _AppGlobalState implements AppGlobalState { final String? applicationBinaryModuleDir, final AppVersionData? networkVersionData, final ThemeConf themeConf, - final Locale? appLocale}) = _$AppGlobalStateImpl; + final Locale? appLocale, + final Box? appConfBox}) = _$AppGlobalStateImpl; @override String? get deviceUUID; @@ -260,6 +280,8 @@ abstract class _AppGlobalState implements AppGlobalState { @override Locale? get appLocale; @override + Box? get appConfBox; + @override @JsonKey(ignore: true) _$$AppGlobalStateImplCopyWith<_$AppGlobalStateImpl> get copyWith => throw _privateConstructorUsedError; diff --git a/lib/app.g.dart b/lib/app.g.dart index cdc57ee..9fdfa42 100644 --- a/lib/app.g.dart +++ b/lib/app.g.dart @@ -20,7 +20,7 @@ final routerProvider = AutoDisposeProvider.internal( ); typedef RouterRef = AutoDisposeProviderRef; -String _$appGlobalModelHash() => r'9c114910aed546bfd469c8bbfa50cdd4a5be5028'; +String _$appGlobalModelHash() => r'ae7f6704a80297ac3e0f70412c676a1829046831'; /// See also [AppGlobalModel]. @ProviderFor(AppGlobalModel) diff --git a/lib/common/utils/provider.dart b/lib/common/utils/provider.dart index e1c5c2c..7dfcc18 100644 --- a/lib/common/utils/provider.dart +++ b/lib/common/utils/provider.dart @@ -1,4 +1,5 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:hive/hive.dart'; import 'package:starcitizen_doctor/app.dart'; extension ProviderExtension on AutoDisposeNotifier { @@ -6,4 +7,6 @@ extension ProviderExtension on AutoDisposeNotifier { ref.read(appGlobalModelProvider.notifier); AppGlobalState get appGlobalState => ref.read(appGlobalModelProvider); + + Box? get appConfBox => appGlobalState.appConfBox; } diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index 1b1c25a..b720beb 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -151,7 +151,7 @@ class MessageLookup extends MessageLookupByLibrary { final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { "about_action_email": - MessageLookupByLibrary.simpleMessage("Email: scbox@xkeyc.com"), + MessageLookupByLibrary.simpleMessage("Email: xkeyc@qq.com"), "about_action_open_source": MessageLookupByLibrary.simpleMessage("Open source"), "about_action_qq_group": @@ -215,6 +215,10 @@ class MessageLookup extends MessageLookupByLibrary { "It is detection availability, which may take a little time ..."), "app_splash_checking_for_updates": MessageLookupByLibrary.simpleMessage("Inspection and update ..."), + "app_splash_dialog_u_a_p_p": MessageLookupByLibrary.simpleMessage( + "User Agreement and Privacy Policy"), + "app_splash_dialog_u_a_p_p_content": MessageLookupByLibrary.simpleMessage( + "Thank you for choosing the SC Chinese box. We are committed to providing you with a safe, convenient and reliable experience. Before you start using your application, please read and agree to the following:\n\n 1. This application is an open source software under the GNU General Public License V3.0 protocol. You can use, modify, and distribute this software freely under the premise of obeying the agreement. Our source code is located at: [github.com/starCitizentoolBox/app] (https://github.com/starCitizantoolBox/app).\n2. The copyright of the Internet content in this application (including but not limited to localized documents, tool websites, news, videos, etc.) is created by its authors and is not part of GPL. Please use it under the corresponding authorization agreement.\n3. The official free release channels for this application are: [Microsoft App Store] (https://apps.microsoft.com/detail/9NF3SWFWNKL1) and [Official Website of Star Citizen Chinese] ), If you get from other third parties, please identify it carefully to avoid suffering from property losses.\n4. This application will send anonymous statistics to our server during use to improve software quality, and we will not collect any personal privacy information of your personal privacy.\n5. This application is supported by the community and has no direct connection with Cloud Imperium Games or other third -party commercial companies.\n6. We provide limited community support. If necessary, please go to the page to learn how to contact us."), "app_upgrade_action_next_time": MessageLookupByLibrary.simpleMessage("Next time"), "app_upgrade_action_update_now": diff --git a/lib/generated/intl/messages_zh_CN.dart b/lib/generated/intl/messages_zh_CN.dart index d2b7de8..a68be0f 100644 --- a/lib/generated/intl/messages_zh_CN.dart +++ b/lib/generated/intl/messages_zh_CN.dart @@ -139,7 +139,7 @@ class MessageLookup extends MessageLookupByLibrary { final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { "about_action_email": - MessageLookupByLibrary.simpleMessage("邮箱: scbox@xkeyc.com"), + MessageLookupByLibrary.simpleMessage("邮箱: xkeyc@qq.com"), "about_action_open_source": MessageLookupByLibrary.simpleMessage("开源"), "about_action_qq_group": MessageLookupByLibrary.simpleMessage("QQ群: 940696487"), @@ -193,6 +193,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("正在检测可用性,这可能需要一点时间..."), "app_splash_checking_for_updates": MessageLookupByLibrary.simpleMessage("正在检查更新..."), + "app_splash_dialog_u_a_p_p": + MessageLookupByLibrary.simpleMessage("用户协议与隐私政策"), + "app_splash_dialog_u_a_p_p_content": MessageLookupByLibrary.simpleMessage( + "感谢您选择 SC汉化盒子 ,我们致力于为您提供 安全、便捷、可靠的使用体验,在您开始使用应用前,请先阅读并同意以下内容:\n\n 1. 本应用 为 GNU 通用公共许可证 v3.0 协议下的开源软件,您可以在遵守协议的前提下自由使用、修改、分发本软件。我们的源代码位于:[Github.com/StarCitizenToolBox/app](https://github.com/StarCitizenToolBox/app)。 \n2. 本应用中的互联网内容(包括但不限于 本地化文件、工具网站、新闻、视频 等)版权由其作者创作所有,不属于 GPL 的一部分,请在遵守对应的授权协议下使用。\n3. 本应用的官方免费发布渠道为:[微软应用商店](https://apps.microsoft.com/detail/9NF3SWFWNKL1) 与 [星际公民汉化组官网](https://www.starcitizenzw.com/) ,若您从其他第三方处获得,请仔细甄别,以免遭受财产损失。\n4. 本应用在使用过程中会向我们的服务器发送匿名的统计数据,用于改进软件质量,我们不会收集您的任何个人隐私信息。 \n5. 本应用由社区提供支持,与 Cloud Imperium Games 或 其他第三方商业公司 无直接关联。\n6. 我们提供有限的社区支持,如有需要,请前往关于页面了解如何联系我们。"), "app_upgrade_action_next_time": MessageLookupByLibrary.simpleMessage("下次吧"), "app_upgrade_action_update_now": diff --git a/lib/generated/intl/messages_zh_TW.dart b/lib/generated/intl/messages_zh_TW.dart index 48bc03b..fde519b 100644 --- a/lib/generated/intl/messages_zh_TW.dart +++ b/lib/generated/intl/messages_zh_TW.dart @@ -139,7 +139,7 @@ class MessageLookup extends MessageLookupByLibrary { final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { "about_action_email": - MessageLookupByLibrary.simpleMessage("郵箱: scbox@xkeyc.com"), + MessageLookupByLibrary.simpleMessage("郵箱: xkeyc@qq.com"), "about_action_open_source": MessageLookupByLibrary.simpleMessage("開源"), "about_action_qq_group": MessageLookupByLibrary.simpleMessage("QQ群: 940696487"), @@ -193,6 +193,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("正在檢查可用性,這可能需要一點時間..."), "app_splash_checking_for_updates": MessageLookupByLibrary.simpleMessage("正在檢查更新..."), + "app_splash_dialog_u_a_p_p": + MessageLookupByLibrary.simpleMessage("用戶協議與隱私政策"), + "app_splash_dialog_u_a_p_p_content": MessageLookupByLibrary.simpleMessage( + "感謝您選擇 SC漢化盒子 ,我們致力於為您提供 安全、便捷、可靠的使用體驗,在您開始使用應用前,請先閱讀並同意以下內容:\n\n 1. 本應用 為 GNU 通用公共許可證 v3.0 協議下的開源軟件,您可以在遵守協議的前提下自由使用、修改、分發本軟件。我們的源代碼位於:[Github.com/StarCitizenToolBox/app](https://github.com/StarCitizenToolBox/app)。\n2. 本應用中的互聯網內容(包括但不限於 本地化文件、工具網站、新聞、視頻 等)版權由其作者創作所有,不屬於 GPL 的一部分,請在遵守對應的授權協議下使用。\n3. 本應用的官方免費發布渠道為:[微軟應用商店](https://apps.microsoft.com/detail/9NF3SWFWNKL1) 與[星際公民漢化組官網](https://www.starcitizenzw.com/ ) ,若您從其他第三方處獲得,請仔細甄別,以免遭受財產損失。\n4. 本應用在使用過程中會向我們的服務器發送匿名的統計數據,用於改進軟件質量,我們不會收集您的任何個人隱私信息。\n5. 本應用由社區提供支持,與 Cloud Imperium Games 或 其他第三方商業公司 無直接關聯。\n6. 我們提供有限的社區支持,如有需要,請前往關於頁面了解如何联系我們。"), "app_upgrade_action_next_time": MessageLookupByLibrary.simpleMessage("下次吧"), "app_upgrade_action_update_now": diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 7d4d33c..cbf3bb2 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -130,10 +130,10 @@ class S { ); } - /// `Email: scbox@xkeyc.com` + /// `Email: xkeyc@qq.com` String get about_action_email { return Intl.message( - 'Email: scbox@xkeyc.com', + 'Email: xkeyc@qq.com', name: 'about_action_email', desc: '', args: [], @@ -3692,6 +3692,26 @@ class S { args: [], ); } + + /// `User Agreement and Privacy Policy` + String get app_splash_dialog_u_a_p_p { + return Intl.message( + 'User Agreement and Privacy Policy', + name: 'app_splash_dialog_u_a_p_p', + desc: '', + args: [], + ); + } + + /// `Thank you for choosing the SC Chinese box. We are committed to providing you with a safe, convenient and reliable experience. Before you start using your application, please read and agree to the following:\n\n 1. This application is an open source software under the GNU General Public License V3.0 protocol. You can use, modify, and distribute this software freely under the premise of obeying the agreement. Our source code is located at: [github.com/starCitizentoolBox/app] (https://github.com/starCitizantoolBox/app).\n2. The copyright of the Internet content in this application (including but not limited to localized documents, tool websites, news, videos, etc.) is created by its authors and is not part of GPL. Please use it under the corresponding authorization agreement.\n3. The official free release channels for this application are: [Microsoft App Store] (https://apps.microsoft.com/detail/9NF3SWFWNKL1) and [Official Website of Star Citizen Chinese] ), If you get from other third parties, please identify it carefully to avoid suffering from property losses.\n4. This application will send anonymous statistics to our server during use to improve software quality, and we will not collect any personal privacy information of your personal privacy.\n5. This application is supported by the community and has no direct connection with Cloud Imperium Games or other third -party commercial companies.\n6. We provide limited community support. If necessary, please go to the page to learn how to contact us.` + String get app_splash_dialog_u_a_p_p_content { + return Intl.message( + 'Thank you for choosing the SC Chinese box. We are committed to providing you with a safe, convenient and reliable experience. Before you start using your application, please read and agree to the following:\n\n 1. This application is an open source software under the GNU General Public License V3.0 protocol. You can use, modify, and distribute this software freely under the premise of obeying the agreement. Our source code is located at: [github.com/starCitizentoolBox/app] (https://github.com/starCitizantoolBox/app).\n2. The copyright of the Internet content in this application (including but not limited to localized documents, tool websites, news, videos, etc.) is created by its authors and is not part of GPL. Please use it under the corresponding authorization agreement.\n3. The official free release channels for this application are: [Microsoft App Store] (https://apps.microsoft.com/detail/9NF3SWFWNKL1) and [Official Website of Star Citizen Chinese] ), If you get from other third parties, please identify it carefully to avoid suffering from property losses.\n4. This application will send anonymous statistics to our server during use to improve software quality, and we will not collect any personal privacy information of your personal privacy.\n5. This application is supported by the community and has no direct connection with Cloud Imperium Games or other third -party commercial companies.\n6. We provide limited community support. If necessary, please go to the page to learn how to contact us.', + name: 'app_splash_dialog_u_a_p_p_content', + desc: '', + args: [], + ); + } } class AppLocalizationDelegate extends LocalizationsDelegate { diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 1a6265c..fabeaa2 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -4,6 +4,7 @@ "@app_language_name": {}, "app_language_code": "en", "@app_language_code": {}, + "@auto_translate_locale": "en", "app_index_version_info": "SCToolBox V {v0} {v1}", "@app_index_version_info": {}, "app_shortcut_name": "SCToolBox.lnk", @@ -16,7 +17,7 @@ "@about_online_feedback": {}, "about_action_qq_group": "QQ group: 940696487", "@about_action_qq_group": {}, - "about_action_email": "Email: scbox@xkeyc.com", + "about_action_email": "Email: xkeyc@qq.com", "@about_action_email": {}, "about_action_open_source": "Open source", "@about_action_open_source": {}, @@ -727,5 +728,7 @@ "home_holiday_countdown_in_progress": "In progress", "@home_holiday_countdown_in_progress": {}, "app_common_loading_images": "Loading image ...", - "@app_common_loading_images": {} -} + "@app_common_loading_images": {}, + "app_splash_dialog_u_a_p_p": "User Agreement and Privacy Policy", + "app_splash_dialog_u_a_p_p_content": "Thank you for choosing the SC Chinese box. We are committed to providing you with a safe, convenient and reliable experience. Before you start using your application, please read and agree to the following:\n\n 1. This application is an open source software under the GNU General Public License V3.0 protocol. You can use, modify, and distribute this software freely under the premise of obeying the agreement. Our source code is located at: [github.com/starCitizentoolBox/app] (https://github.com/starCitizantoolBox/app).\n2. The copyright of the Internet content in this application (including but not limited to localized documents, tool websites, news, videos, etc.) is created by its authors and is not part of GPL. Please use it under the corresponding authorization agreement.\n3. The official free release channels for this application are: [Microsoft App Store] (https://apps.microsoft.com/detail/9NF3SWFWNKL1) and [Official Website of Star Citizen Chinese] ), If you get from other third parties, please identify it carefully to avoid suffering from property losses.\n4. This application will send anonymous statistics to our server during use to improve software quality, and we will not collect any personal privacy information of your personal privacy.\n5. This application is supported by the community and has no direct connection with Cloud Imperium Games or other third -party commercial companies.\n6. We provide limited community support. If necessary, please go to the page to learn how to contact us." +} \ No newline at end of file diff --git a/lib/l10n/intl_zh_CN.arb b/lib/l10n/intl_zh_CN.arb index a36b7c5..2a2213a 100644 --- a/lib/l10n/intl_zh_CN.arb +++ b/lib/l10n/intl_zh_CN.arb @@ -16,7 +16,7 @@ "@about_online_feedback": {}, "about_action_qq_group": "QQ群: 940696487", "@about_action_qq_group": {}, - "about_action_email": "邮箱: scbox@xkeyc.com", + "about_action_email": "邮箱: xkeyc@qq.com", "@about_action_email": {}, "about_action_open_source": "开源", "@about_action_open_source": {}, @@ -698,5 +698,7 @@ "settings_app_language_switch_info": "切换应用显示语言", "home_holiday_countdown_days": "{v0}天 ", "home_holiday_countdown_in_progress": "正在进行中", - "app_common_loading_images": "加载图片..." + "app_common_loading_images": "加载图片...", + "app_splash_dialog_u_a_p_p": "用户协议与隐私政策", + "app_splash_dialog_u_a_p_p_content": "感谢您选择 SC汉化盒子 ,我们致力于为您提供 安全、便捷、可靠的使用体验,在您开始使用应用前,请先阅读并同意以下内容:\n\n 1. 本应用 为 GNU 通用公共许可证 v3.0 协议下的开源软件,您可以在遵守协议的前提下自由使用、修改、分发本软件。我们的源代码位于:[Github.com/StarCitizenToolBox/app](https://github.com/StarCitizenToolBox/app)。 \n2. 本应用中的互联网内容(包括但不限于 本地化文件、工具网站、新闻、视频 等)版权由其作者创作所有,不属于 GPL 的一部分,请在遵守对应的授权协议下使用。\n3. 本应用的官方免费发布渠道为:[微软应用商店](https://apps.microsoft.com/detail/9NF3SWFWNKL1) 与 [星际公民汉化组官网](https://www.starcitizenzw.com/) ,若您从其他第三方处获得,请仔细甄别,以免遭受财产损失。\n4. 本应用在使用过程中会向我们的服务器发送匿名的统计数据,用于改进软件质量,我们不会收集您的任何个人隐私信息。 \n5. 本应用由社区提供支持,与 Cloud Imperium Games 或 其他第三方商业公司 无直接关联。\n6. 我们提供有限的社区支持,如有需要,请前往关于页面了解如何联系我们。" } diff --git a/lib/l10n/intl_zh_TW.arb b/lib/l10n/intl_zh_TW.arb index aed11f6..cc3f5f5 100644 --- a/lib/l10n/intl_zh_TW.arb +++ b/lib/l10n/intl_zh_TW.arb @@ -4,6 +4,7 @@ "@app_language_name": {}, "app_language_code": "zh_TW", "@app_language_code": {}, + "@auto_translate_locale": "zh-tw", "app_index_version_info": "SC漢化盒子 V{v0} {v1}", "@app_index_version_info": {}, "app_shortcut_name": "SC漢化盒子DEV.lnk", @@ -16,7 +17,7 @@ "@about_online_feedback": {}, "about_action_qq_group": "QQ群: 940696487", "@about_action_qq_group": {}, - "about_action_email": "郵箱: scbox@xkeyc.com", + "about_action_email": "郵箱: xkeyc@qq.com", "@about_action_email": {}, "about_action_open_source": "開源", "@about_action_open_source": {}, @@ -727,5 +728,7 @@ "home_holiday_countdown_in_progress": "正在進行中", "@home_holiday_countdown_in_progress": {}, "app_common_loading_images": "載入圖片...", - "@app_common_loading_images": {} -} + "@app_common_loading_images": {}, + "app_splash_dialog_u_a_p_p": "用戶協議與隱私政策", + "app_splash_dialog_u_a_p_p_content": "感謝您選擇 SC漢化盒子 ,我們致力於為您提供 安全、便捷、可靠的使用體驗,在您開始使用應用前,請先閱讀並同意以下內容:\n\n 1. 本應用 為 GNU 通用公共許可證 v3.0 協議下的開源軟件,您可以在遵守協議的前提下自由使用、修改、分發本軟件。我們的源代碼位於:[Github.com/StarCitizenToolBox/app](https://github.com/StarCitizenToolBox/app)。\n2. 本應用中的互聯網內容(包括但不限於 本地化文件、工具網站、新聞、視頻 等)版權由其作者創作所有,不屬於 GPL 的一部分,請在遵守對應的授權協議下使用。\n3. 本應用的官方免費發布渠道為:[微軟應用商店](https://apps.microsoft.com/detail/9NF3SWFWNKL1) 與[星際公民漢化組官網](https://www.starcitizenzw.com/ ) ,若您從其他第三方處獲得,請仔細甄別,以免遭受財產損失。\n4. 本應用在使用過程中會向我們的服務器發送匿名的統計數據,用於改進軟件質量,我們不會收集您的任何個人隱私信息。\n5. 本應用由社區提供支持,與 Cloud Imperium Games 或 其他第三方商業公司 無直接關聯。\n6. 我們提供有限的社區支持,如有需要,請前往關於頁面了解如何联系我們。" +} \ No newline at end of file diff --git a/lib/provider/aria2c.freezed.dart b/lib/provider/aria2c.freezed.dart index 30fc2c5..eeb7609 100644 --- a/lib/provider/aria2c.freezed.dart +++ b/lib/provider/aria2c.freezed.dart @@ -151,13 +151,13 @@ class _$Aria2cModelStateImpl (identical(other.aria2cDir, aria2cDir) || other.aria2cDir == aria2cDir) && (identical(other.aria2c, aria2c) || other.aria2c == aria2c) && - const DeepCollectionEquality() - .equals(other.aria2globalStat, aria2globalStat)); + (identical(other.aria2globalStat, aria2globalStat) || + other.aria2globalStat == aria2globalStat)); } @override - int get hashCode => Object.hash(runtimeType, aria2cDir, aria2c, - const DeepCollectionEquality().hash(aria2globalStat)); + int get hashCode => + Object.hash(runtimeType, aria2cDir, aria2c, aria2globalStat); @JsonKey(ignore: true) @override diff --git a/lib/ui/about/about_ui.dart b/lib/ui/about/about_ui.dart index 58f01a2..fe9c1b8 100644 --- a/lib/ui/about/about_ui.dart +++ b/lib/ui/about/about_ui.dart @@ -147,7 +147,7 @@ class AboutUI extends HookConsumerWidget { ], ), onPressed: () { - launchUrlString("mailto:scbox@xkeyc.com"); + launchUrlString("mailto:xkeyc@qq.com"); }, ), const SizedBox(width: 24), diff --git a/lib/ui/home/dialogs/home_game_login_dialog_ui_model.g.dart b/lib/ui/home/dialogs/home_game_login_dialog_ui_model.g.dart index bfe5065..bcbf80e 100644 --- a/lib/ui/home/dialogs/home_game_login_dialog_ui_model.g.dart +++ b/lib/ui/home/dialogs/home_game_login_dialog_ui_model.g.dart @@ -7,7 +7,7 @@ part of 'home_game_login_dialog_ui_model.dart'; // ************************************************************************** String _$homeGameLoginUIModelHash() => - r'108812122298cf826ee57ecad3e519b1dc3fd6ce'; + r'aba96cf64ea6146f1006ca2bd41e6e26c10adb6c'; /// See also [HomeGameLoginUIModel]. @ProviderFor(HomeGameLoginUIModel) diff --git a/lib/ui/home/downloader/home_downloader_ui_model.freezed.dart b/lib/ui/home/downloader/home_downloader_ui_model.freezed.dart index d51c21f..392d994 100644 --- a/lib/ui/home/downloader/home_downloader_ui_model.freezed.dart +++ b/lib/ui/home/downloader/home_downloader_ui_model.freezed.dart @@ -190,8 +190,8 @@ class _$HomeDownloaderUIStateImpl implements _HomeDownloaderUIState { .equals(other._waitingTasks, _waitingTasks) && const DeepCollectionEquality() .equals(other._stoppedTasks, _stoppedTasks) && - const DeepCollectionEquality() - .equals(other.globalStat, globalStat)); + (identical(other.globalStat, globalStat) || + other.globalStat == globalStat)); } @override @@ -200,7 +200,7 @@ class _$HomeDownloaderUIStateImpl implements _HomeDownloaderUIState { const DeepCollectionEquality().hash(_tasks), const DeepCollectionEquality().hash(_waitingTasks), const DeepCollectionEquality().hash(_stoppedTasks), - const DeepCollectionEquality().hash(globalStat)); + globalStat); @JsonKey(ignore: true) @override diff --git a/lib/ui/home/home_ui_model.g.dart b/lib/ui/home/home_ui_model.g.dart index 2f503ae..2b51b6d 100644 --- a/lib/ui/home/home_ui_model.g.dart +++ b/lib/ui/home/home_ui_model.g.dart @@ -6,7 +6,7 @@ part of 'home_ui_model.dart'; // RiverpodGenerator // ************************************************************************** -String _$homeUIModelHash() => r'b62026bb0b5ab37c0aed33e0ed018aa9732da58e'; +String _$homeUIModelHash() => r'13dc0eb046a284bb9cb5a1da5597dae7e5287030'; /// See also [HomeUIModel]. @ProviderFor(HomeUIModel) diff --git a/lib/ui/home/localization/localization_ui_model.g.dart b/lib/ui/home/localization/localization_ui_model.g.dart index db4b338..3945a6f 100644 --- a/lib/ui/home/localization/localization_ui_model.g.dart +++ b/lib/ui/home/localization/localization_ui_model.g.dart @@ -7,7 +7,7 @@ part of 'localization_ui_model.dart'; // ************************************************************************** String _$localizationUIModelHash() => - r'697f9e00ea08729c5debb4d87ffe9fadb5c0ec71'; + r'87152654734d322cd20d62baf050918adc9fd11b'; /// See also [LocalizationUIModel]. @ProviderFor(LocalizationUIModel) diff --git a/lib/ui/splash_ui.dart b/lib/ui/splash_ui.dart index 20bec30..c669f2b 100644 --- a/lib/ui/splash_ui.dart +++ b/lib/ui/splash_ui.dart @@ -1,7 +1,11 @@ +import 'dart:io'; + import 'package:fluent_ui/fluent_ui.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:go_router/go_router.dart'; +import 'package:hive/hive.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:markdown_widget/widget/markdown.dart'; import 'package:starcitizen_doctor/api/analytics.dart'; import 'package:starcitizen_doctor/app.dart'; import 'package:starcitizen_doctor/common/conf/const_conf.dart'; @@ -13,6 +17,8 @@ import 'package:starcitizen_doctor/widgets/widgets.dart'; class SplashUI extends HookConsumerWidget { const SplashUI({super.key}); + static const _alertInfoVersion = 1; + @override Widget build(BuildContext context, WidgetRef ref) { final stepState = useState(0); @@ -61,7 +67,13 @@ class SplashUI extends HookConsumerWidget { void _initApp(BuildContext context, AppGlobalModel appModel, ValueNotifier stepState, WidgetRef ref) async { await appModel.initApp(); + final appConf = await Hive.openBox("app_conf"); + final v = appConf.get("splash_alert_info_version", defaultValue: 0); AnalyticsApi.touch("launch"); + if (v < _alertInfoVersion) { + if (!context.mounted) return; + await _showAlert(context, appConf); + } try { await URLConf.checkHost(); } catch (e) { @@ -77,4 +89,18 @@ class SplashUI extends HookConsumerWidget { if (!context.mounted) return; context.go("/index"); } + + _showAlert(BuildContext context, Box appConf) async { + final userOk = await showConfirmDialogs( + context, + S.current.app_splash_dialog_u_a_p_p, + MarkdownWidget(data: S.current.app_splash_dialog_u_a_p_p_content), + constraints: + BoxConstraints(maxWidth: MediaQuery.of(context).size.width * .5)); + if (userOk) { + await appConf.put("splash_alert_info_version", _alertInfoVersion); + } else { + exit(0); + } + } } diff --git a/lib/ui/tools/tools_ui_model.g.dart b/lib/ui/tools/tools_ui_model.g.dart index 7778f8b..17347fc 100644 --- a/lib/ui/tools/tools_ui_model.g.dart +++ b/lib/ui/tools/tools_ui_model.g.dart @@ -6,7 +6,7 @@ part of 'tools_ui_model.dart'; // RiverpodGenerator // ************************************************************************** -String _$toolsUIModelHash() => r'6b4ab0195cc9606202ae5d0dce574735090f486f'; +String _$toolsUIModelHash() => r'e96ded635df8f59fb93d92f8dac337c44482dc1c'; /// See also [ToolsUIModel]. @ProviderFor(ToolsUIModel)