Showing
10 changed files
with
64 additions
and
23 deletions
| @@ -10,7 +10,6 @@ import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; | @@ -10,7 +10,6 @@ import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; | ||
| 10 | import 'package:doublefeel_flutter/pigeon/wear_engine_api.g.dart'; | 10 | import 'package:doublefeel_flutter/pigeon/wear_engine_api.g.dart'; |
| 11 | import 'package:flutter/material.dart'; | 11 | import 'package:flutter/material.dart'; |
| 12 | import 'package:get/get.dart'; | 12 | import 'package:get/get.dart'; |
| 13 | -import 'package:image_cropper/image_cropper.dart'; | ||
| 14 | import 'package:image_picker/image_picker.dart'; | 13 | import 'package:image_picker/image_picker.dart'; |
| 15 | import 'package:path_provider/path_provider.dart'; | 14 | import 'package:path_provider/path_provider.dart'; |
| 16 | import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; | 15 | import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; |
| 1 | import 'dart:async'; | 1 | import 'dart:async'; |
| 2 | 2 | ||
| 3 | import 'package:doublefeel_flutter/app/modules/friends/data/friends_repository.dart'; | 3 | import 'package:doublefeel_flutter/app/modules/friends/data/friends_repository.dart'; |
| 4 | -import 'package:doublefeel_flutter/app/modules/watch_theme/models/watch_device_extension.dart'; | ||
| 5 | import 'package:doublefeel_flutter/app/modules/watch_theme/services/watch_theme_sync_payload_builder.dart'; | 4 | import 'package:doublefeel_flutter/app/modules/watch_theme/services/watch_theme_sync_payload_builder.dart'; |
| 6 | import 'package:doublefeel_flutter/core/network/api/friend_api.dart'; | 5 | import 'package:doublefeel_flutter/core/network/api/friend_api.dart'; |
| 7 | import 'package:doublefeel_flutter/core/network/api/theme_api.dart'; | 6 | import 'package:doublefeel_flutter/core/network/api/theme_api.dart'; |
| @@ -223,15 +222,15 @@ class CustomWatchThemePreviewController extends GetxController { | @@ -223,15 +222,15 @@ class CustomWatchThemePreviewController extends GetxController { | ||
| 223 | 222 | ||
| 224 | var syncSuccess = false; | 223 | var syncSuccess = false; |
| 225 | try { | 224 | try { |
| 226 | - final result = await _themeApi.applyTheme(themeId); | ||
| 227 | - if (result is! AppSuccess<void>) { | 225 | + final result = await _themeApi.applyTheme(themeId); |
| 226 | + if (result is! AppSuccess<void>) { | ||
| 228 | syncSuccess = await WearEngineHostApi().syncWatchTheme(downloadedTheme); | 227 | syncSuccess = await WearEngineHostApi().syncWatchTheme(downloadedTheme); |
| 229 | - isApplying.value = false; | ||
| 230 | - AppToast.show(l10n.watchThemeApplyFailed); | ||
| 231 | - return false; | ||
| 232 | - } | ||
| 233 | - selectedThemeItem.value = themeItem; | ||
| 234 | isApplying.value = false; | 228 | isApplying.value = false; |
| 229 | + AppToast.show(l10n.watchThemeApplyFailed); | ||
| 230 | + return false; | ||
| 231 | + } | ||
| 232 | + selectedThemeItem.value = themeItem; | ||
| 233 | + isApplying.value = false; | ||
| 235 | return true; | 234 | return true; |
| 236 | } catch (_) { | 235 | } catch (_) { |
| 237 | // The active theme is already saved on the server. | 236 | // The active theme is already saved on the server. |
| @@ -7,6 +7,7 @@ import 'package:doublefeel_flutter/core/network/api/vip_api.dart'; | @@ -7,6 +7,7 @@ import 'package:doublefeel_flutter/core/network/api/vip_api.dart'; | ||
| 7 | import 'package:doublefeel_flutter/core/result/app_result.dart'; | 7 | import 'package:doublefeel_flutter/core/result/app_result.dart'; |
| 8 | import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart'; | 8 | import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart'; |
| 9 | import 'package:doublefeel_flutter/data/models/local/user_preferences.dart'; | 9 | import 'package:doublefeel_flutter/data/models/local/user_preferences.dart'; |
| 10 | +import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; | ||
| 10 | import 'package:get/get.dart'; | 11 | import 'package:get/get.dart'; |
| 11 | 12 | ||
| 12 | import '../models/watch_theme_models.dart'; | 13 | import '../models/watch_theme_models.dart'; |
| @@ -94,7 +95,7 @@ class WatchThemeController extends GetxController { | @@ -94,7 +95,7 @@ class WatchThemeController extends GetxController { | ||
| 94 | 95 | ||
| 95 | Future<void> _toPremiumPage() async { | 96 | Future<void> _toPremiumPage() async { |
| 96 | await Get.toNamed(Routes.PURCHASE, arguments: { | 97 | await Get.toNamed(Routes.PURCHASE, arguments: { |
| 97 | - IntentKeys.channelType: "表盘主题", | 98 | + IntentKeys.channelType: l10n.watchThemePurchaseChannel, |
| 98 | }); | 99 | }); |
| 99 | await _refreshVip(); | 100 | await _refreshVip(); |
| 100 | } | 101 | } |
| 1 | import 'dart:async'; | 1 | import 'dart:async'; |
| 2 | 2 | ||
| 3 | import 'package:doublefeel_flutter/app/modules/friends/data/friends_repository.dart'; | 3 | import 'package:doublefeel_flutter/app/modules/friends/data/friends_repository.dart'; |
| 4 | -import 'package:doublefeel_flutter/app/modules/watch_theme/models/watch_device_extension.dart'; | ||
| 5 | import 'package:doublefeel_flutter/app/modules/watch_theme/services/watch_theme_sync_payload_builder.dart'; | 4 | import 'package:doublefeel_flutter/app/modules/watch_theme/services/watch_theme_sync_payload_builder.dart'; |
| 6 | import 'package:doublefeel_flutter/core/network/api/friend_api.dart'; | 5 | import 'package:doublefeel_flutter/core/network/api/friend_api.dart'; |
| 7 | import 'package:doublefeel_flutter/core/network/api/theme_api.dart'; | 6 | import 'package:doublefeel_flutter/core/network/api/theme_api.dart'; |
| @@ -194,15 +193,15 @@ class WatchThemePreviewController extends GetxController { | @@ -194,15 +193,15 @@ class WatchThemePreviewController extends GetxController { | ||
| 194 | 193 | ||
| 195 | var syncSuccess = false; | 194 | var syncSuccess = false; |
| 196 | try { | 195 | try { |
| 197 | - final result = await _themeApi.applyTheme(themeId); | ||
| 198 | - if (result is! AppSuccess<void>) { | 196 | + final result = await _themeApi.applyTheme(themeId); |
| 197 | + if (result is! AppSuccess<void>) { | ||
| 199 | syncSuccess = await WearEngineHostApi().syncWatchTheme(downloadedTheme); | 198 | syncSuccess = await WearEngineHostApi().syncWatchTheme(downloadedTheme); |
| 200 | - isApplying.value = false; | ||
| 201 | - AppToast.show(l10n.watchThemeApplyFailed); | ||
| 202 | - return false; | ||
| 203 | - } | ||
| 204 | - selectedThemeItem.value = themeItem; | ||
| 205 | isApplying.value = false; | 199 | isApplying.value = false; |
| 200 | + AppToast.show(l10n.watchThemeApplyFailed); | ||
| 201 | + return false; | ||
| 202 | + } | ||
| 203 | + selectedThemeItem.value = themeItem; | ||
| 204 | + isApplying.value = false; | ||
| 206 | return true; | 205 | return true; |
| 207 | } catch (_) { | 206 | } catch (_) { |
| 208 | // The active theme is already saved on the server. | 207 | // The active theme is already saved on the server. |
| 1 | +import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; | ||
| 1 | import 'package:doublefeel_flutter/pigeon/wear_engine_api.g.dart'; | 2 | import 'package:doublefeel_flutter/pigeon/wear_engine_api.g.dart'; |
| 2 | 3 | ||
| 3 | extension WatchDeviceExtension on WearDeviceInfo { | 4 | extension WatchDeviceExtension on WearDeviceInfo { |
| 4 | String? get connectedDeviceDesc { | 5 | String? get connectedDeviceDesc { |
| 5 | if (isPaired != true) { | 6 | if (isPaired != true) { |
| 6 | - return '手表未配对'; | 7 | + return l10n.watchThemeWatchNotPaired; |
| 7 | } | 8 | } |
| 8 | if (isReachable != true) { | 9 | if (isReachable != true) { |
| 9 | - return '手表数据无法传递'; | 10 | + return l10n.watchThemeWatchDataUnavailable; |
| 10 | } | 11 | } |
| 11 | if (isWatchAppInstalled != true) { | 12 | if (isWatchAppInstalled != true) { |
| 12 | - return 'watch app未安装'; | 13 | + return l10n.watchThemeWatchAppNotInstalled; |
| 13 | } | 14 | } |
| 14 | return null; | 15 | return null; |
| 15 | } | 16 | } |
| @@ -686,6 +686,9 @@ | @@ -686,6 +686,9 @@ | ||
| 686 | "watchThemeIncomplete": "Theme information is incomplete", | 686 | "watchThemeIncomplete": "Theme information is incomplete", |
| 687 | "watchThemeApplyFailed": "Failed to apply theme", | 687 | "watchThemeApplyFailed": "Failed to apply theme", |
| 688 | "watchThemeWatchSyncFailed": "Watch face sync failed", | 688 | "watchThemeWatchSyncFailed": "Watch face sync failed", |
| 689 | + "watchThemeWatchNotPaired": "Watch not paired", | ||
| 690 | + "watchThemeWatchDataUnavailable": "Watch data is unavailable", | ||
| 691 | + "watchThemeWatchAppNotInstalled": "Watch app is not installed", | ||
| 689 | "watchThemePurchaseChannel": "Watch Face Themes", | 692 | "watchThemePurchaseChannel": "Watch Face Themes", |
| 690 | "feedbackMaxImagesLimit": "Up to {count} images or videos can be uploaded", | 693 | "feedbackMaxImagesLimit": "Up to {count} images or videos can be uploaded", |
| 691 | "@feedbackMaxImagesLimit": { | 694 | "@feedbackMaxImagesLimit": { |
| @@ -782,4 +785,4 @@ | @@ -782,4 +785,4 @@ | ||
| 782 | } | 785 | } |
| 783 | } | 786 | } |
| 784 | } | 787 | } |
| 785 | -} | ||
| 788 | +} |
| @@ -1079,6 +1079,9 @@ | @@ -1079,6 +1079,9 @@ | ||
| 1079 | "watchThemeIncomplete": "主题信息不完整", | 1079 | "watchThemeIncomplete": "主题信息不完整", |
| 1080 | "watchThemeApplyFailed": "应用主题失败", | 1080 | "watchThemeApplyFailed": "应用主题失败", |
| 1081 | "watchThemeWatchSyncFailed": "表盘同步失败", | 1081 | "watchThemeWatchSyncFailed": "表盘同步失败", |
| 1082 | + "watchThemeWatchNotPaired": "手表未配对", | ||
| 1083 | + "watchThemeWatchDataUnavailable": "手表数据无法传递", | ||
| 1084 | + "watchThemeWatchAppNotInstalled": "Watch App 未安装", | ||
| 1082 | "watchThemePurchaseChannel": "表盘主题", | 1085 | "watchThemePurchaseChannel": "表盘主题", |
| 1083 | "feedbackMaxImagesLimit": "最多上传{count}个图片或视频", | 1086 | "feedbackMaxImagesLimit": "最多上传{count}个图片或视频", |
| 1084 | "@feedbackMaxImagesLimit": { | 1087 | "@feedbackMaxImagesLimit": { |
| @@ -1175,4 +1178,4 @@ | @@ -1175,4 +1178,4 @@ | ||
| 1175 | } | 1178 | } |
| 1176 | } | 1179 | } |
| 1177 | } | 1180 | } |
| 1178 | -} | ||
| 1181 | +} |
| @@ -3981,6 +3981,24 @@ abstract class AppLocalizations { | @@ -3981,6 +3981,24 @@ abstract class AppLocalizations { | ||
| 3981 | /// **'表盘同步失败'** | 3981 | /// **'表盘同步失败'** |
| 3982 | String get watchThemeWatchSyncFailed; | 3982 | String get watchThemeWatchSyncFailed; |
| 3983 | 3983 | ||
| 3984 | + /// No description provided for @watchThemeWatchNotPaired. | ||
| 3985 | + /// | ||
| 3986 | + /// In zh, this message translates to: | ||
| 3987 | + /// **'手表未配对'** | ||
| 3988 | + String get watchThemeWatchNotPaired; | ||
| 3989 | + | ||
| 3990 | + /// No description provided for @watchThemeWatchDataUnavailable. | ||
| 3991 | + /// | ||
| 3992 | + /// In zh, this message translates to: | ||
| 3993 | + /// **'手表数据无法传递'** | ||
| 3994 | + String get watchThemeWatchDataUnavailable; | ||
| 3995 | + | ||
| 3996 | + /// No description provided for @watchThemeWatchAppNotInstalled. | ||
| 3997 | + /// | ||
| 3998 | + /// In zh, this message translates to: | ||
| 3999 | + /// **'Watch App 未安装'** | ||
| 4000 | + String get watchThemeWatchAppNotInstalled; | ||
| 4001 | + | ||
| 3984 | /// No description provided for @watchThemePurchaseChannel. | 4002 | /// No description provided for @watchThemePurchaseChannel. |
| 3985 | /// | 4003 | /// |
| 3986 | /// In zh, this message translates to: | 4004 | /// In zh, this message translates to: |
| @@ -2222,6 +2222,15 @@ class AppLocalizationsEn extends AppLocalizations { | @@ -2222,6 +2222,15 @@ class AppLocalizationsEn extends AppLocalizations { | ||
| 2222 | String get watchThemeWatchSyncFailed => 'Watch face sync failed'; | 2222 | String get watchThemeWatchSyncFailed => 'Watch face sync failed'; |
| 2223 | 2223 | ||
| 2224 | @override | 2224 | @override |
| 2225 | + String get watchThemeWatchNotPaired => 'Watch not paired'; | ||
| 2226 | + | ||
| 2227 | + @override | ||
| 2228 | + String get watchThemeWatchDataUnavailable => 'Watch data is unavailable'; | ||
| 2229 | + | ||
| 2230 | + @override | ||
| 2231 | + String get watchThemeWatchAppNotInstalled => 'Watch app is not installed'; | ||
| 2232 | + | ||
| 2233 | + @override | ||
| 2225 | String get watchThemePurchaseChannel => 'Watch Face Themes'; | 2234 | String get watchThemePurchaseChannel => 'Watch Face Themes'; |
| 2226 | 2235 | ||
| 2227 | @override | 2236 | @override |
| @@ -2125,6 +2125,15 @@ class AppLocalizationsZh extends AppLocalizations { | @@ -2125,6 +2125,15 @@ class AppLocalizationsZh extends AppLocalizations { | ||
| 2125 | String get watchThemeWatchSyncFailed => '表盘同步失败'; | 2125 | String get watchThemeWatchSyncFailed => '表盘同步失败'; |
| 2126 | 2126 | ||
| 2127 | @override | 2127 | @override |
| 2128 | + String get watchThemeWatchNotPaired => '手表未配对'; | ||
| 2129 | + | ||
| 2130 | + @override | ||
| 2131 | + String get watchThemeWatchDataUnavailable => '手表数据无法传递'; | ||
| 2132 | + | ||
| 2133 | + @override | ||
| 2134 | + String get watchThemeWatchAppNotInstalled => 'Watch App 未安装'; | ||
| 2135 | + | ||
| 2136 | + @override | ||
| 2128 | String get watchThemePurchaseChannel => '表盘主题'; | 2137 | String get watchThemePurchaseChannel => '表盘主题'; |
| 2129 | 2138 | ||
| 2130 | @override | 2139 | @override |
-
Please register or login to post a comment