mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-01-24 11:36:21 +00:00
Merge pull request #103 from cake-tech/CAKE-40-text-on-restore-screen
CAKE-40 | added text to restore wallet from keys page, restore wallet…
This commit is contained in:
commit
0725bc8a5c
21 changed files with 180 additions and 61 deletions
|
@ -283,10 +283,10 @@ Future setup(
|
||||||
getIt
|
getIt
|
||||||
.registerFactory(() => WalletSeedViewModel(getIt.get<AppStore>().wallet));
|
.registerFactory(() => WalletSeedViewModel(getIt.get<AppStore>().wallet));
|
||||||
|
|
||||||
getIt.registerFactoryParam<WalletSeedPage, VoidCallback, void>(
|
getIt.registerFactoryParam<WalletSeedPage, bool, void>(
|
||||||
(VoidCallback callback, _) => WalletSeedPage(
|
(bool isWalletCreated, _) => WalletSeedPage(
|
||||||
getIt.get<WalletSeedViewModel>(),
|
getIt.get<WalletSeedViewModel>(),
|
||||||
onCloseCallback: callback));
|
isNewWalletCreated: isWalletCreated));
|
||||||
|
|
||||||
getIt
|
getIt
|
||||||
.registerFactory(() => WalletKeysViewModel(getIt.get<AppStore>().wallet));
|
.registerFactory(() => WalletKeysViewModel(getIt.get<AppStore>().wallet));
|
||||||
|
|
|
@ -151,6 +151,7 @@ class S implements WidgetsLocalizations {
|
||||||
String get restore_description_from_keys => "Restore your wallet from generated keystrokes saved from your private keys";
|
String get restore_description_from_keys => "Restore your wallet from generated keystrokes saved from your private keys";
|
||||||
String get restore_description_from_seed => "Restore your wallet from either the 25 word or 13 word combination code";
|
String get restore_description_from_seed => "Restore your wallet from either the 25 word or 13 word combination code";
|
||||||
String get restore_description_from_seed_keys => "Get back your wallet from seed/keys that you've saved to secure place";
|
String get restore_description_from_seed_keys => "Get back your wallet from seed/keys that you've saved to secure place";
|
||||||
|
String get restore_from_date_or_blockheight => "Please enter the date you created this wallet. Or if you know the blockheight, please enter it instead";
|
||||||
String get restore_from_seed_placeholder => "Please enter or paste your seed here";
|
String get restore_from_seed_placeholder => "Please enter or paste your seed here";
|
||||||
String get restore_new_seed => "New seed";
|
String get restore_new_seed => "New seed";
|
||||||
String get restore_next => "Next";
|
String get restore_next => "Next";
|
||||||
|
@ -180,6 +181,7 @@ class S implements WidgetsLocalizations {
|
||||||
String get seed_language_portuguese => "Portuguese";
|
String get seed_language_portuguese => "Portuguese";
|
||||||
String get seed_language_russian => "Russian";
|
String get seed_language_russian => "Russian";
|
||||||
String get seed_language_spanish => "Spanish";
|
String get seed_language_spanish => "Spanish";
|
||||||
|
String get seed_reminder => "Please write these down in case you lose or wipe your phone";
|
||||||
String get seed_share => "Share seed";
|
String get seed_share => "Share seed";
|
||||||
String get seed_title => "Seed";
|
String get seed_title => "Seed";
|
||||||
String get send => "Send";
|
String get send => "Send";
|
||||||
|
@ -789,6 +791,8 @@ class $de extends S {
|
||||||
@override
|
@override
|
||||||
String get choose_account => "Konto auswählen";
|
String get choose_account => "Konto auswählen";
|
||||||
@override
|
@override
|
||||||
|
String get restore_from_date_or_blockheight => "Bitte geben Sie das Datum ein, an dem Sie diese Brieftasche erstellt haben. Oder wenn Sie die Blockhöhe kennen, geben Sie sie stattdessen ein";
|
||||||
|
@override
|
||||||
String get settings_only_trades => "Nur Trades";
|
String get settings_only_trades => "Nur Trades";
|
||||||
@override
|
@override
|
||||||
String get trade_state_to_be_created => "Geschaffen werden";
|
String get trade_state_to_be_created => "Geschaffen werden";
|
||||||
|
@ -869,6 +873,8 @@ class $de extends S {
|
||||||
@override
|
@override
|
||||||
String get settings_support => "Unterstützung";
|
String get settings_support => "Unterstützung";
|
||||||
@override
|
@override
|
||||||
|
String get seed_reminder => "Bitte notieren Sie diese, falls Sie Ihr Telefon verlieren oder abwischen";
|
||||||
|
@override
|
||||||
String get restore_wallet => "Wallet wiederherstellen";
|
String get restore_wallet => "Wallet wiederherstellen";
|
||||||
@override
|
@override
|
||||||
String get ok => "OK";
|
String get ok => "OK";
|
||||||
|
@ -1427,6 +1433,8 @@ class $hi extends S {
|
||||||
@override
|
@override
|
||||||
String get choose_account => "खाता चुनें";
|
String get choose_account => "खाता चुनें";
|
||||||
@override
|
@override
|
||||||
|
String get restore_from_date_or_blockheight => "कृपया इस वॉलेट को बनाने की तिथि दर्ज करें। या यदि आप ब्लॉकचाइट जानते हैं, तो कृपया इसके बजाय इसे दर्ज करें";
|
||||||
|
@override
|
||||||
String get settings_only_trades => "केवल ट्रेड करता है";
|
String get settings_only_trades => "केवल ट्रेड करता है";
|
||||||
@override
|
@override
|
||||||
String get trade_state_to_be_created => "बनाए जाने के लिए";
|
String get trade_state_to_be_created => "बनाए जाने के लिए";
|
||||||
|
@ -1507,6 +1515,8 @@ class $hi extends S {
|
||||||
@override
|
@override
|
||||||
String get settings_support => "समर्थन";
|
String get settings_support => "समर्थन";
|
||||||
@override
|
@override
|
||||||
|
String get seed_reminder => "यदि आप अपना फोन खो देते हैं या मिटा देते हैं तो कृपया इन्हें लिख लें";
|
||||||
|
@override
|
||||||
String get restore_wallet => "वॉलेट को पुनर्स्थापित करें";
|
String get restore_wallet => "वॉलेट को पुनर्स्थापित करें";
|
||||||
@override
|
@override
|
||||||
String get ok => "ठीक है";
|
String get ok => "ठीक है";
|
||||||
|
@ -2065,6 +2075,8 @@ class $ru extends S {
|
||||||
@override
|
@override
|
||||||
String get choose_account => "Выберите аккаунт";
|
String get choose_account => "Выберите аккаунт";
|
||||||
@override
|
@override
|
||||||
|
String get restore_from_date_or_blockheight => "Пожалуйста, введите дату создания кошелька. Или, если вы знаете высоту блока, введите ее значение";
|
||||||
|
@override
|
||||||
String get settings_only_trades => "Сделки";
|
String get settings_only_trades => "Сделки";
|
||||||
@override
|
@override
|
||||||
String get trade_state_to_be_created => "Будет создана";
|
String get trade_state_to_be_created => "Будет создана";
|
||||||
|
@ -2145,6 +2157,8 @@ class $ru extends S {
|
||||||
@override
|
@override
|
||||||
String get settings_support => "Поддержка";
|
String get settings_support => "Поддержка";
|
||||||
@override
|
@override
|
||||||
|
String get seed_reminder => "Пожалуйста, запишите мнемоническую фразу на случай потери или очистки телефона";
|
||||||
|
@override
|
||||||
String get restore_wallet => "Восстановить кошелёк";
|
String get restore_wallet => "Восстановить кошелёк";
|
||||||
@override
|
@override
|
||||||
String get ok => "OK";
|
String get ok => "OK";
|
||||||
|
@ -2703,6 +2717,8 @@ class $ko extends S {
|
||||||
@override
|
@override
|
||||||
String get choose_account => "계정을 선택하십시오";
|
String get choose_account => "계정을 선택하십시오";
|
||||||
@override
|
@override
|
||||||
|
String get restore_from_date_or_blockheight => "이 지갑을 만든 날짜를 입력하세요. 또는 블록 높이를 알고있는 경우 대신 입력하십시오.";
|
||||||
|
@override
|
||||||
String get settings_only_trades => "거래 만";
|
String get settings_only_trades => "거래 만";
|
||||||
@override
|
@override
|
||||||
String get trade_state_to_be_created => "만들려면";
|
String get trade_state_to_be_created => "만들려면";
|
||||||
|
@ -2783,6 +2799,8 @@ class $ko extends S {
|
||||||
@override
|
@override
|
||||||
String get settings_support => "지원하다";
|
String get settings_support => "지원하다";
|
||||||
@override
|
@override
|
||||||
|
String get seed_reminder => "휴대 전화를 분실하거나 닦을 경우를 대비해 적어 두세요.";
|
||||||
|
@override
|
||||||
String get restore_wallet => "월렛 복원";
|
String get restore_wallet => "월렛 복원";
|
||||||
@override
|
@override
|
||||||
String get ok => "승인";
|
String get ok => "승인";
|
||||||
|
@ -3341,6 +3359,8 @@ class $pt extends S {
|
||||||
@override
|
@override
|
||||||
String get choose_account => "Escolha uma conta";
|
String get choose_account => "Escolha uma conta";
|
||||||
@override
|
@override
|
||||||
|
String get restore_from_date_or_blockheight => "Por favor, insira a data em que você criou esta carteira. Ou se você souber a altura do bloco, insira-o";
|
||||||
|
@override
|
||||||
String get settings_only_trades => "Somente trocas";
|
String get settings_only_trades => "Somente trocas";
|
||||||
@override
|
@override
|
||||||
String get trade_state_to_be_created => "A ser criada";
|
String get trade_state_to_be_created => "A ser criada";
|
||||||
|
@ -3421,6 +3441,8 @@ class $pt extends S {
|
||||||
@override
|
@override
|
||||||
String get settings_support => "Suporte";
|
String get settings_support => "Suporte";
|
||||||
@override
|
@override
|
||||||
|
String get seed_reminder => "Anote-os para o caso de perder ou limpar seu telefone";
|
||||||
|
@override
|
||||||
String get restore_wallet => "Restaurar carteira";
|
String get restore_wallet => "Restaurar carteira";
|
||||||
@override
|
@override
|
||||||
String get ok => "Ok";
|
String get ok => "Ok";
|
||||||
|
@ -3979,6 +4001,8 @@ class $uk extends S {
|
||||||
@override
|
@override
|
||||||
String get choose_account => "Оберіть акаунт";
|
String get choose_account => "Оберіть акаунт";
|
||||||
@override
|
@override
|
||||||
|
String get restore_from_date_or_blockheight => "Будь ласка, введіть дату створення гаманця. Або, якщо ви знаєте висоту блоку, введіть її значення";
|
||||||
|
@override
|
||||||
String get settings_only_trades => "Операції";
|
String get settings_only_trades => "Операції";
|
||||||
@override
|
@override
|
||||||
String get trade_state_to_be_created => "Буде створена";
|
String get trade_state_to_be_created => "Буде створена";
|
||||||
|
@ -4059,6 +4083,8 @@ class $uk extends S {
|
||||||
@override
|
@override
|
||||||
String get settings_support => "Підтримка";
|
String get settings_support => "Підтримка";
|
||||||
@override
|
@override
|
||||||
|
String get seed_reminder => "Будь ласка, запишіть мнемонічну фразу на випадок втрати або очищення телефону";
|
||||||
|
@override
|
||||||
String get restore_wallet => "Відновити гаманець";
|
String get restore_wallet => "Відновити гаманець";
|
||||||
@override
|
@override
|
||||||
String get ok => "OK";
|
String get ok => "OK";
|
||||||
|
@ -4617,6 +4643,8 @@ class $ja extends S {
|
||||||
@override
|
@override
|
||||||
String get choose_account => "アカウントを選択";
|
String get choose_account => "アカウントを選択";
|
||||||
@override
|
@override
|
||||||
|
String get restore_from_date_or_blockheight => "このウォレットを作成した日付を入力してください。 または、ブロックの高さがわかっている場合は、代わりに入力してください";
|
||||||
|
@override
|
||||||
String get settings_only_trades => "取引のみ";
|
String get settings_only_trades => "取引のみ";
|
||||||
@override
|
@override
|
||||||
String get trade_state_to_be_created => "作成される";
|
String get trade_state_to_be_created => "作成される";
|
||||||
|
@ -4697,6 +4725,8 @@ class $ja extends S {
|
||||||
@override
|
@override
|
||||||
String get settings_support => "サポート";
|
String get settings_support => "サポート";
|
||||||
@override
|
@override
|
||||||
|
String get seed_reminder => "スマートフォンを紛失したりワイプした場合に備えて、これらを書き留めてください";
|
||||||
|
@override
|
||||||
String get restore_wallet => "ウォレットを復元";
|
String get restore_wallet => "ウォレットを復元";
|
||||||
@override
|
@override
|
||||||
String get ok => "OK";
|
String get ok => "OK";
|
||||||
|
@ -5259,6 +5289,8 @@ class $pl extends S {
|
||||||
@override
|
@override
|
||||||
String get choose_account => "Wybierz konto";
|
String get choose_account => "Wybierz konto";
|
||||||
@override
|
@override
|
||||||
|
String get restore_from_date_or_blockheight => "Wprowadź datę utworzenia tego portfela. Lub jeśli znasz wysokość bloku, wprowadź go zamiast tego";
|
||||||
|
@override
|
||||||
String get settings_only_trades => "Tylko transakcje";
|
String get settings_only_trades => "Tylko transakcje";
|
||||||
@override
|
@override
|
||||||
String get trade_state_to_be_created => "Zostać stworzonym";
|
String get trade_state_to_be_created => "Zostać stworzonym";
|
||||||
|
@ -5339,6 +5371,8 @@ class $pl extends S {
|
||||||
@override
|
@override
|
||||||
String get settings_support => "Wsparcie";
|
String get settings_support => "Wsparcie";
|
||||||
@override
|
@override
|
||||||
|
String get seed_reminder => "Zapisz je na wypadek zgubienia lub wyczyszczenia telefonu";
|
||||||
|
@override
|
||||||
String get restore_wallet => "Przywróć portfel";
|
String get restore_wallet => "Przywróć portfel";
|
||||||
@override
|
@override
|
||||||
String get ok => "Dobrze";
|
String get ok => "Dobrze";
|
||||||
|
@ -5897,6 +5931,8 @@ class $es extends S {
|
||||||
@override
|
@override
|
||||||
String get choose_account => "Elegir cuenta";
|
String get choose_account => "Elegir cuenta";
|
||||||
@override
|
@override
|
||||||
|
String get restore_from_date_or_blockheight => "Ingrese la fecha en que creó esta billetera. O si conoce la altura del bloque, ingréselo en su lugar";
|
||||||
|
@override
|
||||||
String get settings_only_trades => "Solo comercia";
|
String get settings_only_trades => "Solo comercia";
|
||||||
@override
|
@override
|
||||||
String get trade_state_to_be_created => "Ser creado";
|
String get trade_state_to_be_created => "Ser creado";
|
||||||
|
@ -5977,6 +6013,8 @@ class $es extends S {
|
||||||
@override
|
@override
|
||||||
String get settings_support => "Apoyo";
|
String get settings_support => "Apoyo";
|
||||||
@override
|
@override
|
||||||
|
String get seed_reminder => "Anótelos en caso de que pierda o borre su teléfono";
|
||||||
|
@override
|
||||||
String get restore_wallet => "Restaurar billetera";
|
String get restore_wallet => "Restaurar billetera";
|
||||||
@override
|
@override
|
||||||
String get ok => "OK";
|
String get ok => "OK";
|
||||||
|
@ -6535,6 +6573,8 @@ class $nl extends S {
|
||||||
@override
|
@override
|
||||||
String get choose_account => "Kies account";
|
String get choose_account => "Kies account";
|
||||||
@override
|
@override
|
||||||
|
String get restore_from_date_or_blockheight => "Voer de datum in waarop u deze portemonnee heeft gemaakt. Of als u de blokhoogte kent, voer deze dan in";
|
||||||
|
@override
|
||||||
String get settings_only_trades => "Alleen handel";
|
String get settings_only_trades => "Alleen handel";
|
||||||
@override
|
@override
|
||||||
String get trade_state_to_be_created => "Om gecreëerd te worden";
|
String get trade_state_to_be_created => "Om gecreëerd te worden";
|
||||||
|
@ -6615,6 +6655,8 @@ class $nl extends S {
|
||||||
@override
|
@override
|
||||||
String get settings_support => "Ondersteuning";
|
String get settings_support => "Ondersteuning";
|
||||||
@override
|
@override
|
||||||
|
String get seed_reminder => "Schrijf deze op voor het geval u uw telefoon kwijtraakt of veegt";
|
||||||
|
@override
|
||||||
String get restore_wallet => "Portemonnee herstellen";
|
String get restore_wallet => "Portemonnee herstellen";
|
||||||
@override
|
@override
|
||||||
String get ok => "OK";
|
String get ok => "OK";
|
||||||
|
@ -7173,6 +7215,8 @@ class $zh extends S {
|
||||||
@override
|
@override
|
||||||
String get choose_account => "選擇帳號";
|
String get choose_account => "選擇帳號";
|
||||||
@override
|
@override
|
||||||
|
String get restore_from_date_or_blockheight => "請輸入創建此錢包的日期。 或者,如果您知道塊高,請改為輸入";
|
||||||
|
@override
|
||||||
String get settings_only_trades => "只交易";
|
String get settings_only_trades => "只交易";
|
||||||
@override
|
@override
|
||||||
String get trade_state_to_be_created => "待创建";
|
String get trade_state_to_be_created => "待创建";
|
||||||
|
@ -7253,6 +7297,8 @@ class $zh extends S {
|
||||||
@override
|
@override
|
||||||
String get settings_support => "支持";
|
String get settings_support => "支持";
|
||||||
@override
|
@override
|
||||||
|
String get seed_reminder => "請寫下這些,以防丟失或擦拭手機";
|
||||||
|
@override
|
||||||
String get restore_wallet => "恢复钱包";
|
String get restore_wallet => "恢复钱包";
|
||||||
@override
|
@override
|
||||||
String get ok => "好";
|
String get ok => "好";
|
||||||
|
|
|
@ -218,7 +218,7 @@ class Router {
|
||||||
case Routes.seed:
|
case Routes.seed:
|
||||||
return MaterialPageRoute<void>(
|
return MaterialPageRoute<void>(
|
||||||
builder: (_) => getIt.get<WalletSeedPage>(
|
builder: (_) => getIt.get<WalletSeedPage>(
|
||||||
param1: settings.arguments as VoidCallback));
|
param1: settings.arguments as bool));
|
||||||
|
|
||||||
case Routes.restoreWalletFromSeed:
|
case Routes.restoreWalletFromSeed:
|
||||||
final args = settings.arguments as List<dynamic>;
|
final args = settings.arguments as List<dynamic>;
|
||||||
|
|
|
@ -46,7 +46,7 @@ class WalletMenu {
|
||||||
Navigator.of(context).pushNamed(Routes.auth,
|
Navigator.of(context).pushNamed(Routes.auth,
|
||||||
arguments: (bool isAuthenticatedSuccessfully, AuthPageState auth) =>
|
arguments: (bool isAuthenticatedSuccessfully, AuthPageState auth) =>
|
||||||
isAuthenticatedSuccessfully
|
isAuthenticatedSuccessfully
|
||||||
? Navigator.of(auth.context).popAndPushNamed(Routes.seed)
|
? Navigator.of(auth.context).popAndPushNamed(Routes.seed, arguments: false)
|
||||||
: null);
|
: null);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:cake_wallet/di.dart';
|
import 'package:cake_wallet/di.dart';
|
||||||
|
import 'package:cake_wallet/routes.dart';
|
||||||
import 'package:cake_wallet/store/settings_store.dart';
|
import 'package:cake_wallet/store/settings_store.dart';
|
||||||
import 'package:mobx/mobx.dart';
|
import 'package:mobx/mobx.dart';
|
||||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||||
|
@ -53,7 +54,7 @@ class _WalletNameFormState extends State<WalletNameForm> {
|
||||||
_stateReaction ??=
|
_stateReaction ??=
|
||||||
reaction((_) => _walletNewVM.state, (WalletCreationState state) {
|
reaction((_) => _walletNewVM.state, (WalletCreationState state) {
|
||||||
if (state is WalletCreatedSuccessfully) {
|
if (state is WalletCreatedSuccessfully) {
|
||||||
Navigator.of(context).popUntil((route) => route.isFirst);
|
Navigator.of(context).popAndPushNamed(Routes.seed, arguments: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state is WalletCreationFailure) {
|
if (state is WalletCreationFailure) {
|
||||||
|
|
|
@ -171,7 +171,19 @@ class _RestoreFromKeysFromState extends State<RestoreFromKeysFrom> {
|
||||||
onHeightChange: (height) {
|
onHeightChange: (height) {
|
||||||
widget.walletRestorationFromKeysVM.height = height;
|
widget.walletRestorationFromKeysVM.height = height;
|
||||||
print(height);
|
print(height);
|
||||||
})],
|
}),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(left: 40, right: 40, top: 24),
|
||||||
|
child: Text(
|
||||||
|
S.of(context).restore_from_date_or_blockheight,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
color: Theme.of(context).hintColor
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)],
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
bottomSectionPadding: EdgeInsets.only(bottom: 24),
|
bottomSectionPadding: EdgeInsets.only(bottom: 24),
|
||||||
|
|
|
@ -101,13 +101,26 @@ class _RestoreFromSeedDetailsFormState
|
||||||
))
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
if (widget.walletRestorationFromSeedVM.hasRestorationHeight)
|
if (widget.walletRestorationFromSeedVM.hasRestorationHeight) ... [
|
||||||
BlockchainHeightWidget(
|
BlockchainHeightWidget(
|
||||||
key: _blockchainHeightKey,
|
key: _blockchainHeightKey,
|
||||||
onHeightChange: (height) {
|
onHeightChange: (height) {
|
||||||
widget.walletRestorationFromSeedVM.height = height;
|
widget.walletRestorationFromSeedVM.height = height;
|
||||||
print(height);
|
print(height);
|
||||||
}),
|
}),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(left: 40, right: 40, top: 24),
|
||||||
|
child: Text(
|
||||||
|
S.of(context).restore_from_date_or_blockheight,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
color: Theme.of(context).hintColor
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
]
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
bottomSectionPadding: EdgeInsets.only(bottom: 24),
|
bottomSectionPadding: EdgeInsets.only(bottom: 24),
|
||||||
|
|
|
@ -1,17 +1,18 @@
|
||||||
|
import 'package:cake_wallet/di.dart';
|
||||||
|
import 'package:cake_wallet/palette.dart';
|
||||||
|
import 'package:cake_wallet/store/settings_store.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:provider/provider.dart';
|
|
||||||
import 'package:esys_flutter_share/esys_flutter_share.dart';
|
import 'package:esys_flutter_share/esys_flutter_share.dart';
|
||||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||||
import 'package:cake_wallet/generated/i18n.dart';
|
import 'package:cake_wallet/generated/i18n.dart';
|
||||||
import 'package:cake_wallet/src/widgets/primary_button.dart';
|
import 'package:cake_wallet/src/widgets/primary_button.dart';
|
||||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||||
import 'package:cake_wallet/themes.dart';
|
|
||||||
import 'package:cake_wallet/theme_changer.dart';
|
|
||||||
import 'package:cake_wallet/view_model/wallet_seed_view_model.dart';
|
import 'package:cake_wallet/view_model/wallet_seed_view_model.dart';
|
||||||
|
|
||||||
class WalletSeedPage extends BasePage {
|
class WalletSeedPage extends BasePage {
|
||||||
WalletSeedPage(this.walletSeedViewModel, {this.onCloseCallback});
|
WalletSeedPage(this.walletSeedViewModel, {@required this.isNewWalletCreated});
|
||||||
|
|
||||||
static final imageLight = Image.asset('assets/images/crypto_lock_light.png');
|
static final imageLight = Image.asset('assets/images/crypto_lock_light.png');
|
||||||
static final imageDark = Image.asset('assets/images/crypto_lock.png');
|
static final imageDark = Image.asset('assets/images/crypto_lock.png');
|
||||||
|
@ -19,36 +20,38 @@ class WalletSeedPage extends BasePage {
|
||||||
@override
|
@override
|
||||||
String get title => S.current.seed_title;
|
String get title => S.current.seed_title;
|
||||||
|
|
||||||
final VoidCallback onCloseCallback;
|
final bool isNewWalletCreated;
|
||||||
final WalletSeedViewModel walletSeedViewModel;
|
final WalletSeedViewModel walletSeedViewModel;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose(BuildContext context) =>
|
void onClose(BuildContext context) =>
|
||||||
onCloseCallback != null ? onCloseCallback() : Navigator.of(context).pop();
|
isNewWalletCreated
|
||||||
|
? Navigator.of(context).popUntil((route) => route.isFirst)
|
||||||
|
: Navigator.of(context).pop();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget leading(BuildContext context) =>
|
Widget leading(BuildContext context) =>
|
||||||
onCloseCallback != null ? Offstage() : super.leading(context);
|
isNewWalletCreated ? Offstage() : super.leading(context);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget trailing(BuildContext context) {
|
Widget trailing(BuildContext context) {
|
||||||
return onCloseCallback != null
|
return isNewWalletCreated
|
||||||
? GestureDetector(
|
? GestureDetector(
|
||||||
onTap: () => onClose(context),
|
onTap: () => onClose(context),
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 100,
|
width: 100,
|
||||||
height: 42,
|
height: 32,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
margin: EdgeInsets.only(left: 10),
|
margin: EdgeInsets.only(left: 10),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.all(Radius.circular(16)),
|
borderRadius: BorderRadius.all(Radius.circular(16)),
|
||||||
color: Theme.of(context).accentTextTheme.title.color),
|
color: Theme.of(context).accentTextTheme.caption.color),
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).seed_language_next,
|
S.of(context).seed_language_next,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
color: Colors.blue),
|
color: Palette.blueCraiola),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@ -57,9 +60,7 @@ class WalletSeedPage extends BasePage {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget body(BuildContext context) {
|
Widget body(BuildContext context) {
|
||||||
final _themeChanger = Provider.of<ThemeChanger>(context);
|
final image = getIt.get<SettingsStore>().isDarkTheme ? imageDark : imageLight;
|
||||||
final image =
|
|
||||||
_themeChanger.getTheme() == Themes.darkTheme ? imageDark : imageLight;
|
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
padding: EdgeInsets.all(24),
|
padding: EdgeInsets.all(24),
|
||||||
|
@ -85,22 +86,23 @@ class WalletSeedPage extends BasePage {
|
||||||
walletSeedViewModel.name,
|
walletSeedViewModel.name,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w600,
|
||||||
color: Theme.of(context)
|
color: Theme.of(context)
|
||||||
.primaryTextTheme
|
.primaryTextTheme
|
||||||
.title
|
.title
|
||||||
.color),
|
.color),
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.only(top: 20),
|
padding: EdgeInsets.only(top: 20, left: 16, right: 16),
|
||||||
child: Text(
|
child: Text(
|
||||||
walletSeedViewModel.seed,
|
walletSeedViewModel.seed,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
color: Theme.of(context)
|
color: Theme.of(context)
|
||||||
.primaryTextTheme
|
.primaryTextTheme
|
||||||
.caption
|
.overline
|
||||||
.color),
|
.color),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@ -108,6 +110,25 @@ class WalletSeedPage extends BasePage {
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
Column(
|
||||||
|
children: <Widget>[
|
||||||
|
isNewWalletCreated
|
||||||
|
? Padding(
|
||||||
|
padding: EdgeInsets.only(bottom: 52, left: 43, right: 43),
|
||||||
|
child: Text(
|
||||||
|
S.of(context).seed_reminder,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
color: Theme.of(context)
|
||||||
|
.primaryTextTheme
|
||||||
|
.overline
|
||||||
|
.color
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: Offstage(),
|
||||||
Row(
|
Row(
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
|
@ -141,12 +162,14 @@ class WalletSeedPage extends BasePage {
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
text: S.of(context).copy,
|
text: S.of(context).copy,
|
||||||
color: Colors.blue,
|
color: Palette.blueCraiola,
|
||||||
textColor: Colors.white)),
|
textColor: Colors.white)),
|
||||||
))
|
))
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
))
|
))
|
||||||
],
|
],
|
||||||
));
|
));
|
||||||
|
|
|
@ -116,7 +116,7 @@ class WalletMenu {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auth.close();
|
auth.close();
|
||||||
await Navigator.of(context).pushNamed(Routes.seed);
|
await Navigator.of(context).pushNamed(Routes.seed, arguments: false);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
|
|
@ -168,8 +168,10 @@
|
||||||
"restore_bitcoin_description_from_seed" : "Stellen Sie Ihre Brieftasche aus dem 12-Wort-Kombinationscode wieder her",
|
"restore_bitcoin_description_from_seed" : "Stellen Sie Ihre Brieftasche aus dem 12-Wort-Kombinationscode wieder her",
|
||||||
"restore_bitcoin_description_from_keys" : "Stellen Sie Ihre Brieftasche aus der generierten WIF-Zeichenfolge aus Ihren privaten Schlüsseln wieder her",
|
"restore_bitcoin_description_from_keys" : "Stellen Sie Ihre Brieftasche aus der generierten WIF-Zeichenfolge aus Ihren privaten Schlüsseln wieder her",
|
||||||
"restore_bitcoin_title_from_keys" : "Aus WIF wiederherstellen",
|
"restore_bitcoin_title_from_keys" : "Aus WIF wiederherstellen",
|
||||||
|
"restore_from_date_or_blockheight" : "Bitte geben Sie das Datum ein, an dem Sie diese Brieftasche erstellt haben. Oder wenn Sie die Blockhöhe kennen, geben Sie sie stattdessen ein",
|
||||||
|
|
||||||
|
|
||||||
|
"seed_reminder" : "Bitte notieren Sie diese, falls Sie Ihr Telefon verlieren oder abwischen",
|
||||||
"seed_title" : "Seed",
|
"seed_title" : "Seed",
|
||||||
"seed_share" : "Teilen Sie Seed",
|
"seed_share" : "Teilen Sie Seed",
|
||||||
"copy" : "Kopieren",
|
"copy" : "Kopieren",
|
||||||
|
|
|
@ -168,8 +168,10 @@
|
||||||
"restore_bitcoin_description_from_seed" : "Restore your wallet from 12 word combination code",
|
"restore_bitcoin_description_from_seed" : "Restore your wallet from 12 word combination code",
|
||||||
"restore_bitcoin_description_from_keys" : "Restore your wallet from generated WIF string from your private keys",
|
"restore_bitcoin_description_from_keys" : "Restore your wallet from generated WIF string from your private keys",
|
||||||
"restore_bitcoin_title_from_keys" : "Restore from WIF",
|
"restore_bitcoin_title_from_keys" : "Restore from WIF",
|
||||||
|
"restore_from_date_or_blockheight" : "Please enter the date you created this wallet. Or if you know the blockheight, please enter it instead",
|
||||||
|
|
||||||
|
|
||||||
|
"seed_reminder" : "Please write these down in case you lose or wipe your phone",
|
||||||
"seed_title" : "Seed",
|
"seed_title" : "Seed",
|
||||||
"seed_share" : "Share seed",
|
"seed_share" : "Share seed",
|
||||||
"copy" : "Copy",
|
"copy" : "Copy",
|
||||||
|
|
|
@ -168,8 +168,10 @@
|
||||||
"restore_bitcoin_description_from_seed" : "Restaure su billetera a partir del código de combinación de 12 palabras",
|
"restore_bitcoin_description_from_seed" : "Restaure su billetera a partir del código de combinación de 12 palabras",
|
||||||
"restore_bitcoin_description_from_keys" : "Restaure su billetera a partir de una cadena WIF generada a partir de sus claves privadas",
|
"restore_bitcoin_description_from_keys" : "Restaure su billetera a partir de una cadena WIF generada a partir de sus claves privadas",
|
||||||
"restore_bitcoin_title_from_keys" : "Restaurar desde WIF",
|
"restore_bitcoin_title_from_keys" : "Restaurar desde WIF",
|
||||||
|
"restore_from_date_or_blockheight" : "Ingrese la fecha en que creó esta billetera. O si conoce la altura del bloque, ingréselo en su lugar",
|
||||||
|
|
||||||
|
|
||||||
|
"seed_reminder" : "Anótelos en caso de que pierda o borre su teléfono",
|
||||||
"seed_title" : "Semilla",
|
"seed_title" : "Semilla",
|
||||||
"seed_share" : "Compartir semillas",
|
"seed_share" : "Compartir semillas",
|
||||||
"copy" : "Dupdo",
|
"copy" : "Dupdo",
|
||||||
|
|
|
@ -168,8 +168,10 @@
|
||||||
"restore_bitcoin_description_from_seed" : "12 शब्द संयोजन कोड से अपने वॉलेट को पुनर्स्थापित करें",
|
"restore_bitcoin_description_from_seed" : "12 शब्द संयोजन कोड से अपने वॉलेट को पुनर्स्थापित करें",
|
||||||
"restore_bitcoin_description_from_keys" : "अपने निजी कुंजी से उत्पन्न WIF स्ट्रिंग से अपने वॉलेट को पुनर्स्थापित करें",
|
"restore_bitcoin_description_from_keys" : "अपने निजी कुंजी से उत्पन्न WIF स्ट्रिंग से अपने वॉलेट को पुनर्स्थापित करें",
|
||||||
"restore_bitcoin_title_from_keys" : "WIF से पुनर्स्थापित करें",
|
"restore_bitcoin_title_from_keys" : "WIF से पुनर्स्थापित करें",
|
||||||
|
"restore_from_date_or_blockheight" : "कृपया इस वॉलेट को बनाने की तिथि दर्ज करें। या यदि आप ब्लॉकचाइट जानते हैं, तो कृपया इसके बजाय इसे दर्ज करें",
|
||||||
|
|
||||||
|
|
||||||
|
"seed_reminder" : "यदि आप अपना फोन खो देते हैं या मिटा देते हैं तो कृपया इन्हें लिख लें",
|
||||||
"seed_title" : "बीज",
|
"seed_title" : "बीज",
|
||||||
"seed_share" : "बीज साझा करें",
|
"seed_share" : "बीज साझा करें",
|
||||||
"copy" : "प्रतिलिपि",
|
"copy" : "प्रतिलिपि",
|
||||||
|
|
|
@ -168,8 +168,10 @@
|
||||||
"restore_bitcoin_description_from_seed" : "12ワードの組み合わせコードからウォレットを復元する",
|
"restore_bitcoin_description_from_seed" : "12ワードの組み合わせコードからウォレットを復元する",
|
||||||
"restore_bitcoin_description_from_keys" : "秘密鍵から生成されたWIF文字列からウォレットを復元します",
|
"restore_bitcoin_description_from_keys" : "秘密鍵から生成されたWIF文字列からウォレットを復元します",
|
||||||
"restore_bitcoin_title_from_keys" : "WIFから復元",
|
"restore_bitcoin_title_from_keys" : "WIFから復元",
|
||||||
|
"restore_from_date_or_blockheight" : "このウォレットを作成した日付を入力してください。 または、ブロックの高さがわかっている場合は、代わりに入力してください",
|
||||||
|
|
||||||
|
|
||||||
|
"seed_reminder" : "スマートフォンを紛失したりワイプした場合に備えて、これらを書き留めてください",
|
||||||
"seed_title" : "シード",
|
"seed_title" : "シード",
|
||||||
"seed_share" : "シードを共有する",
|
"seed_share" : "シードを共有する",
|
||||||
"copy" : "コピー",
|
"copy" : "コピー",
|
||||||
|
|
|
@ -168,8 +168,10 @@
|
||||||
"restore_bitcoin_description_from_seed" : "12 단어 조합 코드에서 지갑 복원",
|
"restore_bitcoin_description_from_seed" : "12 단어 조합 코드에서 지갑 복원",
|
||||||
"restore_bitcoin_description_from_keys" : "개인 키에서 생성 된 WIF 문자열에서 지갑 복원",
|
"restore_bitcoin_description_from_keys" : "개인 키에서 생성 된 WIF 문자열에서 지갑 복원",
|
||||||
"restore_bitcoin_title_from_keys" : "WIF에서 복원",
|
"restore_bitcoin_title_from_keys" : "WIF에서 복원",
|
||||||
|
"restore_from_date_or_blockheight" : "이 지갑을 만든 날짜를 입력하세요. 또는 블록 높이를 알고있는 경우 대신 입력하십시오.",
|
||||||
|
|
||||||
|
|
||||||
|
"seed_reminder" : "휴대 전화를 분실하거나 닦을 경우를 대비해 적어 두세요.",
|
||||||
"seed_title" : "씨",
|
"seed_title" : "씨",
|
||||||
"seed_share" : "시드 공유",
|
"seed_share" : "시드 공유",
|
||||||
"copy" : "부",
|
"copy" : "부",
|
||||||
|
|
|
@ -168,8 +168,10 @@
|
||||||
"restore_bitcoin_description_from_seed" : "Herstel uw portemonnee met een combinatiecode van 12 woorden",
|
"restore_bitcoin_description_from_seed" : "Herstel uw portemonnee met een combinatiecode van 12 woorden",
|
||||||
"restore_bitcoin_description_from_keys" : "Herstel uw portemonnee van de gegenereerde WIF-string van uw privésleutels",
|
"restore_bitcoin_description_from_keys" : "Herstel uw portemonnee van de gegenereerde WIF-string van uw privésleutels",
|
||||||
"restore_bitcoin_title_from_keys" : "Herstel van WIF",
|
"restore_bitcoin_title_from_keys" : "Herstel van WIF",
|
||||||
|
"restore_from_date_or_blockheight" : "Voer de datum in waarop u deze portemonnee heeft gemaakt. Of als u de blokhoogte kent, voer deze dan in",
|
||||||
|
|
||||||
|
|
||||||
|
"seed_reminder" : "Schrijf deze op voor het geval u uw telefoon kwijtraakt of veegt",
|
||||||
"seed_title" : "Zaad",
|
"seed_title" : "Zaad",
|
||||||
"seed_share" : "Deel zaad",
|
"seed_share" : "Deel zaad",
|
||||||
"copy" : "Kopiëren",
|
"copy" : "Kopiëren",
|
||||||
|
|
|
@ -168,8 +168,10 @@
|
||||||
"restore_bitcoin_description_from_seed" : "Przywróć swój portfel z kodu złożonego z 12 słów",
|
"restore_bitcoin_description_from_seed" : "Przywróć swój portfel z kodu złożonego z 12 słów",
|
||||||
"restore_bitcoin_description_from_keys" : "Przywróć swój portfel z wygenerowanego ciągu WIF z kluczy prywatnych",
|
"restore_bitcoin_description_from_keys" : "Przywróć swój portfel z wygenerowanego ciągu WIF z kluczy prywatnych",
|
||||||
"restore_bitcoin_title_from_keys" : "Przywróć z WIF",
|
"restore_bitcoin_title_from_keys" : "Przywróć z WIF",
|
||||||
|
"restore_from_date_or_blockheight" : "Wprowadź datę utworzenia tego portfela. Lub jeśli znasz wysokość bloku, wprowadź go zamiast tego",
|
||||||
|
|
||||||
|
|
||||||
|
"seed_reminder" : "Zapisz je na wypadek zgubienia lub wyczyszczenia telefonu",
|
||||||
"seed_title" : "Ziarno",
|
"seed_title" : "Ziarno",
|
||||||
"seed_share" : "Udostępnij ziarno",
|
"seed_share" : "Udostępnij ziarno",
|
||||||
"copy" : "Kopiuj",
|
"copy" : "Kopiuj",
|
||||||
|
|
|
@ -168,8 +168,10 @@
|
||||||
"restore_bitcoin_description_from_seed" : "Restaure sua carteira a partir de um código de combinação de 12 palavras",
|
"restore_bitcoin_description_from_seed" : "Restaure sua carteira a partir de um código de combinação de 12 palavras",
|
||||||
"restore_bitcoin_description_from_keys" : "Restaure sua carteira a partir da string WIF gerada de suas chaves privadas",
|
"restore_bitcoin_description_from_keys" : "Restaure sua carteira a partir da string WIF gerada de suas chaves privadas",
|
||||||
"restore_bitcoin_title_from_keys" : "Restaurar de WIF",
|
"restore_bitcoin_title_from_keys" : "Restaurar de WIF",
|
||||||
|
"restore_from_date_or_blockheight" : "Por favor, insira a data em que você criou esta carteira. Ou se você souber a altura do bloco, insira-o",
|
||||||
|
|
||||||
|
|
||||||
|
"seed_reminder" : "Anote-os para o caso de perder ou limpar seu telefone",
|
||||||
"seed_title" : "Semente",
|
"seed_title" : "Semente",
|
||||||
"seed_share" : "Compartilhar semente",
|
"seed_share" : "Compartilhar semente",
|
||||||
"copy" : "Copiar",
|
"copy" : "Copiar",
|
||||||
|
|
|
@ -168,8 +168,10 @@
|
||||||
"restore_bitcoin_description_from_seed" : "Вы можете восстановить кошелёк используя 12-ти значную мнемоническую фразу",
|
"restore_bitcoin_description_from_seed" : "Вы можете восстановить кошелёк используя 12-ти значную мнемоническую фразу",
|
||||||
"restore_bitcoin_description_from_keys" : "Вы можете восстановить кошелёк с помощью WIF",
|
"restore_bitcoin_description_from_keys" : "Вы можете восстановить кошелёк с помощью WIF",
|
||||||
"restore_bitcoin_title_from_keys" : "Восстановить с помощью WIF",
|
"restore_bitcoin_title_from_keys" : "Восстановить с помощью WIF",
|
||||||
|
"restore_from_date_or_blockheight" : "Пожалуйста, введите дату создания кошелька. Или, если вы знаете высоту блока, введите ее значение",
|
||||||
|
|
||||||
|
|
||||||
|
"seed_reminder" : "Пожалуйста, запишите мнемоническую фразу на случай потери или очистки телефона",
|
||||||
"seed_title" : "Мнемоническая фраза",
|
"seed_title" : "Мнемоническая фраза",
|
||||||
"seed_share" : "Поделиться мнемонической фразой",
|
"seed_share" : "Поделиться мнемонической фразой",
|
||||||
"copy" : "Скопировать",
|
"copy" : "Скопировать",
|
||||||
|
|
|
@ -168,8 +168,10 @@
|
||||||
"restore_bitcoin_description_from_seed" : "Ви можете відновити гаманець використовуючи 12-ти слівну мнемонічну фразу",
|
"restore_bitcoin_description_from_seed" : "Ви можете відновити гаманець використовуючи 12-ти слівну мнемонічну фразу",
|
||||||
"restore_bitcoin_description_from_keys" : "Ви можете відновити гаманець за допомогою WIF",
|
"restore_bitcoin_description_from_keys" : "Ви можете відновити гаманець за допомогою WIF",
|
||||||
"restore_bitcoin_title_from_keys" : "Відновити за допомогою WIF",
|
"restore_bitcoin_title_from_keys" : "Відновити за допомогою WIF",
|
||||||
|
"restore_from_date_or_blockheight" : "Будь ласка, введіть дату створення гаманця. Або, якщо ви знаєте висоту блоку, введіть її значення",
|
||||||
|
|
||||||
|
|
||||||
|
"seed_reminder" : "Будь ласка, запишіть мнемонічну фразу на випадок втрати або очищення телефону",
|
||||||
"seed_title" : "Мнемонічна фраза",
|
"seed_title" : "Мнемонічна фраза",
|
||||||
"seed_share" : "Поділитися мнемонічною фразою",
|
"seed_share" : "Поділитися мнемонічною фразою",
|
||||||
"copy" : "Скопіювати",
|
"copy" : "Скопіювати",
|
||||||
|
|
|
@ -168,8 +168,10 @@
|
||||||
"restore_bitcoin_description_from_seed" : "從12個單詞的組合碼恢復您的錢包",
|
"restore_bitcoin_description_from_seed" : "從12個單詞的組合碼恢復您的錢包",
|
||||||
"restore_bitcoin_description_from_keys" : "從私鑰中生成的WIF字符串還原您的錢包",
|
"restore_bitcoin_description_from_keys" : "從私鑰中生成的WIF字符串還原您的錢包",
|
||||||
"restore_bitcoin_title_from_keys" : "從WIF還原",
|
"restore_bitcoin_title_from_keys" : "從WIF還原",
|
||||||
|
"restore_from_date_or_blockheight" : "請輸入創建此錢包的日期。 或者,如果您知道塊高,請改為輸入",
|
||||||
|
|
||||||
|
|
||||||
|
"seed_reminder" : "請寫下這些,以防丟失或擦拭手機",
|
||||||
"seed_title" : "种子",
|
"seed_title" : "种子",
|
||||||
"seed_share" : "分享种子",
|
"seed_share" : "分享种子",
|
||||||
"copy" : "复制",
|
"copy" : "复制",
|
||||||
|
|
Loading…
Reference in a new issue