Commit 71be496b65df3213cd4395688243289477074402

Authored by 权海
1 parent cb157457

feat(ui):watch theme国际化文本

@@ -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