mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-01-03 09:29:48 +00:00
merges
This commit is contained in:
commit
dcebe3ee66
41 changed files with 393 additions and 103 deletions
BIN
assets/images/live_support.png
Normal file
BIN
assets/images/live_support.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
assets/images/more_links.png
Normal file
BIN
assets/images/more_links.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
BIN
assets/images/wallet_guides.png
Normal file
BIN
assets/images/wallet_guides.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
|
@ -1,8 +1,8 @@
|
||||||
|
import 'package:hive/hive.dart';
|
||||||
|
import 'package:cw_core/wallet_type.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:cw_core/address_info.dart';
|
import 'package:cw_core/address_info.dart';
|
||||||
import 'package:cw_core/hive_type_ids.dart';
|
import 'package:cw_core/hive_type_ids.dart';
|
||||||
import 'package:cw_core/wallet_type.dart';
|
|
||||||
import 'package:hive/hive.dart';
|
|
||||||
|
|
||||||
part 'wallet_info.g.dart';
|
part 'wallet_info.g.dart';
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import 'dart:io';
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
import 'package:cw_core/crypto_currency.dart';
|
import 'package:cw_core/crypto_currency.dart';
|
||||||
|
import 'package:cw_core/cake_hive.dart';
|
||||||
import 'package:cw_core/node.dart';
|
import 'package:cw_core/node.dart';
|
||||||
import 'package:cw_core/pathForWallet.dart';
|
import 'package:cw_core/pathForWallet.dart';
|
||||||
import 'package:cw_core/pending_transaction.dart';
|
import 'package:cw_core/pending_transaction.dart';
|
||||||
|
@ -61,14 +62,11 @@ abstract class EthereumWalletBase
|
||||||
{CryptoCurrency.eth: initialBalance ?? ERC20Balance(BigInt.zero)}),
|
{CryptoCurrency.eth: initialBalance ?? ERC20Balance(BigInt.zero)}),
|
||||||
super(walletInfo) {
|
super(walletInfo) {
|
||||||
this.walletInfo = walletInfo;
|
this.walletInfo = walletInfo;
|
||||||
transactionHistory = EthereumTransactionHistory(
|
transactionHistory = EthereumTransactionHistory(walletInfo: walletInfo, password: password, encryptionFileUtils: encryptionFileUtils,
|
||||||
walletInfo: walletInfo,
|
);
|
||||||
password: password,
|
|
||||||
encryptionFileUtils: encryptionFileUtils,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!Hive.isAdapterRegistered(Erc20Token.typeId)) {
|
if (!CakeHive.isAdapterRegistered(Erc20Token.typeId)) {
|
||||||
Hive.registerAdapter(Erc20TokenAdapter());
|
CakeHive.registerAdapter(Erc20TokenAdapter());
|
||||||
}
|
}
|
||||||
|
|
||||||
_sharedPrefs.complete(SharedPreferences.getInstance());
|
_sharedPrefs.complete(SharedPreferences.getInstance());
|
||||||
|
@ -107,7 +105,7 @@ abstract class EthereumWalletBase
|
||||||
Completer<SharedPreferences> _sharedPrefs = Completer();
|
Completer<SharedPreferences> _sharedPrefs = Completer();
|
||||||
|
|
||||||
Future<void> init() async {
|
Future<void> init() async {
|
||||||
erc20TokensBox = await Hive.openBox<Erc20Token>(Erc20Token.boxName);
|
erc20TokensBox = await CakeHive.openBox<Erc20Token>(Erc20Token.boxName);
|
||||||
await walletAddresses.init();
|
await walletAddresses.init();
|
||||||
await transactionHistory.init();
|
await transactionHistory.init();
|
||||||
_ethPrivateKey = await getPrivateKey(
|
_ethPrivateKey = await getPrivateKey(
|
||||||
|
|
17
lib/di.dart
17
lib/di.dart
|
@ -1,6 +1,4 @@
|
||||||
|
|
||||||
import 'package:cake_wallet/buy/onramper/onramper_buy_provider.dart';
|
import 'package:cake_wallet/buy/onramper/onramper_buy_provider.dart';
|
||||||
import 'package:cake_wallet/core/yat_service.dart';
|
|
||||||
import 'package:cake_wallet/entities/parse_address_from_domain.dart';
|
import 'package:cake_wallet/entities/parse_address_from_domain.dart';
|
||||||
import 'package:cake_wallet/entities/preferences_key.dart';
|
import 'package:cake_wallet/entities/preferences_key.dart';
|
||||||
import 'package:cake_wallet/anonpay/anonpay_api.dart';
|
import 'package:cake_wallet/anonpay/anonpay_api.dart';
|
||||||
|
@ -38,20 +36,22 @@ import 'package:cake_wallet/src/screens/ionia/cards/ionia_custom_redeem_page.dar
|
||||||
import 'package:cake_wallet/src/screens/ionia/cards/ionia_gift_card_detail_page.dart';
|
import 'package:cake_wallet/src/screens/ionia/cards/ionia_gift_card_detail_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/ionia/cards/ionia_more_options_page.dart';
|
import 'package:cake_wallet/src/screens/ionia/cards/ionia_more_options_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/settings/connection_sync_page.dart';
|
import 'package:cake_wallet/src/screens/settings/connection_sync_page.dart';
|
||||||
|
import 'package:cake_wallet/src/screens/support_chat/support_chat_page.dart';
|
||||||
|
import 'package:cake_wallet/src/screens/support_other_links/support_other_links_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/wallet_unlock/wallet_unlock_arguments.dart';
|
import 'package:cake_wallet/src/screens/wallet_unlock/wallet_unlock_arguments.dart';
|
||||||
import 'package:cake_wallet/themes/theme_list.dart';
|
|
||||||
import 'package:cake_wallet/utils/payment_request.dart';
|
|
||||||
import 'package:cake_wallet/utils/responsive_layout_util.dart';
|
|
||||||
import 'package:cake_wallet/view_model/dashboard/desktop_sidebar_view_model.dart';
|
|
||||||
import 'package:cake_wallet/src/screens/setup_2fa/modify_2fa_page.dart';
|
import 'package:cake_wallet/src/screens/setup_2fa/modify_2fa_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_qr_page.dart';
|
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_qr_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa.dart';
|
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa.dart';
|
||||||
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_enter_code_page.dart';
|
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_enter_code_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/wallet/wallet_edit_page.dart';
|
import 'package:cake_wallet/src/screens/wallet/wallet_edit_page.dart';
|
||||||
|
import 'package:cake_wallet/themes/theme_list.dart';
|
||||||
import 'package:cake_wallet/utils/device_info.dart';
|
import 'package:cake_wallet/utils/device_info.dart';
|
||||||
import 'package:cake_wallet/store/anonpay/anonpay_transactions_store.dart';
|
import 'package:cake_wallet/store/anonpay/anonpay_transactions_store.dart';
|
||||||
|
import 'package:cake_wallet/utils/payment_request.dart';
|
||||||
|
import 'package:cake_wallet/utils/responsive_layout_util.dart';
|
||||||
import 'package:cake_wallet/view_model/anon_invoice_page_view_model.dart';
|
import 'package:cake_wallet/view_model/anon_invoice_page_view_model.dart';
|
||||||
import 'package:cake_wallet/view_model/anonpay_details_view_model.dart';
|
import 'package:cake_wallet/view_model/anonpay_details_view_model.dart';
|
||||||
|
import 'package:cake_wallet/view_model/dashboard/desktop_sidebar_view_model.dart';
|
||||||
import 'package:cake_wallet/view_model/dashboard/home_settings_view_model.dart';
|
import 'package:cake_wallet/view_model/dashboard/home_settings_view_model.dart';
|
||||||
import 'package:cake_wallet/view_model/dashboard/market_place_view_model.dart';
|
import 'package:cake_wallet/view_model/dashboard/market_place_view_model.dart';
|
||||||
import 'package:cake_wallet/view_model/dashboard/receive_option_view_model.dart';
|
import 'package:cake_wallet/view_model/dashboard/receive_option_view_model.dart';
|
||||||
|
@ -864,6 +864,11 @@ Future<void> setup({
|
||||||
|
|
||||||
getIt.registerFactory(() => SupportPage(getIt.get<SupportViewModel>()));
|
getIt.registerFactory(() => SupportPage(getIt.get<SupportViewModel>()));
|
||||||
|
|
||||||
|
getIt.registerFactory(() =>
|
||||||
|
SupportChatPage(getIt.get<SupportViewModel>(), secureStorage: getIt.get<SecureStorage>()));
|
||||||
|
|
||||||
|
getIt.registerFactory(() => SupportOtherLinksPage(getIt.get<SupportViewModel>()));
|
||||||
|
|
||||||
getIt.registerFactory(() {
|
getIt.registerFactory(() {
|
||||||
final wallet = getIt.get<AppStore>().wallet;
|
final wallet = getIt.get<AppStore>().wallet;
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,8 @@ import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_qr_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa.dart';
|
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa.dart';
|
||||||
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_enter_code_page.dart';
|
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_enter_code_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/support/support_page.dart';
|
import 'package:cake_wallet/src/screens/support/support_page.dart';
|
||||||
|
import 'package:cake_wallet/src/screens/support_chat/support_chat_page.dart';
|
||||||
|
import 'package:cake_wallet/src/screens/support_other_links/support_other_links_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_details_page.dart';
|
import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_details_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_list_page.dart';
|
import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_list_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/wallet_unlock/wallet_unlock_arguments.dart';
|
import 'package:cake_wallet/src/screens/wallet_unlock/wallet_unlock_arguments.dart';
|
||||||
|
@ -468,9 +470,16 @@ Route<dynamic> createRoute(RouteSettings settings) {
|
||||||
|
|
||||||
case Routes.support:
|
case Routes.support:
|
||||||
return CupertinoPageRoute<void>(
|
return CupertinoPageRoute<void>(
|
||||||
fullscreenDialog: true,
|
|
||||||
builder: (_) => getIt.get<SupportPage>());
|
builder: (_) => getIt.get<SupportPage>());
|
||||||
|
|
||||||
|
case Routes.supportLiveChat:
|
||||||
|
return CupertinoPageRoute<void>(
|
||||||
|
builder: (_) => getIt.get<SupportChatPage>());
|
||||||
|
|
||||||
|
case Routes.supportOtherLinks:
|
||||||
|
return CupertinoPageRoute<void>(
|
||||||
|
fullscreenDialog: true,
|
||||||
|
builder: (_) => getIt.get<SupportOtherLinksPage>());
|
||||||
case Routes.unspentCoinsList:
|
case Routes.unspentCoinsList:
|
||||||
return MaterialPageRoute<void>(
|
return MaterialPageRoute<void>(
|
||||||
builder: (_) => getIt.get<UnspentCoinsListPage>());
|
builder: (_) => getIt.get<UnspentCoinsListPage>());
|
||||||
|
|
|
@ -47,6 +47,8 @@ class Routes {
|
||||||
static const editBackupPassword = '/edit_backup_passowrd';
|
static const editBackupPassword = '/edit_backup_passowrd';
|
||||||
static const restoreFromBackup = '/restore_from_backup';
|
static const restoreFromBackup = '/restore_from_backup';
|
||||||
static const support = '/support';
|
static const support = '/support';
|
||||||
|
static const supportLiveChat = '/support/live_chat';
|
||||||
|
static const supportOtherLinks = '/support/other';
|
||||||
static const orderDetails = '/order_details';
|
static const orderDetails = '/order_details';
|
||||||
static const preOrder = '/pre_order';
|
static const preOrder = '/pre_order';
|
||||||
static const buyWebView = '/buy_web_view';
|
static const buyWebView = '/buy_web_view';
|
||||||
|
@ -83,7 +85,6 @@ class Routes {
|
||||||
static const anonPayInvoicePage = '/anon_pay_invoice_page';
|
static const anonPayInvoicePage = '/anon_pay_invoice_page';
|
||||||
static const anonPayReceivePage = '/anon_pay_receive_page';
|
static const anonPayReceivePage = '/anon_pay_receive_page';
|
||||||
static const anonPayDetailsPage = '/anon_pay_details_page';
|
static const anonPayDetailsPage = '/anon_pay_details_page';
|
||||||
static const payfuraPage = '/pay_fura_page';
|
|
||||||
static const desktop_actions = '/desktop_actions';
|
static const desktop_actions = '/desktop_actions';
|
||||||
static const transactionsPage = '/transactions_page';
|
static const transactionsPage = '/transactions_page';
|
||||||
static const setup_2faPage = '/setup_2fa_page';
|
static const setup_2faPage = '/setup_2fa_page';
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import 'package:cake_wallet/themes/extensions/keyboard_theme.dart';
|
import 'package:cake_wallet/themes/extensions/keyboard_theme.dart';
|
||||||
import 'package:cake_wallet/themes/extensions/keyboard_theme.dart';
|
|
||||||
import 'package:cake_wallet/di.dart';
|
import 'package:cake_wallet/di.dart';
|
||||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/monero_accounts/monero_account_list_page.dart';
|
import 'package:cake_wallet/src/screens/monero_accounts/monero_account_list_page.dart';
|
||||||
|
|
|
@ -212,7 +212,7 @@ class _WalletNameFormState extends State<WalletNameForm> {
|
||||||
fontSize: 18.0,
|
fontSize: 18.0,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
color: Theme.of(context).extension<NewWalletTheme>()!.hintTextColor),
|
color: Theme.of(context).extension<NewWalletTheme>()!.hintTextColor),
|
||||||
hintText: S.of(context).repeate_wallet_password,
|
hintText: S.of(context).repeat_wallet_password,
|
||||||
focusedBorder: UnderlineInputBorder(
|
focusedBorder: UnderlineInputBorder(
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: Theme.of(context).extension<NewWalletTheme>()!.underlineColor,
|
color: Theme.of(context).extension<NewWalletTheme>()!.underlineColor,
|
||||||
|
|
|
@ -152,7 +152,7 @@ class WalletRestoreFromKeysFromState extends State<WalletRestoreFromKeysFrom> {
|
||||||
padding: EdgeInsets.only(top: 20.0),
|
padding: EdgeInsets.only(top: 20.0),
|
||||||
child: BaseTextFormField(
|
child: BaseTextFormField(
|
||||||
controller: repeatedPasswordTextEditingController,
|
controller: repeatedPasswordTextEditingController,
|
||||||
hintText: S.of(context).repeate_wallet_password,
|
hintText: S.of(context).repeat_wallet_password,
|
||||||
obscureText: true))],
|
obscureText: true))],
|
||||||
Container(height: 20),
|
Container(height: 20),
|
||||||
_restoreFromKeysFormFields(),
|
_restoreFromKeysFormFields(),
|
||||||
|
|
|
@ -148,7 +148,7 @@ class WalletRestoreFromSeedFormState extends State<WalletRestoreFromSeedForm> {
|
||||||
obscureText: true),
|
obscureText: true),
|
||||||
BaseTextFormField(
|
BaseTextFormField(
|
||||||
controller: repeatedPasswordTextEditingController,
|
controller: repeatedPasswordTextEditingController,
|
||||||
hintText: S.of(context).repeate_wallet_password,
|
hintText: S.of(context).repeat_wallet_password,
|
||||||
obscureText: true)],
|
obscureText: true)],
|
||||||
if (widget.displayLanguageSelector)
|
if (widget.displayLanguageSelector)
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
|
|
|
@ -1,51 +1,78 @@
|
||||||
import 'package:cake_wallet/src/screens/settings/widgets/settings_cell_with_arrow.dart';
|
import 'package:cake_wallet/generated/i18n.dart';
|
||||||
import 'package:cake_wallet/src/screens/settings/widgets/settings_link_provider_cell.dart';
|
import 'package:cake_wallet/routes.dart';
|
||||||
import 'package:cake_wallet/src/widgets/standard_list.dart';
|
import 'package:cake_wallet/src/screens/support/widgets/support_tiles.dart';
|
||||||
import 'package:cake_wallet/themes/extensions/support_page_theme.dart';
|
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||||
import 'package:cake_wallet/view_model/settings/link_list_item.dart';
|
import 'package:cake_wallet/utils/device_info.dart';
|
||||||
import 'package:cake_wallet/view_model/settings/regular_list_item.dart';
|
|
||||||
import 'package:cake_wallet/view_model/support_view_model.dart';
|
import 'package:cake_wallet/view_model/support_view_model.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import 'package:cake_wallet/generated/i18n.dart';
|
|
||||||
|
|
||||||
class SupportPage extends BasePage {
|
class SupportPage extends BasePage {
|
||||||
SupportPage(this.supportViewModel);
|
SupportPage(this.supportViewModel);
|
||||||
|
|
||||||
final SupportViewModel supportViewModel;
|
final SupportViewModel supportViewModel;
|
||||||
|
|
||||||
|
final imageLiveSupport = Image.asset('assets/images/live_support.png');
|
||||||
|
final imageWalletGuides = Image.asset('assets/images/wallet_guides.png');
|
||||||
|
final imageMoreLinks = Image.asset('assets/images/more_links.png');
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get title => S.current.settings_support;
|
String get title => S.current.settings_support;
|
||||||
|
|
||||||
|
@override
|
||||||
|
AppBarStyle get appBarStyle => AppBarStyle.regular;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget body(BuildContext context) {
|
Widget body(BuildContext context) {
|
||||||
final iconColor = Theme.of(context).extension<SupportPageTheme>()!.iconColor;
|
return Container(
|
||||||
// FIX-ME: Added `context` it was not used here before, maby bug ?
|
child: Center(
|
||||||
return Center(
|
child: ConstrainedBox(
|
||||||
child: ConstrainedBox(
|
constraints: BoxConstraints(maxWidth: 330),
|
||||||
constraints: BoxConstraints(maxWidth: 500),
|
child: Column(
|
||||||
child: SectionStandardList(
|
children: [
|
||||||
sectionCount: 1,
|
Padding(
|
||||||
itemCounter: (int _) => supportViewModel.items.length,
|
padding: EdgeInsets.only(top: 24),
|
||||||
itemBuilder: (_, index) {
|
child: SupportTile(
|
||||||
final item = supportViewModel.items[index];
|
image: imageLiveSupport,
|
||||||
|
title: S.of(context).support_title_live_chat,
|
||||||
if (item is RegularListItem) {
|
description: S.of(context).support_description_live_chat,
|
||||||
return SettingsCellWithArrow(title: item.title, handler: item.handler);
|
onPressed: () {
|
||||||
}
|
if (DeviceInfo.instance.isDesktop) {
|
||||||
|
_launchUrl(supportViewModel.fetchUrl());
|
||||||
if (item is LinkListItem) {
|
} else {
|
||||||
return SettingsLinkProviderCell(
|
Navigator.pushNamed(context, Routes.supportLiveChat);
|
||||||
title: item.title,
|
}
|
||||||
icon: item.icon,
|
},
|
||||||
iconColor: item.hasIconColor ? iconColor : null,
|
),
|
||||||
link: item.link,
|
),
|
||||||
linkTitle: item.linkTitle);
|
Padding(
|
||||||
}
|
padding: EdgeInsets.only(top: 24),
|
||||||
|
child: SupportTile(
|
||||||
return Container();
|
image: imageWalletGuides,
|
||||||
}),
|
title: S.of(context).support_title_guides,
|
||||||
|
description: S.of(context).support_description_guides,
|
||||||
|
onPressed: () => _launchUrl(supportViewModel.guidesUrl),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(top: 24),
|
||||||
|
child: SupportTile(
|
||||||
|
image: imageMoreLinks,
|
||||||
|
title: S.of(context).support_title_other_links,
|
||||||
|
description: S.of(context).support_description_other_links,
|
||||||
|
onPressed: () => Navigator.pushNamed(context, Routes.supportOtherLinks),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _launchUrl(String url) async {
|
||||||
|
try {
|
||||||
|
await launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication);
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
38
lib/src/screens/support_chat/support_chat_page.dart
Normal file
38
lib/src/screens/support_chat/support_chat_page.dart
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
import 'package:cake_wallet/generated/i18n.dart';
|
||||||
|
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||||
|
import 'package:cake_wallet/src/screens/support_chat/widgets/chatwoot_widget.dart';
|
||||||
|
import 'package:cake_wallet/view_model/support_view_model.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:cake_wallet/core/secure_storage.dart';
|
||||||
|
|
||||||
|
|
||||||
|
class SupportChatPage extends BasePage {
|
||||||
|
SupportChatPage(this.supportViewModel, {required this.secureStorage});
|
||||||
|
|
||||||
|
final SupportViewModel supportViewModel;
|
||||||
|
final SecureStorage secureStorage;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get title => S.current.settings_support;
|
||||||
|
|
||||||
|
@override
|
||||||
|
AppBarStyle get appBarStyle => AppBarStyle.regular;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget body(BuildContext context) => FutureBuilder<String>(
|
||||||
|
future: getCookie(),
|
||||||
|
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
|
||||||
|
print(snapshot.data);
|
||||||
|
if (snapshot.hasData)
|
||||||
|
return ChatwootWidget(
|
||||||
|
secureStorage,
|
||||||
|
supportUrl: supportViewModel.fetchUrl(authToken: snapshot.data!)
|
||||||
|
);
|
||||||
|
return Container();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
Future<String> getCookie() async {
|
||||||
|
return await secureStorage.read(key: COOKIE_KEY) ?? "";
|
||||||
|
}
|
||||||
|
}
|
62
lib/src/screens/support_chat/widgets/chatwoot_widget.dart
Normal file
62
lib/src/screens/support_chat/widgets/chatwoot_widget.dart
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
||||||
|
import 'package:cake_wallet/core/secure_storage.dart';
|
||||||
|
|
||||||
|
const COOKIE_KEY = 'chatwootCookie';
|
||||||
|
|
||||||
|
class ChatwootWidget extends StatefulWidget {
|
||||||
|
ChatwootWidget(this.secureStorage, {required this.supportUrl});
|
||||||
|
|
||||||
|
final SecureStorage secureStorage;
|
||||||
|
final String supportUrl;
|
||||||
|
|
||||||
|
@override
|
||||||
|
ChatwootWidgetState createState() => ChatwootWidgetState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class ChatwootWidgetState extends State<ChatwootWidget> {
|
||||||
|
final GlobalKey _webViewkey = GlobalKey();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) => InAppWebView(
|
||||||
|
key: _webViewkey,
|
||||||
|
initialOptions: InAppWebViewGroupOptions(
|
||||||
|
crossPlatform: InAppWebViewOptions(transparentBackground: true),
|
||||||
|
),
|
||||||
|
initialUrlRequest: URLRequest(url: Uri.tryParse(widget.supportUrl)),
|
||||||
|
onWebViewCreated: (InAppWebViewController controller) {
|
||||||
|
controller.addWebMessageListener(
|
||||||
|
WebMessageListener(
|
||||||
|
jsObjectName: 'ReactNativeWebView',
|
||||||
|
onPostMessage: (String? message, Uri? sourceOrigin, bool isMainFrame,
|
||||||
|
JavaScriptReplyProxy replyProxy) {
|
||||||
|
final shortenedMessage = message?.substring(16);
|
||||||
|
if (shortenedMessage != null && isJsonString(shortenedMessage)) {
|
||||||
|
final parsedMessage = jsonDecode(shortenedMessage);
|
||||||
|
final eventType = parsedMessage["event"];
|
||||||
|
if (eventType == 'loaded') {
|
||||||
|
final authToken = parsedMessage["config"]["authToken"];
|
||||||
|
print(authToken);
|
||||||
|
storeCookie(authToken as String);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
bool isJsonString(String str) {
|
||||||
|
try {
|
||||||
|
jsonDecode(str);
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> storeCookie(String value) async =>
|
||||||
|
await widget.secureStorage.write(key: COOKIE_KEY, value: value);
|
||||||
|
}
|
|
@ -1,8 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
cd cw_core && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd ..
|
cd cw_core; flutter pub get; flutter packages pub run build_runner build --delete-conflicting-outputs; cd ..
|
||||||
cd cw_monero && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd ..
|
cd cw_monero; flutter pub get; flutter packages pub run build_runner build --delete-conflicting-outputs; cd ..
|
||||||
cd cw_bitcoin && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd ..
|
cd cw_bitcoin; flutter pub get; flutter packages pub run build_runner build --delete-conflicting-outputs; cd ..
|
||||||
cd cw_haven && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd ..
|
cd cw_haven; flutter pub get; flutter packages pub run build_runner build --delete-conflicting-outputs; cd ..
|
||||||
cd cw_ethereum && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd ..
|
cd cw_ethereum; flutter pub get; flutter packages pub run build_runner build --delete-conflicting-outputs; cd ..
|
||||||
flutter packages pub run build_runner build --delete-conflicting-outputs
|
dart run build_runner build --delete-conflicting-outputs
|
||||||
|
|
|
@ -696,5 +696,11 @@
|
||||||
"select_destination": ".ﻲﻃﺎﻴﺘﺣﻻﺍ ﺦﺴﻨﻟﺍ ﻒﻠﻣ ﺔﻬﺟﻭ ﺪﻳﺪﺤﺗ ءﺎﺟﺮﻟﺍ",
|
"select_destination": ".ﻲﻃﺎﻴﺘﺣﻻﺍ ﺦﺴﻨﻟﺍ ﻒﻠﻣ ﺔﻬﺟﻭ ﺪﻳﺪﺤﺗ ءﺎﺟﺮﻟﺍ",
|
||||||
"save_to_downloads": "ﺕﻼﻳﺰﻨﺘﻟﺍ ﻲﻓ ﻆﻔﺣ",
|
"save_to_downloads": "ﺕﻼﻳﺰﻨﺘﻟﺍ ﻲﻓ ﻆﻔﺣ",
|
||||||
"support_description_other_links": "انضم إلى مجتمعاتنا أو تصل إلينا شركائنا من خلال أساليب أخرى",
|
"support_description_other_links": "انضم إلى مجتمعاتنا أو تصل إلينا شركائنا من خلال أساليب أخرى",
|
||||||
"auto_generate_subaddresses": "تلقائي توليد subddresses"
|
"auto_generate_subaddresses": "تلقائي توليد subddresses",
|
||||||
|
"invalid_password": "رمز مرور خاطئ",
|
||||||
|
"unlock": "الغاء القفل",
|
||||||
|
"enter_wallet_password": "أدخل كلمة مرور المحفظة",
|
||||||
|
"repeat_wallet_password": "كرر كلمة مرور المحفظة",
|
||||||
|
"wallet_password_is_empty": "كلمة مرور المحفظة فارغة. يجب ألا تكون كلمة مرور المحفظة فارغة",
|
||||||
|
"repeated_password_is_incorrect": "كلمة المرور المتكررة غير صحيحة. يرجى تكرار كلمة مرور المحفظة مرة أخرى."
|
||||||
}
|
}
|
||||||
|
|
|
@ -692,5 +692,12 @@
|
||||||
"support_title_other_links": "Други връзки за поддръжка",
|
"support_title_other_links": "Други връзки за поддръжка",
|
||||||
"support_description_other_links": "Присъединете се към нашите общности или се свържете с нас нашите партньори чрез други методи",
|
"support_description_other_links": "Присъединете се към нашите общности или се свържете с нас нашите партньори чрез други методи",
|
||||||
"select_destination": "Моля, изберете дестинация за архивния файл.",
|
"select_destination": "Моля, изберете дестинация за архивния файл.",
|
||||||
"save_to_downloads": "Запазване в Изтегляния"
|
"save_to_downloads": "Запазване в Изтегляния",
|
||||||
}
|
"settings": "Настройки",
|
||||||
|
"invalid_password": "Невалидна парола",
|
||||||
|
"unlock": "Отключване",
|
||||||
|
"enter_wallet_password": "Въведете паролата за портфейла",
|
||||||
|
"repeat_wallet_password": "Повторете паролата на портфейла",
|
||||||
|
"wallet_password_is_empty": "Паролата за портфейл е празна. Паролата за портфейл не трябва да е празна",
|
||||||
|
"repeated_password_is_incorrect": "Многократната парола е неправилна. Моля, повторете отново паролата за портфейла."
|
||||||
|
}
|
|
@ -685,5 +685,11 @@
|
||||||
"support_title_other_links": "Další odkazy na podporu",
|
"support_title_other_links": "Další odkazy na podporu",
|
||||||
"support_description_other_links": "Připojte se k našim komunitám nebo se k nám oslovte další metody",
|
"support_description_other_links": "Připojte se k našim komunitám nebo se k nám oslovte další metody",
|
||||||
"select_destination": "Vyberte cíl pro záložní soubor.",
|
"select_destination": "Vyberte cíl pro záložní soubor.",
|
||||||
"save_to_downloads": "Uložit do Stažených souborů"
|
"save_to_downloads": "Uložit do Stažených souborů",
|
||||||
}
|
"invalid_password": "Neplatné heslo",
|
||||||
|
"unlock": "Odemknout",
|
||||||
|
"enter_wallet_password": "Zadejte heslo peněženky",
|
||||||
|
"repeat_wallet_password": "Opakujte heslo peněženky",
|
||||||
|
"wallet_password_is_empty": "Heslo peněženky je prázdné. Heslo peněženky by nemělo být prázdné",
|
||||||
|
"repeated_password_is_incorrect": "Opakované heslo je nesprávné. Znovu opakujte heslo peněženky."
|
||||||
|
}
|
|
@ -647,7 +647,7 @@
|
||||||
"matrix_green_dark_theme": "Matrix Green Dark Theme",
|
"matrix_green_dark_theme": "Matrix Green Dark Theme",
|
||||||
"monero_light_theme": "Monero Light-Thema",
|
"monero_light_theme": "Monero Light-Thema",
|
||||||
"auto_generate_subaddresses": "Unteradressen automatisch generieren",
|
"auto_generate_subaddresses": "Unteradressen automatisch generieren",
|
||||||
"cake_2fa_preset" : "Cake 2FA-Voreinstellung",
|
"cake_2fa_preset": "Cake 2FA-Voreinstellung",
|
||||||
"narrow": "Eng",
|
"narrow": "Eng",
|
||||||
"normal": "Normal",
|
"normal": "Normal",
|
||||||
"aggressive": "Übereifrig",
|
"aggressive": "Übereifrig",
|
||||||
|
@ -693,5 +693,11 @@
|
||||||
"support_title_other_links": "Andere Support-Links",
|
"support_title_other_links": "Andere Support-Links",
|
||||||
"support_description_other_links": "Treten Sie unseren Communities bei oder erreichen Sie uns oder unsere Partner über andere Methoden",
|
"support_description_other_links": "Treten Sie unseren Communities bei oder erreichen Sie uns oder unsere Partner über andere Methoden",
|
||||||
"select_destination": "Bitte wählen Sie das Ziel für die Sicherungsdatei aus.",
|
"select_destination": "Bitte wählen Sie das Ziel für die Sicherungsdatei aus.",
|
||||||
"save_to_downloads": "Unter „Downloads“ speichern"
|
"save_to_downloads": "Unter „Downloads“ speichern",
|
||||||
|
"invalid_password": "Ungültiges Passwort",
|
||||||
|
"unlock": "Freischalten",
|
||||||
|
"enter_wallet_password": "Geben Sie das Brieftaschenkennwort ein",
|
||||||
|
"repeat_wallet_password": "Wiederholen Sie das Brieftaschenkennwort",
|
||||||
|
"wallet_password_is_empty": "Brieftaschenkennwort ist leer. Brieftaschenkennwort sollte nicht leer sein",
|
||||||
|
"repeated_password_is_incorrect": "Wiederholtes Passwort ist falsch. Bitte wiederholen Sie das Brieftaschenkennwort erneut."
|
||||||
}
|
}
|
||||||
|
|
|
@ -693,5 +693,11 @@
|
||||||
"support_title_other_links": "Other support links",
|
"support_title_other_links": "Other support links",
|
||||||
"support_description_other_links": "Join our communities or reach us our our partners through other methods",
|
"support_description_other_links": "Join our communities or reach us our our partners through other methods",
|
||||||
"select_destination": "Please select destination for the backup file.",
|
"select_destination": "Please select destination for the backup file.",
|
||||||
"save_to_downloads": "Save to Downloads"
|
"save_to_downloads": "Save to Downloads",
|
||||||
}
|
"invalid_password": "Invalid password",
|
||||||
|
"unlock": "Unlock",
|
||||||
|
"enter_wallet_password": "Enter the wallet password",
|
||||||
|
"repeat_wallet_password": "Repeat the wallet password",
|
||||||
|
"wallet_password_is_empty": "Wallet password is empty. Wallet password should not be empty",
|
||||||
|
"repeated_password_is_incorrect": "Repeated password is incorrect. Please repeat the wallet password again."
|
||||||
|
}
|
|
@ -693,5 +693,11 @@
|
||||||
"support_title_other_links": "Otros enlaces de soporte",
|
"support_title_other_links": "Otros enlaces de soporte",
|
||||||
"support_description_other_links": "Únase a nuestras comunidades o comuníquese con nosotros nuestros socios a través de otros métodos",
|
"support_description_other_links": "Únase a nuestras comunidades o comuníquese con nosotros nuestros socios a través de otros métodos",
|
||||||
"select_destination": "Seleccione el destino del archivo de copia de seguridad.",
|
"select_destination": "Seleccione el destino del archivo de copia de seguridad.",
|
||||||
"save_to_downloads": "Guardar en Descargas"
|
"save_to_downloads": "Guardar en Descargas",
|
||||||
}
|
"invalid_password": "Contraseña invalida",
|
||||||
|
"unlock": "desbloquear",
|
||||||
|
"enter_wallet_password": "Ingrese la contraseña de la billetera",
|
||||||
|
"repeat_wallet_password": "Repita la contraseña de billetera",
|
||||||
|
"wallet_password_is_empty": "La contraseña de billetera está vacía. La contraseña de la billetera no debe estar vacía",
|
||||||
|
"repeated_password_is_incorrect": "La contraseña repetida es incorrecta. Repita la contraseña de la billetera nuevamente."
|
||||||
|
}
|
|
@ -693,5 +693,11 @@
|
||||||
"support_title_other_links": "Autres liens d'assistance",
|
"support_title_other_links": "Autres liens d'assistance",
|
||||||
"support_description_other_links": "Rejoignez nos communautés ou contactez-nous nos partenaires à travers d'autres méthodes",
|
"support_description_other_links": "Rejoignez nos communautés ou contactez-nous nos partenaires à travers d'autres méthodes",
|
||||||
"select_destination": "Veuillez sélectionner la destination du fichier de sauvegarde.",
|
"select_destination": "Veuillez sélectionner la destination du fichier de sauvegarde.",
|
||||||
"save_to_downloads": "Enregistrer dans les téléchargements"
|
"save_to_downloads": "Enregistrer dans les téléchargements",
|
||||||
}
|
"invalid_password": "Mot de passe incorrect",
|
||||||
|
"unlock": "Ouvrir",
|
||||||
|
"enter_wallet_password": "Entrez le mot de passe du portefeuille",
|
||||||
|
"repeat_wallet_password": "Répétez le mot de passe du portefeuille",
|
||||||
|
"wallet_password_is_empty": "Le mot de passe du portefeuille est vide. Le mot de passe du portefeuille ne doit pas être vide",
|
||||||
|
"repeated_password_is_incorrect": "Le mot de passe répété est incorrect. Veuillez répéter le mot de passe du portefeuille."
|
||||||
|
}
|
|
@ -671,5 +671,11 @@
|
||||||
"support_title_other_links": "Sauran hanyoyin tallafi",
|
"support_title_other_links": "Sauran hanyoyin tallafi",
|
||||||
"support_description_other_links": "Kasance tare da al'ummominmu ko kuma ka kai mu abokanmu ta hanyar wasu hanyoyi",
|
"support_description_other_links": "Kasance tare da al'ummominmu ko kuma ka kai mu abokanmu ta hanyar wasu hanyoyi",
|
||||||
"select_destination": "Da fatan za a zaɓi wurin da za a yi wa madadin fayil ɗin.",
|
"select_destination": "Da fatan za a zaɓi wurin da za a yi wa madadin fayil ɗin.",
|
||||||
"save_to_downloads": "Ajiye zuwa Zazzagewa"
|
"save_to_downloads": "Ajiye zuwa Zazzagewa",
|
||||||
}
|
"invalid_password": "Kalmar sirri mara inganci",
|
||||||
|
"unlock": "Buɗe",
|
||||||
|
"enter_wallet_password": "Shigar da kalmar sirri ta walat",
|
||||||
|
"repeat_wallet_password": "Maimaita kalmar sirri",
|
||||||
|
"wallet_password_is_empty": "Alamar Wallet babu komai. Al'adun Wallet bai zama komai ba",
|
||||||
|
"repeated_password_is_incorrect": "Maimaita kalmar sirri ba daidai ba ce. Da fatan za a sake maimaita kalmar sirri."
|
||||||
|
}
|
|
@ -693,5 +693,11 @@
|
||||||
"support_title_other_links": "अन्य समर्थन लिंक",
|
"support_title_other_links": "अन्य समर्थन लिंक",
|
||||||
"support_description_other_links": "हमारे समुदायों में शामिल हों या अन्य तरीकों के माध्यम से हमारे साथी तक पहुंचें",
|
"support_description_other_links": "हमारे समुदायों में शामिल हों या अन्य तरीकों के माध्यम से हमारे साथी तक पहुंचें",
|
||||||
"select_destination": "कृपया बैकअप फ़ाइल के लिए गंतव्य का चयन करें।",
|
"select_destination": "कृपया बैकअप फ़ाइल के लिए गंतव्य का चयन करें।",
|
||||||
"save_to_downloads": "डाउनलोड में सहेजें"
|
"save_to_downloads": "डाउनलोड में सहेजें",
|
||||||
}
|
"invalid_password": "अवैध पासवर्ड",
|
||||||
|
"unlock": "अनलॉक",
|
||||||
|
"enter_wallet_password": "वॉलेट पासवर्ड दर्ज करें",
|
||||||
|
"repeat_wallet_password": "वॉलेट पासवर्ड दोहराएं",
|
||||||
|
"wallet_password_is_empty": "वॉलेट पासवर्ड खाली है। वॉलेट पासवर्ड खाली नहीं होना चाहिए",
|
||||||
|
"repeated_password_is_incorrect": "बार -बार पासवर्ड गलत है। कृपया फिर से वॉलेट पासवर्ड दोहराएं।"
|
||||||
|
}
|
|
@ -693,5 +693,11 @@
|
||||||
"support_title_other_links": "Ostale veze za podršku",
|
"support_title_other_links": "Ostale veze za podršku",
|
||||||
"support_description_other_links": "Pridružite se našim zajednicama ili nam dosegnu naše partnere drugim metodama",
|
"support_description_other_links": "Pridružite se našim zajednicama ili nam dosegnu naše partnere drugim metodama",
|
||||||
"select_destination": "Odaberite odredište za datoteku sigurnosne kopije.",
|
"select_destination": "Odaberite odredište za datoteku sigurnosne kopije.",
|
||||||
"save_to_downloads": "Spremi u Preuzimanja"
|
"save_to_downloads": "Spremi u Preuzimanja",
|
||||||
}
|
"invalid_password": "Netočna zaporka",
|
||||||
|
"unlock": "Otključati",
|
||||||
|
"enter_wallet_password": "Unesite lozinku za novčanik",
|
||||||
|
"repeat_wallet_password": "Ponovite lozinku za novčanik",
|
||||||
|
"wallet_password_is_empty": "Lozinka za novčanik je prazna. Lozinka za novčanik ne bi trebala biti prazna",
|
||||||
|
"repeated_password_is_incorrect": "Ponovljena lozinka je netočna. Molimo ponovite lozinku za novčanik."
|
||||||
|
}
|
|
@ -682,5 +682,11 @@
|
||||||
"support_title_other_links": "Tautan dukungan lainnya",
|
"support_title_other_links": "Tautan dukungan lainnya",
|
||||||
"support_description_other_links": "Bergabunglah dengan komunitas kami atau hubungi kami mitra kami melalui metode lain",
|
"support_description_other_links": "Bergabunglah dengan komunitas kami atau hubungi kami mitra kami melalui metode lain",
|
||||||
"select_destination": "Silakan pilih tujuan untuk file cadangan.",
|
"select_destination": "Silakan pilih tujuan untuk file cadangan.",
|
||||||
"save_to_downloads": "Simpan ke Unduhan"
|
"save_to_downloads": "Simpan ke Unduhan",
|
||||||
}
|
"invalid_password": "Kata sandi salah",
|
||||||
|
"unlock": "Membuka kunci",
|
||||||
|
"enter_wallet_password": "Masukkan Kata Sandi Dompet",
|
||||||
|
"repeat_wallet_password": "Ulangi Kata Sandi Dompet",
|
||||||
|
"wallet_password_is_empty": "Kata sandi dompet kosong. Kata sandi dompet tidak boleh kosong",
|
||||||
|
"repeated_password_is_incorrect": "Kata sandi yang diulang tidak benar. Harap ulangi kata sandi dompet lagi."
|
||||||
|
}
|
|
@ -693,5 +693,11 @@
|
||||||
"support_title_other_links": "Altri collegamenti di supporto",
|
"support_title_other_links": "Altri collegamenti di supporto",
|
||||||
"support_description_other_links": "Unisciti alle nostre comunità o raggiungici i nostri partner attraverso altri metodi",
|
"support_description_other_links": "Unisciti alle nostre comunità o raggiungici i nostri partner attraverso altri metodi",
|
||||||
"select_destination": "Seleziona la destinazione per il file di backup.",
|
"select_destination": "Seleziona la destinazione per il file di backup.",
|
||||||
"save_to_downloads": "Salva in Download"
|
"save_to_downloads": "Salva in Download",
|
||||||
}
|
"invalid_password": "Password non valida",
|
||||||
|
"unlock": "Sbloccare",
|
||||||
|
"enter_wallet_password": "Immettere la password del portafoglio",
|
||||||
|
"repeat_wallet_password": "Ripeti la password del portafoglio",
|
||||||
|
"wallet_password_is_empty": "La password del portafoglio è vuota. La password del portafoglio non dovrebbe essere vuota",
|
||||||
|
"repeated_password_is_incorrect": "La password ripetuta non è corretta. Si prega di ripetere di nuovo la password del portafoglio."
|
||||||
|
}
|
|
@ -693,5 +693,11 @@
|
||||||
"support_description_other_links": "私たちのコミュニティに参加するか、他の方法を通して私たちのパートナーに連絡してください",
|
"support_description_other_links": "私たちのコミュニティに参加するか、他の方法を通して私たちのパートナーに連絡してください",
|
||||||
"select_destination": "バックアップファイルの保存先を選択してください。",
|
"select_destination": "バックアップファイルの保存先を選択してください。",
|
||||||
"save_to_downloads": "ダウンロードに保存",
|
"save_to_downloads": "ダウンロードに保存",
|
||||||
"auto_generate_subaddresses": "Autoはサブアドレスを生成します"
|
"auto_generate_subaddresses": "Autoはサブアドレスを生成します",
|
||||||
|
"invalid_password": "無効なパスワード",
|
||||||
|
"unlock": "ロックを解除します",
|
||||||
|
"enter_wallet_password": "ウォレットパスワードを入力します",
|
||||||
|
"repeat_wallet_password": "ウォレットパスワードを繰り返します",
|
||||||
|
"wallet_password_is_empty": "ウォレットパスワードは空です。ウォレットのパスワードは空にしてはいけません",
|
||||||
|
"repeated_password_is_incorrect": "繰り返しパスワードが正しくありません。ウォレットのパスワードをもう一度繰り返してください。"
|
||||||
}
|
}
|
||||||
|
|
|
@ -693,5 +693,11 @@
|
||||||
"support_description_other_links": "다른 방법을 통해 커뮤니티에 가입하거나 파트너에게 연락하십시오.",
|
"support_description_other_links": "다른 방법을 통해 커뮤니티에 가입하거나 파트너에게 연락하십시오.",
|
||||||
"select_destination": "백업 파일의 대상을 선택하십시오.",
|
"select_destination": "백업 파일의 대상을 선택하십시오.",
|
||||||
"save_to_downloads": "다운로드에 저장",
|
"save_to_downloads": "다운로드에 저장",
|
||||||
"auto_generate_subaddresses": "자동 생성 서브 아드 드레스"
|
"auto_generate_subaddresses": "자동 생성 서브 아드 드레스",
|
||||||
|
"invalid_password": "유효하지 않은 비밀번호",
|
||||||
|
"unlock": "터놓다",
|
||||||
|
"enter_wallet_password": "지갑 암호를 입력하십시오",
|
||||||
|
"repeat_wallet_password": "지갑 암호를 반복하십시오",
|
||||||
|
"wallet_password_is_empty": "지갑 암호는 비어 있습니다. 지갑 암호는 비어 있지 않아야합니다",
|
||||||
|
"repeated_password_is_incorrect": "반복 된 비밀번호가 올바르지 않습니다. 지갑 암호를 다시 반복하십시오."
|
||||||
}
|
}
|
||||||
|
|
|
@ -691,5 +691,11 @@
|
||||||
"support_description_other_links": "ကျွန်ုပ်တို့၏လူမှုအသိုင်းအဝိုင်းများသို့ 0 င်ရောက်ပါ",
|
"support_description_other_links": "ကျွန်ုပ်တို့၏လူမှုအသိုင်းအဝိုင်းများသို့ 0 င်ရောက်ပါ",
|
||||||
"select_destination": "အရန်ဖိုင်အတွက် ဦးတည်ရာကို ရွေးပါ။",
|
"select_destination": "အရန်ဖိုင်အတွက် ဦးတည်ရာကို ရွေးပါ။",
|
||||||
"save_to_downloads": "ဒေါင်းလုဒ်များထံ သိမ်းဆည်းပါ။",
|
"save_to_downloads": "ဒေါင်းလုဒ်များထံ သိမ်းဆည်းပါ။",
|
||||||
"auto_generate_subaddresses": "အော်တို Generate Subaddresses"
|
"auto_generate_subaddresses": "အော်တို Generate Subaddresses",
|
||||||
|
"invalid_password": "မမှန်ကန်သောစကားဝှက်",
|
||||||
|
"unlock": "သော့ဖွင့်",
|
||||||
|
"enter_wallet_password": "ပိုက်ဆံအိတ်စကားဝှက်ကိုရိုက်ထည့်ပါ",
|
||||||
|
"repeat_wallet_password": "ပိုက်ဆံအိတ်စကားဝှက်ကိုပြန်လုပ်ပါ",
|
||||||
|
"wallet_password_is_empty": "ပိုက်ဆံအိတ်စကားဝှက်သည်ဗလာဖြစ်သည်။ ပိုက်ဆံအိတ်စကားဝှက်သည်အချည်းနှီးဖြစ်သင့်သည်",
|
||||||
|
"repeated_password_is_incorrect": "ထပ်ခါတလဲလဲစကားဝှက်မမှန်ကန်ပါ ကျေးဇူးပြုပြီးပိုက်ဆံအိတ်စကားဝှက်ကိုပြန်လုပ်ပါ။"
|
||||||
}
|
}
|
||||||
|
|
|
@ -693,5 +693,11 @@
|
||||||
"support_title_other_links": "Andere ondersteuningslinks",
|
"support_title_other_links": "Andere ondersteuningslinks",
|
||||||
"support_description_other_links": "Word lid van onze gemeenschappen of bereik ons onze partners via andere methoden",
|
"support_description_other_links": "Word lid van onze gemeenschappen of bereik ons onze partners via andere methoden",
|
||||||
"select_destination": "Selecteer de bestemming voor het back-upbestand.",
|
"select_destination": "Selecteer de bestemming voor het back-upbestand.",
|
||||||
"save_to_downloads": "Opslaan in downloads"
|
"save_to_downloads": "Opslaan in downloads",
|
||||||
}
|
"invalid_password": "Ongeldig wachtwoord",
|
||||||
|
"unlock": "Ontgrendelen",
|
||||||
|
"enter_wallet_password": "Voer het Wallet -wachtwoord in",
|
||||||
|
"repeat_wallet_password": "Herhaal het Wallet -wachtwoord",
|
||||||
|
"wallet_password_is_empty": "Wallet -wachtwoord is leeg. Wallet -wachtwoord mag niet leeg zijn",
|
||||||
|
"repeated_password_is_incorrect": "Herhaald wachtwoord is onjuist. Herhaal het Wallet -wachtwoord opnieuw."
|
||||||
|
}
|
|
@ -693,5 +693,11 @@
|
||||||
"support_title_other_links": "Inne linki wsparcia",
|
"support_title_other_links": "Inne linki wsparcia",
|
||||||
"support_description_other_links": "Dołącz do naszych społeczności lub skontaktuj się z nami naszymi partnerami za pomocą innych metod",
|
"support_description_other_links": "Dołącz do naszych społeczności lub skontaktuj się z nami naszymi partnerami za pomocą innych metod",
|
||||||
"select_destination": "Wybierz miejsce docelowe dla pliku kopii zapasowej.",
|
"select_destination": "Wybierz miejsce docelowe dla pliku kopii zapasowej.",
|
||||||
"save_to_downloads": "Zapisz w Pobranych"
|
"save_to_downloads": "Zapisz w Pobranych",
|
||||||
}
|
"invalid_password": "Nieprawidłowe hasło",
|
||||||
|
"unlock": "Odblokować",
|
||||||
|
"enter_wallet_password": "Wprowadź hasło portfela",
|
||||||
|
"repeat_wallet_password": "Powtórz hasło portfela",
|
||||||
|
"wallet_password_is_empty": "Hasło portfela jest puste. Hasło portfela nie powinno być puste",
|
||||||
|
"repeated_password_is_incorrect": "Powtarzane hasło jest nieprawidłowe. Powtórz ponownie hasło portfela."
|
||||||
|
}
|
|
@ -692,5 +692,11 @@
|
||||||
"support_title_other_links": "Outros links de suporte",
|
"support_title_other_links": "Outros links de suporte",
|
||||||
"support_description_other_links": "Junte -se às nossas comunidades ou chegue a nós nossos parceiros por meio de outros métodos",
|
"support_description_other_links": "Junte -se às nossas comunidades ou chegue a nós nossos parceiros por meio de outros métodos",
|
||||||
"select_destination": "Selecione o destino para o arquivo de backup.",
|
"select_destination": "Selecione o destino para o arquivo de backup.",
|
||||||
"save_to_downloads": "Salvar em Downloads"
|
"save_to_downloads": "Salvar em Downloads",
|
||||||
}
|
"invalid_password": "Senha inválida",
|
||||||
|
"unlock": "Desbloquear",
|
||||||
|
"enter_wallet_password": "Digite a senha da carteira",
|
||||||
|
"repeat_wallet_password": "Repita a senha da carteira",
|
||||||
|
"wallet_password_is_empty": "A senha da carteira está vazia. A senha da carteira não deve estar vazia",
|
||||||
|
"repeated_password_is_incorrect": "A senha repetida está incorreta. Repita a senha da carteira novamente."
|
||||||
|
}
|
|
@ -694,5 +694,11 @@
|
||||||
"support_description_other_links": "Присоединяйтесь к нашим сообществам или охватите нас наших партнеров с помощью других методов",
|
"support_description_other_links": "Присоединяйтесь к нашим сообществам или охватите нас наших партнеров с помощью других методов",
|
||||||
"select_destination": "Пожалуйста, выберите место для файла резервной копии.",
|
"select_destination": "Пожалуйста, выберите место для файла резервной копии.",
|
||||||
"save_to_downloads": "Сохранить в загрузках",
|
"save_to_downloads": "Сохранить в загрузках",
|
||||||
"auto_generate_subaddresses": "Авто генерируйте Subaddresses"
|
"auto_generate_subaddresses": "Авто генерируйте Subaddresses",
|
||||||
|
"invalid_password": "Неверный пароль",
|
||||||
|
"unlock": "Разблокировать",
|
||||||
|
"enter_wallet_password": "Введите пароль кошелька",
|
||||||
|
"repeat_wallet_password": "Повторите пароль кошелька",
|
||||||
|
"wallet_password_is_empty": "Пароль кошелька пуст. Пароль кошелька не должен быть пустым",
|
||||||
|
"repeated_password_is_incorrect": "Повторный пароль неверен. Пожалуйста, повторите пароль кошелька снова."
|
||||||
}
|
}
|
||||||
|
|
|
@ -691,5 +691,11 @@
|
||||||
"support_description_other_links": "เข้าร่วมชุมชนของเราหรือเข้าถึงเราพันธมิตรของเราผ่านวิธีการอื่น ๆ",
|
"support_description_other_links": "เข้าร่วมชุมชนของเราหรือเข้าถึงเราพันธมิตรของเราผ่านวิธีการอื่น ๆ",
|
||||||
"select_destination": "โปรดเลือกปลายทางสำหรับไฟล์สำรอง",
|
"select_destination": "โปรดเลือกปลายทางสำหรับไฟล์สำรอง",
|
||||||
"save_to_downloads": "บันทึกลงดาวน์โหลด",
|
"save_to_downloads": "บันทึกลงดาวน์โหลด",
|
||||||
"auto_generate_subaddresses": "Auto สร้าง subaddresses"
|
"auto_generate_subaddresses": "Auto สร้าง subaddresses",
|
||||||
|
"invalid_password": "รหัสผ่านไม่ถูกต้อง",
|
||||||
|
"unlock": "ปลดล็อค",
|
||||||
|
"enter_wallet_password": "ป้อนรหัสผ่านกระเป๋าเงิน",
|
||||||
|
"repeat_wallet_password": "ทำซ้ำรหัสผ่านกระเป๋าเงิน",
|
||||||
|
"wallet_password_is_empty": "รหัสผ่านกระเป๋าเงินว่างเปล่า รหัสผ่านกระเป๋าเงินไม่ควรว่างเปล่า",
|
||||||
|
"repeated_password_is_incorrect": "รหัสผ่านซ้ำไม่ถูกต้อง โปรดทำซ้ำรหัสผ่านกระเป๋าเงินอีกครั้ง"
|
||||||
}
|
}
|
||||||
|
|
|
@ -691,5 +691,11 @@
|
||||||
"support_title_other_links": "Diğer destek bağlantıları",
|
"support_title_other_links": "Diğer destek bağlantıları",
|
||||||
"support_description_other_links": "Topluluklarımıza katılın veya ortaklarımıza diğer yöntemlerle bize ulaşın",
|
"support_description_other_links": "Topluluklarımıza katılın veya ortaklarımıza diğer yöntemlerle bize ulaşın",
|
||||||
"select_destination": "Lütfen yedekleme dosyası için hedef seçin.",
|
"select_destination": "Lütfen yedekleme dosyası için hedef seçin.",
|
||||||
"save_to_downloads": "İndirilenlere Kaydet"
|
"save_to_downloads": "İndirilenlere Kaydet",
|
||||||
}
|
"invalid_password": "Geçersiz şifre",
|
||||||
|
"unlock": "Kilidini aç",
|
||||||
|
"enter_wallet_password": "Cüzdan şifresini girin",
|
||||||
|
"repeat_wallet_password": "Cüzdan şifresini tekrarlayın",
|
||||||
|
"wallet_password_is_empty": "Cüzdan şifresi boş. Cüzdan şifresi boş olmamalı",
|
||||||
|
"repeated_password_is_incorrect": "Tekrarlanan şifre yanlış. Lütfen cüzdan şifresini tekrarlayın."
|
||||||
|
}
|
|
@ -693,5 +693,11 @@
|
||||||
"support_title_other_links": "Інші посилання на підтримку",
|
"support_title_other_links": "Інші посилання на підтримку",
|
||||||
"support_description_other_links": "Приєднуйтесь до наших спільнот або досягайте нас нашими партнерами іншими методами",
|
"support_description_other_links": "Приєднуйтесь до наших спільнот або досягайте нас нашими партнерами іншими методами",
|
||||||
"select_destination": "Виберіть місце призначення для файлу резервної копії.",
|
"select_destination": "Виберіть місце призначення для файлу резервної копії.",
|
||||||
"save_to_downloads": "Зберегти до завантажень"
|
"save_to_downloads": "Зберегти до завантажень",
|
||||||
}
|
"invalid_password": "Недійсний пароль",
|
||||||
|
"unlock": "Розблокувати",
|
||||||
|
"enter_wallet_password": "Введіть пароль гаманця",
|
||||||
|
"repeat_wallet_password": "Повторіть пароль гаманця",
|
||||||
|
"wallet_password_is_empty": "Пароль гаманця порожній. Пароль гаманця не повинен бути порожнім",
|
||||||
|
"repeated_password_is_incorrect": "Повторний пароль невірний. Будь ласка, повторіть пароль гаманця ще раз."
|
||||||
|
}
|
|
@ -686,5 +686,11 @@
|
||||||
"support_description_other_links": "ہماری برادریوں میں شامل ہوں یا دوسرے طریقوں سے ہمارے شراکت داروں تک پہنچیں",
|
"support_description_other_links": "ہماری برادریوں میں شامل ہوں یا دوسرے طریقوں سے ہمارے شراکت داروں تک پہنچیں",
|
||||||
"select_destination": "۔ﮟﯾﺮﮐ ﺏﺎﺨﺘﻧﺍ ﺎﮐ ﻝﺰﻨﻣ ﮯﯿﻟ ﮯﮐ ﻞﺋﺎﻓ ﭖﺍ ﮏﯿﺑ ﻡﺮﮐ ﮦﺍﺮﺑ",
|
"select_destination": "۔ﮟﯾﺮﮐ ﺏﺎﺨﺘﻧﺍ ﺎﮐ ﻝﺰﻨﻣ ﮯﯿﻟ ﮯﮐ ﻞﺋﺎﻓ ﭖﺍ ﮏﯿﺑ ﻡﺮﮐ ﮦﺍﺮﺑ",
|
||||||
"save_to_downloads": "۔ﮟﯾﺮﮐ ﻅﻮﻔﺤﻣ ﮟﯿﻣ ﺯﮈﻮﻟ ﻥﺅﺍﮈ",
|
"save_to_downloads": "۔ﮟﯾﺮﮐ ﻅﻮﻔﺤﻣ ﮟﯿﻣ ﺯﮈﻮﻟ ﻥﺅﺍﮈ",
|
||||||
"auto_generate_subaddresses": "آٹو سب ایڈریس تیار کرتا ہے"
|
"auto_generate_subaddresses": "آٹو سب ایڈریس تیار کرتا ہے",
|
||||||
|
"invalid_password": "غلط پاسورڈ",
|
||||||
|
"unlock": "غیر مقفل",
|
||||||
|
"enter_wallet_password": "پرس کا پاس ورڈ درج کریں",
|
||||||
|
"repeat_wallet_password": "بٹوے کا پاس ورڈ دہرائیں",
|
||||||
|
"wallet_password_is_empty": "پرس کا پاس ورڈ خالی ہے۔ پرس کا پاس ورڈ خالی نہیں ہونا چاہئے",
|
||||||
|
"repeated_password_is_incorrect": "بار بار پاس ورڈ غلط ہے۔ براہ کرم دوبارہ پرس کا پاس ورڈ دہرائیں۔"
|
||||||
}
|
}
|
||||||
|
|
|
@ -681,5 +681,11 @@
|
||||||
"monero_light_theme": "Monero Light Akori",
|
"monero_light_theme": "Monero Light Akori",
|
||||||
"select_destination": "Jọwọ yan ibi ti o nlo fun faili afẹyinti.",
|
"select_destination": "Jọwọ yan ibi ti o nlo fun faili afẹyinti.",
|
||||||
"save_to_downloads": "Fipamọ si Awọn igbasilẹ",
|
"save_to_downloads": "Fipamọ si Awọn igbasilẹ",
|
||||||
"auto_generate_subaddresses": "Aṣiṣe Ibi-Afọwọkọ"
|
"auto_generate_subaddresses": "Aṣiṣe Ibi-Afọwọkọ",
|
||||||
|
"invalid_password": "Ọrọ igbaniwọle ti ko wulo",
|
||||||
|
"unlock": "Sisalẹ",
|
||||||
|
"enter_wallet_password": "Tẹ ọrọ igbaniwọle apamọwọ",
|
||||||
|
"repeat_wallet_password": "Tun ọrọ igbaniwọle apamọwọ naa",
|
||||||
|
"wallet_password_is_empty": "Ọrọ igbaniwọle apamọwọ ti ṣofo. Ọrọ igbaniwọle apamọwọ ko yẹ ki o ṣofo",
|
||||||
|
"repeated_password_is_incorrect": "Ọrọ igbaniwọle tun jẹ aṣiṣe. Jọwọ tun ọrọigbaniwọle apamọwọ lẹẹkansi."
|
||||||
}
|
}
|
||||||
|
|
|
@ -692,5 +692,11 @@
|
||||||
"monero_light_theme": "门罗币浅色主题",
|
"monero_light_theme": "门罗币浅色主题",
|
||||||
"select_destination": "请选择备份文件的目的地。",
|
"select_destination": "请选择备份文件的目的地。",
|
||||||
"save_to_downloads": "保存到下载",
|
"save_to_downloads": "保存到下载",
|
||||||
"auto_generate_subaddresses": "自动生成子辅助"
|
"auto_generate_subaddresses": "自动生成子辅助",
|
||||||
|
"invalid_password": "无效的密码",
|
||||||
|
"unlock": "开锁",
|
||||||
|
"enter_wallet_password": "输入钱包密码",
|
||||||
|
"repeat_wallet_password": "重复钱包密码",
|
||||||
|
"wallet_password_is_empty": "钱包密码为空。钱包密码不应为空",
|
||||||
|
"repeated_password_is_incorrect": "重复密码不正确。请再次重复钱包密码。"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue