From 56816dc060b5bab69ae317a4d4a99b0319a331a2 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sun, 23 Feb 2025 13:20:41 +0800 Subject: [PATCH] :sparkles: More debug options in settings --- assets/translations/en-US.json | 6 +++++- assets/translations/zh-CN.json | 6 +++++- assets/translations/zh-HK.json | 6 +++++- assets/translations/zh-TW.json | 6 +++++- lib/main.dart | 3 ++- lib/providers/sn_sticker.dart | 19 +++---------------- lib/screens/settings.dart | 28 ++++++++++++++++++++++++++-- lib/screens/stickers.dart | 2 ++ 8 files changed, 53 insertions(+), 23 deletions(-) diff --git a/assets/translations/en-US.json b/assets/translations/en-US.json index 36e4250..a5e9c1b 100644 --- a/assets/translations/en-US.json +++ b/assets/translations/en-US.json @@ -690,6 +690,7 @@ "databaseDeleted": "The local database has been deleted.", "settingsEnablePushNotifications": "Enable Push Notifications", "settingsEnablePushNotificationsDescription": "Re-enable and request permission to receive push notifications. Just in case it didn't run automatically.", + "settingsEnabledPushNotifications": "Push notification has been enabled.", "screenStickers": "Stickers", "stickersDiscovery": "Discovery", "stickersOwned": "Owned", @@ -697,5 +698,8 @@ "stickersAdd": "Add Sticker Pack", "stickersAdded": "Sticker pack has been added.", "add": "Add", - "stickersRemoved": "Sticker pack has been removed, you can add it again anytime." + "stickersRemoved": "Sticker pack has been removed, you can add it again anytime.", + "stickersReload": "Reload Stickers", + "stickersReloadDescription": "Reload stickers from the server, update the sticker picker.", + "stickersReloaded": "Sticker packs has been reloaded." } diff --git a/assets/translations/zh-CN.json b/assets/translations/zh-CN.json index 577773e..a1d8ff9 100644 --- a/assets/translations/zh-CN.json +++ b/assets/translations/zh-CN.json @@ -688,6 +688,7 @@ "databaseDeleted": "本地数据库已被删除。", "settingsEnablePushNotifications": "启用推送数据", "settingsEnablePushNotificationsDescription": "重新启用并请求推送权限,以防自动激活失败。", + "settingsEnabledPushNotifications": "推送通知已经注册。", "screenStickers": "贴图", "stickersDiscovery": "发现", "stickersOwned": "由我拥有", @@ -695,5 +696,8 @@ "stickersAdd": "添加贴图包", "stickersAdded": "贴图包已添加。", "add": "添加", - "stickersRemoved": "贴图包已被移除,你可以随时再次添加回来。" + "stickersRemoved": "贴图包已被移除,你可以随时再次添加回来。", + "stickersReload": "重载贴图包", + "stickersReloadDescription": "从服务器重新加载添加过的贴图,更新贴图选择器。", + "stickersReloaded": "贴图包已重载。" } diff --git a/assets/translations/zh-HK.json b/assets/translations/zh-HK.json index 62b0ef0..3715cd4 100644 --- a/assets/translations/zh-HK.json +++ b/assets/translations/zh-HK.json @@ -688,6 +688,7 @@ "databaseDeleted": "本地數據庫已被刪除。", "settingsEnablePushNotifications": "啓用推送數據", "settingsEnablePushNotificationsDescription": "重新啓用並請求推送權限,以防自動激活失敗。", + "settingsEnabledPushNotifications": "推送通知已經註冊。", "screenStickers": "貼圖", "stickersDiscovery": "發現", "stickersOwned": "由我擁有", @@ -695,5 +696,8 @@ "stickersAdd": "添加貼圖包", "stickersAdded": "貼圖包已添加。", "add": "添加", - "stickersRemoved": "貼圖包已被移除,你可以隨時再次添加回來。" + "stickersRemoved": "貼圖包已被移除,你可以隨時再次添加回來。", + "stickersReload": "重載貼圖包", + "stickersReloadDescription": "從服務器重新加載添加過的貼圖,更新貼圖選擇器。", + "stickersReloaded": "貼圖包已重載。" } diff --git a/assets/translations/zh-TW.json b/assets/translations/zh-TW.json index e8da9be..07df298 100644 --- a/assets/translations/zh-TW.json +++ b/assets/translations/zh-TW.json @@ -688,6 +688,7 @@ "databaseDeleted": "本地數據庫已被刪除。", "settingsEnablePushNotifications": "啟用推送數據", "settingsEnablePushNotificationsDescription": "重新啟用並請求推送權限,以防自動激活失敗。", + "settingsEnabledPushNotifications": "推送通知已經註冊。", "screenStickers": "貼圖", "stickersDiscovery": "發現", "stickersOwned": "由我擁有", @@ -695,5 +696,8 @@ "stickersAdd": "添加貼圖包", "stickersAdded": "貼圖包已添加。", "add": "添加", - "stickersRemoved": "貼圖包已被移除,你可以隨時再次添加回來。" + "stickersRemoved": "貼圖包已被移除,你可以隨時再次添加回來。", + "stickersReload": "重載貼圖包", + "stickersReloadDescription": "從服務器重新加載添加過的貼圖,更新貼圖選擇器。", + "stickersReloaded": "貼圖包已重載。" } diff --git a/lib/main.dart b/lib/main.dart index 188650d..5b74e46 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -303,7 +303,8 @@ class _AppSplashScreenState extends State<_AppSplashScreen> with TrayListener { await notify.registerPushNotifications(); if (!mounted) return; final sticker = context.read(); - await sticker.listStickerEagerly(); + await sticker.listSticker(); + log('[Bootstrap] Everything initialized!'); } catch (err) { if (!mounted) return; await context.showErrorDialog(err); diff --git a/lib/providers/sn_sticker.dart b/lib/providers/sn_sticker.dart index a72c747..0529b3f 100644 --- a/lib/providers/sn_sticker.dart +++ b/lib/providers/sn_sticker.dart @@ -57,27 +57,14 @@ class SnStickerProvider { return null; } - Future listStickerEagerly() async { - var count = await listSticker(); - for (var page = 1; count > 0; count -= 10) { - await listSticker(page: page); - page++; - } - } - - Future listSticker({int page = 0}) async { + Future listSticker() async { try { - final resp = await _sn.client.get('/cgi/uc/stickers', queryParameters: { - 'take': 10, - 'offset': page * 10, - }); + final resp = await _sn.client.get('/cgi/uc/stickers'); final data = resp.data; - final stickers = - List.from(data['data']).map((ele) => SnSticker.fromJson(ele)); + final stickers = List.from(data).map((ele) => SnSticker.fromJson(ele)); for (final sticker in stickers) { _cacheSticker(sticker); } - return data['count'] as int; } catch (err) { log('[Sticker] Failed to list stickers: $err'); rethrow; diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index 99d6b28..b628358 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -19,6 +19,7 @@ import 'package:surface/providers/config.dart'; import 'package:surface/providers/database.dart'; import 'package:surface/providers/notification.dart'; import 'package:surface/providers/sn_network.dart'; +import 'package:surface/providers/sn_sticker.dart'; import 'package:surface/providers/theme.dart'; import 'package:surface/theme.dart'; import 'package:surface/widgets/dialog.dart'; @@ -570,16 +571,39 @@ class _SettingsScreenState extends State { Text('settingsEnablePushNotificationsDescription').tr(), contentPadding: const EdgeInsets.symmetric(horizontal: 24), trailing: const Icon(Symbols.chevron_right), - onTap: () { + onTap: () async { final nty = context.read(); try { - nty.registerPushNotifications(); + await nty.registerPushNotifications(); + if (!context.mounted) return; + HapticFeedback.heavyImpact(); + context.showSnackbar( + 'settingsEnabledPushNotifications'.tr()); } catch (err) { if (!mounted) return; context.showErrorDialog(err); } }, ), + ListTile( + leading: const Icon(Symbols.refresh), + title: Text('stickersReload').tr(), + subtitle: Text('stickersReloadDescription').tr(), + contentPadding: const EdgeInsets.symmetric(horizontal: 24), + trailing: const Icon(Symbols.chevron_right), + onTap: () async { + final stickers = context.read(); + try { + await stickers.listSticker(); + if (!context.mounted) return; + HapticFeedback.heavyImpact(); + context.showSnackbar('stickersReloaded'.tr()); + } catch (err) { + if (!context.mounted) return; + context.showErrorDialog(err); + } + }, + ), ListTile( title: Text('settingsMiscAbout').tr(), subtitle: Text('settingsMiscAboutDescription').tr(), diff --git a/lib/screens/stickers.dart b/lib/screens/stickers.dart index b0a8328..59a2b1a 100644 --- a/lib/screens/stickers.dart +++ b/lib/screens/stickers.dart @@ -8,6 +8,7 @@ import 'package:surface/providers/sn_network.dart'; import 'package:surface/providers/sn_sticker.dart'; import 'package:surface/providers/userinfo.dart'; import 'package:surface/types/attachment.dart'; +import 'package:surface/widgets/app_bar_leading.dart'; import 'package:surface/widgets/attachment/attachment_item.dart'; import 'package:surface/widgets/dialog.dart'; import 'package:surface/widgets/loading_indicator.dart'; @@ -109,6 +110,7 @@ class _StickerScreenState extends State Widget build(BuildContext context) { return AppScaffold( appBar: AppBar( + leading: AutoAppBarLeading(), title: Text('screenStickers').tr(), bottom: TabBar( controller: _tabController,