feat: redesign for CurrencyPicker and FiatPicker, introduce recents and currency groupings (#3248)

* Redesign for CurrencyPicker and FiatPicker, introduce recents and currency groupings * chore: cleanup * refactor: switch recents to previously completed trades, specify stables to be displayed, fix scrollable and adjust badge * refactor: switch recents to previously completed trades, specify stables to be displayed, fix scrollable, adjust badge, add fiat and multinetwork currency pickers to buy and sell flows * fresh set of changes and fixes for new currency picker flow * add chain label to items on search and smooth pop * add chain pill and label to xstocks * properly filter search results * shorten chain pill name for BSC tokens * Review fixes * cleanups * safe pop --------- Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>

David Adegoke committed Jun 3, 2026 at 15:38 UTC 8af85351e9508ae9ea0a905212e0dc8d998f5153
62 files changed +3004 -182
cw_core/lib/crypto_currency.dart
+21 -16
@@ -1,4 +1,5 @@
1 import 'package:cw_core/currency.dart';
2 +import 'package:cw_core/currency_groups.dart';
3 import 'package:cw_core/enumerable_item.dart';
4 import 'package:collection/collection.dart';
5 import 'package:cw_core/format_fixed.dart';
@@ -17,6 +18,7 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
18 this.chainIconPath,
19 this.enabled = false,
20 this.isPotentialScam = false,
21 + this.groups = const {},
22 }) : super(title: title, raw: raw);
23
24 final String name;
@@ -29,6 +31,7 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
31 final int decimals;
32 final bool enabled;
33 final bool isPotentialScam;
34 + final Set<String> groups;
35
36 set enabled(bool value) => this.enabled = value;
37
@@ -154,15 +157,15 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
157 static const bch = CryptoCurrency(title: 'BCH', fullName: 'Bitcoin Cash', raw: 2, name: 'bch', iconPath: 'assets/new-ui/crypto_full_icons/bitcoin-cash.svg', decimals: 8, flatIconPath: "assets/new-ui/balance_card_icons/bitcoin_cash.svg");
158 static const bnb = CryptoCurrency(title: 'BNB', tag: 'BSC', fullName: 'BNB', raw: 3, name: 'bnb', iconPath: 'assets/new-ui/crypto_full_icons/bnb.svg', decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/bnb.svg", chainIconPath: "assets/new-ui/chain_badges/bnb.svg");
159 static const btc = CryptoCurrency(title: 'BTC', fullName: 'Bitcoin', raw: 4, name: 'btc', iconPath: 'assets/new-ui/crypto_full_icons/bitcoin.svg' ,decimals: 8, flatIconPath: "assets/new-ui/balance_card_icons/bitcoin.svg");
157 - static const dai = CryptoCurrency(title: 'DAI', tag: 'ETH', fullName: 'Dai', raw: 5, name: 'dai', iconPath: 'assets/new-ui/crypto_full_icons/dai.svg', decimals: 18);
160 + static const dai = CryptoCurrency(title: 'DAI', tag: 'ETH', fullName: 'Dai', raw: 5, name: 'dai', iconPath: 'assets/new-ui/crypto_full_icons/dai.svg', decimals: 18, groups: const {CurrencyGroups.stablecoin});
161 static const dash = CryptoCurrency(title: 'DASH', fullName: 'Dash', raw: 6, name: 'dash', iconPath: 'assets/images/dash_icon.png', decimals: 8);
162 static const eos = CryptoCurrency(title: 'EOS', fullName: 'EOS', raw: 7, name: 'eos', iconPath: 'assets/images/eos_icon.png', decimals: 4);
163 static const eth = CryptoCurrency(title: 'ETH', fullName: 'Ethereum', raw: 8, name: 'eth', iconPath: 'assets/new-ui/crypto_full_icons/ethereum.svg', decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/ethereum.svg", chainIconPath: "assets/new-ui/chain_badges/ethereum.svg");
164 static const ltc = CryptoCurrency(title: 'LTC', fullName: 'Litecoin', raw: 9, name: 'ltc', iconPath: 'assets/new-ui/crypto_full_icons/litecoin.svg', decimals: 8, flatIconPath: "assets/new-ui/balance_card_icons/litecoin.svg", chainIconPath: "assets/new-ui/chain_badges/mweb.svg");
165 static const nano = CryptoCurrency(title: 'XNO', fullName: 'Nano', raw: 10, name: 'xno', iconPath: 'assets/new-ui/crypto_full_icons/nano.svg', decimals: 30, flatIconPath: "assets/new-ui/balance_card_icons/nano.svg");
166 static const trx = CryptoCurrency(title: 'TRX', fullName: 'TRON', raw: 11, name: 'trx', iconPath: 'assets/new-ui/crypto_full_icons/tron.svg', decimals: 6, flatIconPath: "assets/new-ui/balance_card_icons/tron.svg", chainIconPath: "assets/new-ui/chain_badges/tron.svg");
164 - static const usdt = CryptoCurrency(title: 'USDT', tag: 'OMNI', fullName: 'Tether', raw: 12, name: 'usdt', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 6);
165 - static const usdterc20 = CryptoCurrency(title: 'USDT', tag: 'ETH', fullName: 'Tether', raw: 13, name: 'usdterc20', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 6);
167 + static const usdt = CryptoCurrency(title: 'USDT', tag: 'OMNI', fullName: 'Tether', raw: 12, name: 'usdt', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 6, groups: const {CurrencyGroups.stablecoin});
168 + static const usdterc20 = CryptoCurrency(title: 'USDT', tag: 'ETH', fullName: 'Tether', raw: 13, name: 'usdterc20', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 6, groups: const {CurrencyGroups.stablecoin});
169 static const xlm = CryptoCurrency(title: 'XLM', fullName: 'Stellar', raw: 14, name: 'xlm', iconPath: 'assets/images/xlm_icon.png', decimals: 7);
170 static const xrp = CryptoCurrency(title: 'XRP', fullName: 'Ripple', raw: 15, name: 'xrp', iconPath: 'assets/images/xrp_icon.png', decimals: 6);
171 static const xhv = CryptoCurrency(title: 'XHV', fullName: 'Haven Protocol', raw: 16, name: 'xhv', iconPath: 'assets/images/xhv_logo.png', decimals: 12);
@@ -187,18 +190,18 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
190 static const bttc = CryptoCurrency(title: 'BTTC', tag: 'TRX', fullName: 'BitTorrent-NEW', raw: 33, name: 'bttc', iconPath: 'assets/images/btt_icon.png', decimals: 18);
191 static const doge = CryptoCurrency(title: 'DOGE', fullName: 'Dogecoin', raw: 34, name: 'doge', iconPath: 'assets/new-ui/crypto_full_icons/dogecoin.svg', decimals: 8, flatIconPath: "assets/new-ui/balance_card_icons/dogecoin.svg");
192 static const firo = CryptoCurrency(title: 'FIRO', raw: 35, name: 'firo', iconPath: 'assets/images/firo_icon.png', decimals: 8);
190 - static const usdttrc20 = CryptoCurrency(title: 'USDT', tag: 'TRX', fullName: 'Tether', raw: 36, name: 'usdttrc20', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 6);
193 + static const usdttrc20 = CryptoCurrency(title: 'USDT', tag: 'TRX', fullName: 'Tether', raw: 36, name: 'usdttrc20', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 6, groups: const {CurrencyGroups.stablecoin});
194 static const hbar = CryptoCurrency(title: 'HBAR', fullName: 'Hedera', raw: 37, name: 'hbar', iconPath: 'assets/images/hbar_icon.png', decimals: 8);
195 static const sc = CryptoCurrency(title: 'SC', fullName: 'Siacoin', raw: 38, name: 'sc', iconPath: 'assets/images/sc_icon.png', decimals: 16);
196 static const sol = CryptoCurrency(title: 'SOL', fullName: 'Solana', raw: 39, name: 'sol', iconPath: 'assets/new-ui/crypto_full_icons/solana.svg', decimals: 9, flatIconPath: "assets/new-ui/balance_card_icons/solana.svg", chainIconPath: "assets/new-ui/chain_badges/solana.svg");
194 - static const usdc = CryptoCurrency(title: 'USDC', tag: 'ETH', fullName: 'USDC', raw: 40, name: 'usdc', iconPath: 'assets/new-ui/crypto_full_icons/usdc.svg', decimals: 6);
195 - static const usdcsol = CryptoCurrency(title: 'USDC', tag: 'SOL', fullName: 'USDC Coin', raw: 41, name: 'usdcsol', iconPath: 'assets/new-ui/crypto_full_icons/usdc.svg', decimals: 6);
197 + static const usdc = CryptoCurrency(title: 'USDC', tag: 'ETH', fullName: 'USDC', raw: 40, name: 'usdc', iconPath: 'assets/new-ui/crypto_full_icons/usdc.svg', decimals: 6, groups: const {CurrencyGroups.stablecoin});
198 + static const usdcsol = CryptoCurrency(title: 'USDC', tag: 'SOL', fullName: 'USDC Coin', raw: 41, name: 'usdcsol', iconPath: 'assets/new-ui/crypto_full_icons/usdc.svg', decimals: 6, groups: const {CurrencyGroups.stablecoin});
199 static const zaddr = CryptoCurrency(title: 'ZZEC', tag: 'ZEC', fullName: 'Shielded Zcash', raw: 42, name: 'zaddr', iconPath: 'assets/new-ui/crypto_full_icons/zcash.svg', decimals: 8);
200 static const tzec = CryptoCurrency(title: 'tZEC', tag: 'ZEC', fullName: 'Transparent Zcash', raw: 43, name: 'zec', iconPath: 'assets/new-ui/crypto_full_icons/zcash.svg', decimals: 8);
201 static const zen = CryptoCurrency(title: 'ZEN', fullName: 'Horizen', raw: 44, name: 'zen', iconPath: 'assets/images/zen_icon.png', decimals: 8);
202 static const xvg = CryptoCurrency(title: 'XVG', fullName: 'Verge', raw: 45, name: 'xvg', iconPath: 'assets/images/xvg_icon.png', decimals: 8);
203
201 - static const usdcpoly = CryptoCurrency(title: 'USDC', tag: 'POL', fullName: 'USDC', raw: 46, name: 'usdcpoly', iconPath: 'assets/new-ui/crypto_full_icons/usdc.svg', decimals: 6);
204 + static const usdcpoly = CryptoCurrency(title: 'USDC', tag: 'POL', fullName: 'USDC', raw: 46, name: 'usdcpoly', iconPath: 'assets/new-ui/crypto_full_icons/usdc.svg', decimals: 6, groups: const {CurrencyGroups.stablecoin});
205 static const dcr = CryptoCurrency(title: 'DCR', fullName: 'Decred', raw: 47, name: 'dcr', iconPath: 'assets/new-ui/crypto_full_icons/decred.svg', decimals: 8, flatIconPath: "assets/new-ui/balance_card_icons/decred.svg");
206 static const kmd = CryptoCurrency(title: 'KMD', fullName: 'Komodo', raw: 48, name: 'kmd', iconPath: 'assets/images/kmd_icon.png', decimals: 8);
207 static const mana = CryptoCurrency(title: 'MANA', tag: 'ETH', fullName: 'Decentraland', raw: 49, name: 'mana', iconPath: 'assets/images/mana_icon.png', decimals: 18);
@@ -239,29 +242,29 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
242 static const dydx = CryptoCurrency(title: 'DYDX', tag: 'ETH', fullName: 'dYdX', raw: 84, name: 'dydx', iconPath: 'assets/images/dydx_icon.png', decimals: 18);
243 static const steth = CryptoCurrency(title: 'STETH', tag: 'ETH', fullName: 'Lido Staked Ethereum', raw: 85, name: 'steth', iconPath: 'assets/new-ui/crypto_full_icons/ethereum.svg', decimals: 18);
244 static const banano = CryptoCurrency(title: 'BAN', fullName: 'Banano', raw: 86, name: 'banano', iconPath: 'assets/images/nano_icon.png', decimals: 29,flatIconPath: "assets/new-ui/balance_card_icons/nano.svg");
242 - static const usdtPoly = CryptoCurrency(title: 'USDT', tag: 'POL', fullName: 'Tether (PoS)', raw: 87, name: 'usdtpoly', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 6);
245 + static const usdtPoly = CryptoCurrency(title: 'USDT', tag: 'POL', fullName: 'Tether (PoS)', raw: 87, name: 'usdtpoly', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 6, groups: const {CurrencyGroups.stablecoin});
246 static const usdcEPoly = CryptoCurrency(title: 'USDC.E', tag: 'POL', fullName: 'USDC (PoS)', raw: 88, name: 'usdcepoly', iconPath: 'assets/new-ui/crypto_full_icons/usdc.svg', decimals: 6);
247 static const kaspa = CryptoCurrency(title: 'KAS', fullName: 'Kaspa', raw: 89, name: 'kas', iconPath: 'assets/images/kaspa_icon.png', decimals: 8);
248 static const digibyte = CryptoCurrency(title: 'DGB', fullName: 'DigiByte', raw: 90, name: 'dgb', iconPath: 'assets/images/digibyte.png', decimals: 8);
246 - static const usdtSol = CryptoCurrency(title: 'USDT', tag: 'SOL', fullName: 'Tether', raw: 91, name: 'usdtsol', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 6);
247 - static const usdcTrc20 = CryptoCurrency(title: 'USDC', tag: 'TRX', fullName: 'USDC Coin', raw: 92, name: 'usdctrc20', iconPath: 'assets/new-ui/crypto_full_icons/usdc.svg', decimals: 6);
249 + static const usdtSol = CryptoCurrency(title: 'USDT', tag: 'SOL', fullName: 'Tether', raw: 91, name: 'usdtsol', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 6, groups: const {CurrencyGroups.stablecoin});
250 + static const usdcTrc20 = CryptoCurrency(title: 'USDC', tag: 'TRX', fullName: 'USDC Coin', raw: 92, name: 'usdctrc20', iconPath: 'assets/new-ui/crypto_full_icons/usdc.svg', decimals: 6, groups: const {CurrencyGroups.stablecoin});
251 static const tbtc = CryptoCurrency(title: 'tBTC', fullName: 'Testnet Bitcoin', raw: 93, name: 'tbtc', iconPath: 'assets/images/tbtc.png', decimals: 8);
252 static const wow = CryptoCurrency(title: 'WOW', fullName: 'Wownero', raw: 94, name: 'wow', iconPath: 'assets/images/crypto/wownero.svg', decimals: 11);
253 static const ton = CryptoCurrency(title: 'TON', fullName: 'Toncoin', raw: 95, name: 'ton', iconPath: 'assets/new-ui/crypto_full_icons/ton.svg', decimals: 8);
254 static const zano = CryptoCurrency(title: 'ZANO', tag: 'ZANO', fullName: 'Zano', raw: 96, name: 'zano', iconPath: 'assets/new-ui/crypto_full_icons/zano.svg', decimals: 12, flatIconPath: "assets/new-ui/balance_card_icons/zano.svg", chainIconPath: "assets/new-ui/chain_badges/zano.svg");
255 static const flip = CryptoCurrency(title: 'FLIP', tag: 'ETH', fullName: 'Chainflip', raw: 97, name: 'flip', iconPath: 'assets/images/flip_icon.png', decimals: 18);
253 - static const deuro = CryptoCurrency(title: 'DEURO', tag: 'ETH', fullName: 'Decentralized Euro', raw: 98, name: 'deuro', iconPath: 'assets/images/deuro_icon.png',decimals: 18);
254 - static const usdtbsc = CryptoCurrency(title: 'USDT', tag: 'BSC', fullName: 'USDT Binance coin', raw: 99, name: 'usdtbsc', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 18);
256 + static const deuro = CryptoCurrency(title: 'DEURO', tag: 'ETH', fullName: 'Decentralized Euro', raw: 98, name: 'deuro', iconPath: 'assets/images/deuro_icon.png',decimals: 18, groups: const {CurrencyGroups.stablecoin});
257 + static const usdtbsc = CryptoCurrency(title: 'USDT', tag: 'BSC', fullName: 'USDT Binance coin', raw: 99, name: 'usdtbsc', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 18, groups: const {CurrencyGroups.stablecoin});
258 static const ndeps = CryptoCurrency(title: 'NDEPS', tag: 'ETH', fullName: 'Native Decentralized Euro Protocol Share', raw: 100, name: 'ndeps', iconPath: 'assets/images/ndeps_icon.png', decimals: 18);
259 static const deps = CryptoCurrency(title: 'DEPS', tag: 'ETH', fullName: 'Decentralized Euro Protocol Share', raw: 101, name: 'deps', iconPath: 'assets/images/deps_icon.png', decimals: 18);
260 static const kbtc = CryptoCurrency(title: 'KBTC', tag: 'ETH', fullName: 'Kraken Wrapped Bitcoin', raw: 102, name: 'kbtc', iconPath: 'assets/images/kbtc_icon.png', decimals: 8);
261 static const cbbtc = CryptoCurrency(title: 'CBBTC', tag: 'ETH', fullName: 'Coinbase Wrapped BTC', raw: 103, name: 'cbbtc', iconPath: 'assets/images/cbbtc_icon.png', decimals: 8);
259 - static const baseEth = CryptoCurrency(title: 'ETH', tag: 'BASE', fullName: 'Ethereum', raw: 104, name: 'baseth', iconPath: 'assets/new-ui/crypto_full_icons/base.svg', decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/base.svg", chainIconPath: "assets/new-ui/chain_badges/base.svg");
262 + static const baseEth = CryptoCurrency(title: 'ETH', tag: 'BASE', fullName: 'Ethereum', raw: 104, name: 'baseth', iconPath: 'assets/new-ui/crypto_full_icons/ethereum.svg', decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/base.svg", chainIconPath: "assets/new-ui/chain_badges/base.svg");
263 static const usde = CryptoCurrency(title: 'USDE', tag: 'BASE', fullName: 'Ethena USDE', raw: 105, name: 'usde', iconPath: 'assets/new-ui/crypto_full_icons/usde.svg', decimals: 18);
261 - static const arbEth = CryptoCurrency(title: 'ETH', tag: 'ARB', fullName: 'Ethereum', raw: 106, name: 'arbeth', iconPath: 'assets/new-ui/crypto_full_icons/ethereum.svg', decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/arbitrum.svg");
264 + static const arbEth = CryptoCurrency(title: 'ETH', tag: 'ARB', fullName: 'Ethereum', raw: 106, name: 'arbeth', iconPath: 'assets/new-ui/crypto_full_icons/ethereum.svg', decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/arbitrum.svg", chainIconPath: "assets/new-ui/chain_badges/arbitrum.svg");
265 static const zec = CryptoCurrency(title: 'ZEC', fullName: 'Zcash', raw: 107, name: 'zec', iconPath: 'assets/new-ui/crypto_full_icons/zcash.svg', decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/zcash.svg");
263 - static const usdcArb = CryptoCurrency(title: 'USDC', tag: 'ARB', fullName: 'USDC Coin', raw: 108, name: 'usdcarb', iconPath: 'assets/new-ui/crypto_full_icons/usdc.svg', decimals: 6);
264 - static const usdtArb = CryptoCurrency(title: 'USDT', tag: 'ARB', fullName: 'USDT Tether', raw: 109, name: 'usdtarb', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 6);
266 + static const usdcArb = CryptoCurrency(title: 'USDC', tag: 'ARB', fullName: 'USDC Coin', raw: 108, name: 'usdcarb', iconPath: 'assets/new-ui/crypto_full_icons/usdc.svg', decimals: 6, groups: const {CurrencyGroups.stablecoin});
267 + static const usdtArb = CryptoCurrency(title: 'USDT', tag: 'ARB', fullName: 'USDT Tether', raw: 109, name: 'usdtarb', iconPath: 'assets/new-ui/crypto_full_icons/usdt.svg', decimals: 6, groups: const {CurrencyGroups.stablecoin});
268 static const ltcmweb = CryptoCurrency(title: 'LTC', fullName: 'Litecoin MWeb', raw: 110, name: 'ltcmweb', iconPath: 'assets/new-ui/crypto_full_icons/litecoin.svg', decimals: 8);
269
270 static final Map<int, CryptoCurrency> _rawCurrencyMap =
@@ -409,6 +412,7 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
412 int? decimals,
413 bool? enabled,
414 bool? isPotentialScam,
415 + Set<String>? groups,
416 }) =>
417 CryptoCurrency(
418 title: title ?? this.title,
@@ -420,6 +424,7 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
424 decimals: decimals ?? this.decimals,
425 enabled: enabled ?? this.enabled,
426 isPotentialScam: isPotentialScam ?? this.isPotentialScam,
427 + groups: groups ?? this.groups,
428 );
429
430 @override
cw_core/lib/currency_groups.dart new
+4
@@ -0,0 +1,4 @@
1 +abstract class CurrencyGroups {
2 + static const stablecoin = 'stablecoin';
3 + static const tokenizedStock = 'tokenized_stock';
4 +}
cw_core/lib/spl_token.dart
+3
@@ -47,6 +47,7 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
47 this.tag = 'SOL',
48 bool enabled = true,
49 this.isPotentialScam = false,
50 + Set<String> groups = const {},
51 }) : _enabled = enabled,
52 super(
53 name: mint.toLowerCase(),
@@ -56,6 +57,7 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
57 iconPath: iconPath,
58 decimals: decimal,
59 isPotentialScam: isPotentialScam,
60 + groups: groups,
61 );
62
63 factory SPLToken.fromMetadata({
@@ -101,6 +103,7 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
103 tag: other.tag,
104 iconPath: icon,
105 isPotentialScam: other.isPotentialScam,
106 + groups: other.groups,
107 );
108
109 static const typeId = SPL_TOKEN_TYPE_ID;
cw_core/lib/wallet_type.dart
+7 -1
@@ -1,5 +1,6 @@
1 import 'package:cw_core/crypto_currency.dart';
2 import 'package:cw_core/hive_type_ids.dart';
3 +import 'package:cw_core/utils/print_verbose.dart';
4 import 'package:hive/hive.dart';
5
6 part 'wallet_type.g.dart';
@@ -332,13 +333,18 @@ WalletType? _cryptoCurrencyToWalletType(CryptoCurrency type) {
333 }
334
335 WalletType? cryptoCurrencyOrTokenToWalletType(CryptoCurrency type) {
336 + try {
337 if(type.tag == CryptoCurrency.bnb.tag) {
338 return _cryptoCurrencyToWalletType(CryptoCurrency.bnb);
339 }
338 -
340 +
341 if(type.tag != null && ![CryptoCurrency.btcln.tag, CryptoCurrency.bnb.tag].contains(type.tag)) {
342 return _cryptoCurrencyToWalletType(CryptoCurrency.fromString(type.tag!));
343 } else {
344 return _cryptoCurrencyToWalletType(type);
345 }
346 +} catch (e) {
347 + printV(e);
348 + return null;
349 +}
350 }
cw_solana/lib/default_spl_tokens.dart
+65
@@ -1,4 +1,5 @@
1 import 'package:cw_core/crypto_currency.dart';
2 +import 'package:cw_core/currency_groups.dart';
3 import 'package:cw_core/spl_token.dart';
4
5 class DefaultSPLTokens {
@@ -116,6 +117,7 @@ class DefaultSPLTokens {
117 mint: 'abtx',
118 enabled: false,
119 iconPath: 'assets/images/stocks/abtx.webp',
120 + groups: const {CurrencyGroups.tokenizedStock},
121 ),
122 SPLToken(
123 name: 'AbbVie xStock',
@@ -125,6 +127,7 @@ class DefaultSPLTokens {
127 mint: 'abbvx',
128 enabled: false,
129 iconPath: 'assets/images/stocks/abbv.webp',
130 + groups: const {CurrencyGroups.tokenizedStock},
131 ),
132 SPLToken(
133 name: 'Accenture xStock',
@@ -134,6 +137,7 @@ class DefaultSPLTokens {
137 mint: 'acnx',
138 enabled: false,
139 iconPath: 'assets/images/stocks/acnx.webp',
140 + groups: const {CurrencyGroups.tokenizedStock},
141 ),
142 SPLToken(
143 name: 'Alphabet xStock',
@@ -143,6 +147,7 @@ class DefaultSPLTokens {
147 mint: 'googlx',
148 enabled: false,
149 iconPath: 'assets/images/stocks/googlx.webp',
150 + groups: const {CurrencyGroups.tokenizedStock},
151 ),
152 SPLToken(
153 name: 'Amazon xStock',
@@ -152,6 +157,7 @@ class DefaultSPLTokens {
157 mint: 'amznx',
158 enabled: false,
159 iconPath: 'assets/images/stocks/amznx.webp',
160 + groups: const {CurrencyGroups.tokenizedStock},
161 ),
162 SPLToken(
163 name: 'Amber xStock',
@@ -161,6 +167,7 @@ class DefaultSPLTokens {
167 mint: 'ambrx',
168 enabled: false,
169 iconPath: 'assets/images/stocks/ambrx.webp',
170 + groups: const {CurrencyGroups.tokenizedStock},
171 ),
172 SPLToken(
173 name: 'Apple xStock',
@@ -170,6 +177,7 @@ class DefaultSPLTokens {
177 mint: 'aaplx',
178 enabled: false,
179 iconPath: 'assets/images/stocks/apple.webp',
180 + groups: const {CurrencyGroups.tokenizedStock},
181 ),
182 SPLToken(
183 name: 'AppLovin xStock',
@@ -179,6 +187,7 @@ class DefaultSPLTokens {
187 mint: 'appx',
188 enabled: false,
189 iconPath: 'assets/images/stocks/appx.webp',
190 + groups: const {CurrencyGroups.tokenizedStock},
191 ),
192 SPLToken(
193 name: 'AstraZeneca xStock',
@@ -188,6 +197,7 @@ class DefaultSPLTokens {
197 mint: 'aznx',
198 enabled: false,
199 iconPath: 'assets/images/stocks/aznx.webp',
200 + groups: const {CurrencyGroups.tokenizedStock},
201 ),
202 SPLToken(
203 name: 'Bank of America xStock',
@@ -197,6 +207,7 @@ class DefaultSPLTokens {
207 mint: 'bacx',
208 enabled: false,
209 iconPath: 'assets/images/stocks/bacx.webp',
210 + groups: const {CurrencyGroups.tokenizedStock},
211 ),
212 SPLToken(
213 name: 'Berkshire Hathaway xStock',
@@ -206,6 +217,7 @@ class DefaultSPLTokens {
217 mint: 'brkbx',
218 enabled: false,
219 iconPath: 'assets/images/stocks/brkbx.webp',
220 + groups: const {CurrencyGroups.tokenizedStock},
221 ),
222 SPLToken(
223 name: 'Broadcom xStock',
@@ -215,6 +227,7 @@ class DefaultSPLTokens {
227 mint: 'avgox',
228 enabled: false,
229 iconPath: 'assets/images/stocks/avgox.webp',
230 + groups: const {CurrencyGroups.tokenizedStock},
231 ),
232 SPLToken(
233 name: 'Chevron xStock',
@@ -224,6 +237,7 @@ class DefaultSPLTokens {
237 mint: 'cvxx',
238 enabled: false,
239 iconPath: 'assets/images/stocks/cvxx.webp',
240 + groups: const {CurrencyGroups.tokenizedStock},
241 ),
242 SPLToken(
243 name: 'Circle xStock',
@@ -233,6 +247,7 @@ class DefaultSPLTokens {
247 mint: 'crclx',
248 enabled: false,
249 iconPath: 'assets/images/stocks/crclx.webp',
250 + groups: const {CurrencyGroups.tokenizedStock},
251 ),
252 SPLToken(
253 name: 'Cisco xStock',
@@ -242,6 +257,7 @@ class DefaultSPLTokens {
257 mint: 'cscx',
258 enabled: false,
259 iconPath: 'assets/images/stocks/cscox.webp',
260 + groups: const {CurrencyGroups.tokenizedStock},
261 ),
262 SPLToken(
263 name: 'Coca-Cola xStock',
@@ -251,6 +267,7 @@ class DefaultSPLTokens {
267 mint: 'kox',
268 enabled: false,
269 iconPath: 'assets/images/stocks/kox.webp',
270 + groups: const {CurrencyGroups.tokenizedStock},
271 ),
272 SPLToken(
273 name: 'Coinbase xStock',
@@ -260,6 +277,7 @@ class DefaultSPLTokens {
277 mint: 'coinx',
278 enabled: false,
279 iconPath: 'assets/images/stocks/coinx.webp',
280 + groups: const {CurrencyGroups.tokenizedStock},
281 ),
282 SPLToken(
283 name: 'Comcast xStock',
@@ -269,6 +287,7 @@ class DefaultSPLTokens {
287 mint: 'cmcsax',
288 enabled: false,
289 iconPath: 'assets/images/stocks/cmcsax.webp',
290 + groups: const {CurrencyGroups.tokenizedStock},
291 ),
292 SPLToken(
293 name: 'CrowdStrike xStock',
@@ -278,6 +297,7 @@ class DefaultSPLTokens {
297 mint: 'crwdx',
298 enabled: false,
299 iconPath: 'assets/images/stocks/crwdx.webp',
300 + groups: const {CurrencyGroups.tokenizedStock},
301 ),
302 SPLToken(
303 name: 'Danaher xStock',
@@ -287,6 +307,7 @@ class DefaultSPLTokens {
307 mint: 'dhrx',
308 enabled: false,
309 iconPath: 'assets/images/stocks/dhrx.webp',
310 + groups: const {CurrencyGroups.tokenizedStock},
311 ),
312 SPLToken(
313 name: 'DFDV xStock',
@@ -296,6 +317,7 @@ class DefaultSPLTokens {
317 mint: 'dfdvx',
318 enabled: false,
319 iconPath: 'assets/images/stocks/dfdvx.webp',
320 + groups: const {CurrencyGroups.tokenizedStock},
321 ),
322 SPLToken(
323 name: 'Eli Lilly xStock',
@@ -305,6 +327,7 @@ class DefaultSPLTokens {
327 mint: 'llyx',
328 enabled: false,
329 iconPath: 'assets/images/stocks/llyx.webp',
330 + groups: const {CurrencyGroups.tokenizedStock},
331 ),
332 SPLToken(
333 name: 'Exxon Mobil xStock',
@@ -314,6 +337,7 @@ class DefaultSPLTokens {
337 mint: 'xomx',
338 enabled: false,
339 iconPath: 'assets/images/stocks/xomx.webp',
340 + groups: const {CurrencyGroups.tokenizedStock},
341 ),
342 SPLToken(
343 name: 'Gamestop xStock',
@@ -323,6 +347,7 @@ class DefaultSPLTokens {
347 mint: 'gmex',
348 enabled: false,
349 iconPath: 'assets/images/stocks/gmex.webp',
350 + groups: const {CurrencyGroups.tokenizedStock},
351 ),
352 SPLToken(
353 name: 'Gold xStock',
@@ -332,6 +357,7 @@ class DefaultSPLTokens {
357 mint: 'gldx',
358 enabled: false,
359 iconPath: 'assets/images/stocks/gldx.webp',
360 + groups: const {CurrencyGroups.tokenizedStock},
361 ),
362 SPLToken(
363 name: 'Goldman Sachs xStock',
@@ -341,6 +367,7 @@ class DefaultSPLTokens {
367 mint: 'gsx',
368 enabled: false,
369 iconPath: 'assets/images/stocks/gsx.webp',
370 + groups: const {CurrencyGroups.tokenizedStock},
371 ),
372 SPLToken(
373 name: 'Home Depot xStock',
@@ -350,6 +377,7 @@ class DefaultSPLTokens {
377 mint: 'hdx',
378 enabled: false,
379 iconPath: 'assets/images/stocks/hdx.webp',
380 + groups: const {CurrencyGroups.tokenizedStock},
381 ),
382 SPLToken(
383 name: 'Honeywell xStock',
@@ -359,6 +387,7 @@ class DefaultSPLTokens {
387 mint: 'honx',
388 enabled: false,
389 iconPath: 'assets/images/stocks/honx.webp',
390 + groups: const {CurrencyGroups.tokenizedStock},
391 ),
392 SPLToken(
393 name: 'Intel xStock',
@@ -368,6 +397,7 @@ class DefaultSPLTokens {
397 mint: 'intcx',
398 enabled: false,
399 iconPath: 'assets/images/stocks/intcx.webp',
400 + groups: const {CurrencyGroups.tokenizedStock},
401 ),
402 SPLToken(
403 name: 'International Business Machines xStock',
@@ -377,6 +407,7 @@ class DefaultSPLTokens {
407 mint: 'ibmx',
408 enabled: false,
409 iconPath: 'assets/images/stocks/ibmx.webp',
410 + groups: const {CurrencyGroups.tokenizedStock},
411 ),
412 SPLToken(
413 name: 'Johnson & Johnson xStock',
@@ -386,6 +417,7 @@ class DefaultSPLTokens {
417 mint: 'jnjx',
418 enabled: false,
419 iconPath: 'assets/images/stocks/jnjx.webp',
420 + groups: const {CurrencyGroups.tokenizedStock},
421 ),
422 SPLToken(
423 name: 'JPMorgan Chase xStock',
@@ -395,6 +427,7 @@ class DefaultSPLTokens {
427 mint: 'jpmx',
428 enabled: false,
429 iconPath: 'assets/images/stocks/jpmx.webp',
430 + groups: const {CurrencyGroups.tokenizedStock},
431 ),
432 SPLToken(
433 name: 'Linde xStock',
@@ -404,6 +437,7 @@ class DefaultSPLTokens {
437 mint: 'linx',
438 enabled: false,
439 iconPath: 'assets/images/stocks/linx.webp',
440 + groups: const {CurrencyGroups.tokenizedStock},
441 ),
442 SPLToken(
443 name: 'Marvell xStock',
@@ -413,6 +447,7 @@ class DefaultSPLTokens {
447 mint: 'mrvlx',
448 enabled: false,
449 iconPath: 'assets/images/stocks/mrvlx.webp',
450 + groups: const {CurrencyGroups.tokenizedStock},
451 ),
452 SPLToken(
453 name: 'Mastercard xStock',
@@ -422,6 +457,7 @@ class DefaultSPLTokens {
457 mint: 'max',
458 enabled: false,
459 iconPath: 'assets/images/stocks/mastercard.webp',
460 + groups: const {CurrencyGroups.tokenizedStock},
461 ),
462 SPLToken(
463 name: 'McDonald\'s xStock',
@@ -431,6 +467,7 @@ class DefaultSPLTokens {
467 mint: 'mcdx',
468 enabled: false,
469 iconPath: 'assets/images/stocks/mcdonalds.webp',
470 + groups: const {CurrencyGroups.tokenizedStock},
471 ),
472 SPLToken(
473 name: 'Medtronic xStock',
@@ -440,6 +477,7 @@ class DefaultSPLTokens {
477 mint: 'mdtx',
478 enabled: false,
479 iconPath: 'assets/images/stocks/mdtx.webp',
480 + groups: const {CurrencyGroups.tokenizedStock},
481 ),
482 SPLToken(
483 name: 'Merck xStock',
@@ -449,6 +487,7 @@ class DefaultSPLTokens {
487 mint: 'mrkx',
488 enabled: false,
489 iconPath: 'assets/images/stocks/mrkx.webp',
490 + groups: const {CurrencyGroups.tokenizedStock},
491 ),
492 SPLToken(
493 name: 'Meta xStock',
@@ -458,6 +497,7 @@ class DefaultSPLTokens {
497 mint: 'metax',
498 enabled: false,
499 iconPath: 'assets/images/stocks/metax.webp',
500 + groups: const {CurrencyGroups.tokenizedStock},
501 ),
502 SPLToken(
503 name: 'Microsoft xStock',
@@ -467,6 +507,7 @@ class DefaultSPLTokens {
507 mint: 'msftx',
508 enabled: false,
509 iconPath: 'assets/images/stocks/msftx.webp',
510 + groups: const {CurrencyGroups.tokenizedStock},
511 ),
512 SPLToken(
513 name: 'MicroStrategy xStock',
@@ -476,6 +517,7 @@ class DefaultSPLTokens {
517 mint: 'mstrx',
518 enabled: false,
519 iconPath: 'assets/images/stocks/mstrx.webp',
520 + groups: const {CurrencyGroups.tokenizedStock},
521 ),
522 SPLToken(
523 name: 'Nasdaq xStock',
@@ -485,6 +527,7 @@ class DefaultSPLTokens {
527 mint: 'qqqx',
528 enabled: false,
529 iconPath: 'assets/images/stocks/qqqx.webp',
530 + groups: const {CurrencyGroups.tokenizedStock},
531 ),
532 SPLToken(
533 name: 'Netflix xStock',
@@ -494,6 +537,7 @@ class DefaultSPLTokens {
537 mint: 'nflxx',
538 enabled: false,
539 iconPath: 'assets/images/stocks/nflxx.webp',
540 + groups: const {CurrencyGroups.tokenizedStock},
541 ),
542 SPLToken(
543 name: 'Novo Nordisk xStock',
@@ -503,6 +547,7 @@ class DefaultSPLTokens {
547 mint: 'nvox',
548 enabled: false,
549 iconPath: 'assets/images/stocks/nvox.webp',
550 + groups: const {CurrencyGroups.tokenizedStock},
551 ),
552 SPLToken(
553 name: 'NVIDIA xStock',
@@ -512,6 +557,7 @@ class DefaultSPLTokens {
557 mint: 'nvdax',
558 enabled: false,
559 iconPath: 'assets/images/stocks/nvdax.webp',
560 + groups: const {CurrencyGroups.tokenizedStock},
561 ),
562 SPLToken(
563 name: 'OPEN xStock',
@@ -521,6 +567,7 @@ class DefaultSPLTokens {
567 mint: 'openx',
568 enabled: false,
569 iconPath: 'assets/images/stocks/openx.webp',
570 + groups: const {CurrencyGroups.tokenizedStock},
571 ),
572 SPLToken(
573 name: 'Oracle xStock',
@@ -530,6 +577,7 @@ class DefaultSPLTokens {
577 mint: 'orclx',
578 enabled: false,
579 iconPath: 'assets/images/stocks/orclx.webp',
580 + groups: const {CurrencyGroups.tokenizedStock},
581 ),
582 SPLToken(
583 name: 'Palantir xStock',
@@ -539,6 +587,7 @@ class DefaultSPLTokens {
587 mint: 'pltrx',
588 enabled: false,
589 iconPath: 'assets/images/stocks/pltrx.webp',
590 + groups: const {CurrencyGroups.tokenizedStock},
591 ),
592 SPLToken(
593 name: 'PepsiCo xStock',
@@ -548,6 +597,7 @@ class DefaultSPLTokens {
597 mint: 'pepx',
598 enabled: false,
599 iconPath: 'assets/images/stocks/pepx.webp',
600 + groups: const {CurrencyGroups.tokenizedStock},
601 ),
602 SPLToken(
603 name: 'Pfizer xStock',
@@ -557,6 +607,7 @@ class DefaultSPLTokens {
607 mint: 'pfex',
608 enabled: false,
609 iconPath: 'assets/images/stocks/pfex.webp',
610 + groups: const {CurrencyGroups.tokenizedStock},
611 ),
612 SPLToken(
613 name: 'Philip Morris xStock',
@@ -566,6 +617,7 @@ class DefaultSPLTokens {
617 mint: 'pmx',
618 enabled: false,
619 iconPath: 'assets/images/stocks/pmx.webp',
620 + groups: const {CurrencyGroups.tokenizedStock},
621 ),
622 SPLToken(
623 name: 'Procter & Gamble xStock',
@@ -575,6 +627,7 @@ class DefaultSPLTokens {
627 mint: 'pgx',
628 enabled: false,
629 iconPath: 'assets/images/stocks/pgx.webp',
630 + groups: const {CurrencyGroups.tokenizedStock},
631 ),
632 SPLToken(
633 name: 'Robinhood xStock',
@@ -584,6 +637,7 @@ class DefaultSPLTokens {
637 mint: 'hoodx',
638 enabled: false,
639 iconPath: 'assets/images/stocks/hoodx.webp',
640 + groups: const {CurrencyGroups.tokenizedStock},
641 ),
642 SPLToken(
643 name: 'Salesforce xStock',
@@ -593,6 +647,7 @@ class DefaultSPLTokens {
647 mint: 'crmx',
648 enabled: false,
649 iconPath: 'assets/images/stocks/crmx.webp',
650 + groups: const {CurrencyGroups.tokenizedStock},
651 ),
652 SPLToken(
653 name: 'SP500 xStock',
@@ -602,6 +657,7 @@ class DefaultSPLTokens {
657 mint: 'spyx',
658 enabled: false,
659 iconPath: 'assets/images/stocks/spyx.webp',
660 + groups: const {CurrencyGroups.tokenizedStock},
661 ),
662 SPLToken(
663 name: 'TBLL xStock',
@@ -611,6 +667,7 @@ class DefaultSPLTokens {
667 mint: 'tbllx',
668 enabled: false,
669 iconPath: 'assets/images/stocks/tbllx.webp',
670 + groups: const {CurrencyGroups.tokenizedStock},
671 ),
672 SPLToken(
673 name: 'Tesla xStock',
@@ -620,6 +677,7 @@ class DefaultSPLTokens {
677 mint: 'tslax',
678 enabled: false,
679 iconPath: 'assets/images/stocks/tslax.webp',
680 + groups: const {CurrencyGroups.tokenizedStock},
681 ),
682 SPLToken(
683 name: 'Thermo Fisher xStock',
@@ -629,6 +687,7 @@ class DefaultSPLTokens {
687 mint: 'tmox',
688 enabled: false,
689 iconPath: 'assets/images/stocks/tmox.webp',
690 + groups: const {CurrencyGroups.tokenizedStock},
691 ),
692 SPLToken(
693 name: 'TON xStock',
@@ -638,6 +697,7 @@ class DefaultSPLTokens {
697 mint: 'tonxx',
698 enabled: false,
699 iconPath: 'assets/images/stocks/tonxx.webp',
700 + groups: const {CurrencyGroups.tokenizedStock},
701 ),
702 SPLToken(
703 name: 'TQQQ xStock',
@@ -647,6 +707,7 @@ class DefaultSPLTokens {
707 mint: 'tqqqx',
708 enabled: false,
709 iconPath: 'assets/images/stocks/tqqqx.webp',
710 + groups: const {CurrencyGroups.tokenizedStock},
711 ),
712 SPLToken(
713 name: 'UnitedHealth xStock',
@@ -656,6 +717,7 @@ class DefaultSPLTokens {
717 mint: 'unhx',
718 enabled: false,
719 iconPath: 'assets/images/stocks/unhx.webp',
720 + groups: const {CurrencyGroups.tokenizedStock},
721 ),
722 SPLToken(
723 name: 'Vanguard xStock',
@@ -665,6 +727,7 @@ class DefaultSPLTokens {
727 mint: 'vtix',
728 enabled: false,
729 iconPath: 'assets/images/stocks/vtix.webp',
730 + groups: const {CurrencyGroups.tokenizedStock},
731 ),
732 SPLToken(
733 name: 'Visa xStock',
@@ -674,6 +737,7 @@ class DefaultSPLTokens {
737 mint: 'vx',
738 enabled: false,
739 iconPath: 'assets/images/stocks/vx.webp',
740 + groups: const {CurrencyGroups.tokenizedStock},
741 ),
742 SPLToken(
743 name: 'Walmart xStock',
@@ -683,6 +747,7 @@ class DefaultSPLTokens {
747 mint: 'wmtx',
748 enabled: false,
749 iconPath: 'assets/images/stocks/wmtx.webp',
750 + groups: const {CurrencyGroups.tokenizedStock},
751 ),
752 ];
753
lib/new-ui/pages/send_page.dart
+37 -22
@@ -4,7 +4,6 @@ import 'package:cake_wallet/core/execution_state.dart';
4 import 'package:cake_wallet/core/open_crypto_pay/open_cryptopay_service.dart';
5 import 'package:cake_wallet/di.dart';
6 import 'package:cake_wallet/entities/contact_record.dart';
7 -import 'package:cake_wallet/entities/fiat_currency.dart';
7 import 'package:cake_wallet/entities/priority_for_wallet_type.dart';
8 import 'package:cake_wallet/evm/evm.dart';
9 import 'package:cake_wallet/exchange/trade.dart';
@@ -13,6 +12,9 @@ import 'package:cake_wallet/monero/monero.dart';
12 import 'package:cake_wallet/new-ui/modal_navigator.dart';
13 import 'package:cake_wallet/new-ui/pages/coin_control_page.dart';
14 import 'package:cake_wallet/new-ui/widgets/animated_dropdown.dart';
15 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_args.dart';
16 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_sheet.dart';
17 +import 'package:cake_wallet/new-ui/widgets/currency_picker/fiat_currency_picker_sheet.dart';
18 import 'package:cake_wallet/new-ui/widgets/keyboard_hide_overlay.dart';
19 import 'package:cake_wallet/new-ui/widgets/picker.dart';
20 import 'package:cake_wallet/new-ui/widgets/send_page/fiat_amount_bar.dart';
@@ -36,7 +38,6 @@ import 'package:cake_wallet/new-ui/widgets/send_page/send_amount_input.dart';
38 import 'package:cake_wallet/new-ui/widgets/send_page/send_syncing_indicator.dart';
39 import 'package:cake_wallet/routes.dart' show Routes;
40 import 'package:cake_wallet/src/screens/connect_device/connect_device_page.dart';
39 -import 'package:cake_wallet/src/screens/exchange/widgets/currency_picker.dart';
41 import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
42 import 'package:cake_wallet/src/widgets/bottom_sheet/info_bottom_sheet_widget.dart';
43 import 'package:cake_wallet/src/widgets/bottom_sheet/payment_confirmation_bottom_sheet.dart';
@@ -51,7 +52,6 @@ import 'package:cake_wallet/view_model/send/send_view_model.dart';
52 import 'package:cake_wallet/view_model/send/send_view_model_state.dart';
53 import 'package:cake_wallet/view_model/wallet_switcher_view_model.dart';
54 import 'package:cw_core/crypto_currency.dart';
54 -import 'package:cw_core/currency.dart';
55 import 'package:cw_core/transaction_priority.dart';
56 import 'package:cw_core/utils/print_verbose.dart';
57
@@ -809,26 +809,41 @@ class _NewSendPageState extends State<NewSendPage> {
809
810 final output = widget.sendViewModel.outputs[_selectedOutput];
811
812 - showPopUp<void>(
813 - context: context,
814 - builder: (_) => CurrencyPicker(
815 - key: ValueKey('send_page_currency_picker_dialog_button_key'),
816 - selectedAtIndex: _fiatInputMode
817 - ? widget.sendViewModel.fiatCurrencies.indexOf(widget.sendViewModel.fiatCurrency)
818 - : widget.sendViewModel.currencies.indexOf(widget.sendViewModel.selectedCryptoCurrency),
819 - items:
820 - _fiatInputMode ? widget.sendViewModel.fiatCurrencies : widget.sendViewModel.currencies,
821 - hintText: S.of(context).search_currency,
822 - onItemSelected: (Currency cur) async {
823 - late final selectedCurrency;
824 - if (_fiatInputMode) {
825 - selectedCurrency = widget.sendViewModel.setFiatCurrency(cur as FiatCurrency);
826 - } else {
827 - selectedCurrency =
828 - widget.sendViewModel.selectedCryptoCurrency = (cur as CryptoCurrency);
829 - }
812 + if (_fiatInputMode) {
813 + FiatCurrencyPickerSheet.show(
814 + context: context,
815 + selected: widget.sendViewModel.fiatCurrency,
816 + onSelected: (cur) async {
817 + widget.sendViewModel.setFiatCurrency(cur);
818 await output.calculateEstimatedFee();
831 - return selectedCurrency;
819 + },
820 + );
821 + return;
822 + }
823 +
824 + final isFiatDisabled = widget.sendViewModel.isFiatDisabled;
825 + final balanceByAsset = <CryptoCurrency, CurrencyPickerBalance>{
826 + for (final r in widget.sendViewModel.balanceViewModel.formattedBalances)
827 + r.asset: CurrencyPickerBalance(
828 + amount: '${r.availableBalance} ${r.asset.title}',
829 + fiat: isFiatDisabled
830 + ? null
831 + : '${r.fiatAvailableBalanceRaw} ${r.fiatCurrencyTicker}',
832 + fiatValue: isFiatDisabled ? null : double.tryParse(r.fiatAvailableBalanceRaw),
833 + ),
834 + };
835 +
836 + CurrencyPickerSheet.show(
837 + context: context,
838 + args: CurrencyPickerArgs(
839 + items: widget.sendViewModel.currencies,
840 + selected: widget.sendViewModel.selectedCryptoCurrency,
841 + filterByNetwork: widget.sendViewModel.walletType,
842 + balanceByAsset: balanceByAsset,
843 + symbolResolver: widget.sendViewModel.amountParsingProxy.getCryptoSymbol,
844 + onSelected: (currency) {
845 + widget.sendViewModel.selectedCryptoCurrency = currency;
846 + output.calculateEstimatedFee();
847 },
848 ),
849 );
lib/new-ui/pages/swap_page.dart
+15 -14
@@ -20,8 +20,9 @@ import 'package:cake_wallet/new-ui/widgets/swap_page/refund_address_modal.dart';
20 import 'package:cake_wallet/new-ui/widgets/swap_page/swap_address_selection_modal.dart';
21 import 'package:cake_wallet/new-ui/widgets/swap_page/swap_confirm_sheet.dart';
22 import 'package:cake_wallet/new-ui/widgets/swap_page/swap_limit_popup.dart';
23 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_args.dart';
24 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_sheet.dart';
25 import 'package:cake_wallet/new-ui/widgets/swap_page/swap_options_page.dart';
24 -import 'package:cake_wallet/src/screens/exchange/widgets/currency_picker.dart';
26 import 'package:cake_wallet/src/screens/exchange/widgets/present_provider_picker.dart';
27 import 'package:cake_wallet/src/screens/send/widgets/extract_address_from_parsed.dart';
28 import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
@@ -1213,9 +1214,11 @@ class SwapAmountBoxState extends State<SwapAmountBox> {
1214 }
1215
1216 void _presentCurrencyPicker() {
1216 - final currencies = widget.isReceiverCard
1217 + final rawCurrencies = widget.isReceiverCard
1218 ? widget.exchangeViewModel.receiveCurrencies
1219 : widget.exchangeViewModel.depositCurrencies;
1220 + final currencies = rawCurrencies.whereType<CryptoCurrency>().toList();
1221 + appendEvmDefaultTokens(currencies);
1222 if (widget.exchangeViewModel.wallet.type == WalletType.bitcoin) {
1223 currencies.sort((a, b) {
1224 if (a == CryptoCurrency.btcln) return -1;
@@ -1224,20 +1227,18 @@ class SwapAmountBoxState extends State<SwapAmountBox> {
1227 });
1228 }
1229
1227 - showPopUp<void>(
1230 + final selected = widget.isReceiverCard
1231 + ? widget.exchangeViewModel.receiveCurrency
1232 + : widget.exchangeViewModel.depositCurrency;
1233 +
1234 + CurrencyPickerSheet.show(
1235 context: context,
1229 - builder: (_) => CurrencyPicker(
1230 - key: ValueKey('send_page_currency_picker_dialog_button_key'),
1231 - selectedAtIndex: currencies.indexOf(widget.isReceiverCard
1232 - ? widget.exchangeViewModel.receiveCurrency
1233 - : widget.exchangeViewModel.depositCurrency),
1236 + args: CurrencyPickerArgs(
1237 items: currencies,
1235 - hintText: S.of(context).search_currency,
1236 - onItemSelected: (Currency cur) async {
1237 - if (cur is CryptoCurrency) {
1238 - widget.onCurrencySelected(cur);
1239 - }
1240 - },
1238 + selected: selected,
1239 + recentsSource: RecentsSource.trades,
1240 + onSelected: widget.onCurrencySelected,
1241 + symbolResolver: widget.exchangeViewModel.amountParsingProxy.getCryptoSymbol,
1242 ),
1243 );
1244 }
lib/new-ui/widgets/currency_picker/chain_chip_strip.dart new
+83
@@ -0,0 +1,83 @@
1 +import 'package:cake_wallet/generated/i18n.dart';
2 +import 'package:cw_core/wallet_type.dart';
3 +import 'package:flutter/material.dart';
4 +
5 +class ChainChipStrip extends StatelessWidget {
6 + const ChainChipStrip({
7 + super.key,
8 + required this.walletTypes,
9 + required this.selected,
10 + required this.onSelected,
11 + });
12 +
13 + final List<WalletType> walletTypes;
14 + final WalletType? selected;
15 + final ValueChanged<WalletType?> onSelected;
16 +
17 + @override
18 + Widget build(BuildContext context) {
19 + return Container(
20 + padding: const EdgeInsets.only(bottom: 4),
21 + height: 48,
22 + child: ListView(
23 + scrollDirection: Axis.horizontal,
24 + padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 16),
25 + children: [
26 + _ChainChip(
27 + label: S.of(context).picker_chip_all,
28 + isSelected: selected == null,
29 + onTap: () => onSelected(null),
30 + ),
31 + for (final type in walletTypes)
32 + _ChainChip(
33 + label: walletTypeToString(type),
34 + isSelected: selected == type,
35 + onTap: () => onSelected(type),
36 + ),
37 + ],
38 + ),
39 + );
40 + }
41 +}
42 +
43 +class _ChainChip extends StatelessWidget {
44 + const _ChainChip({
45 + required this.label,
46 + required this.isSelected,
47 + required this.onTap,
48 + });
49 +
50 + final String label;
51 + final bool isSelected;
52 + final VoidCallback onTap;
53 +
54 + @override
55 + Widget build(BuildContext context) {
56 + final colors = Theme.of(context).colorScheme;
57 + return Padding(
58 + padding: const EdgeInsetsDirectional.only(end: 8),
59 + child: InkWell(
60 + onTap: onTap,
61 + borderRadius: BorderRadius.circular(80),
62 + child: Container(
63 + padding: const EdgeInsets.symmetric(horizontal: 10),
64 + decoration: BoxDecoration(
65 + color: isSelected ? colors.primary : colors.surfaceContainer,
66 + borderRadius: BorderRadius.circular(20),
67 + ),
68 + child: Center(
69 + child: Text(
70 + label,
71 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
72 + fontWeight: FontWeight.w500,
73 + fontSize: isSelected ? 14 : 12,
74 + letterSpacing: -0.07,
75 + color: isSelected ? colors.onPrimary : colors.primary,
76 + ),
77 + ),
78 + ),
79 + ),
80 + ),
81 + );
82 + }
83 +}
lib/new-ui/widgets/currency_picker/currency_picker_args.dart new
+77
@@ -0,0 +1,77 @@
1 +import 'package:cake_wallet/evm/evm.dart';
2 +import 'package:cw_core/crypto_currency.dart';
3 +import 'package:cw_core/currency_for_wallet_type.dart';
4 +import 'package:cw_core/currency_groups.dart';
5 +import 'package:cw_core/wallet_type.dart';
6 +
7 +String chainNameForCurrency(CryptoCurrency c) {
8 + if (c == CryptoCurrency.btcln) return 'Lightning';
9 + final wt = cryptoCurrencyOrTokenToWalletType(c);
10 + return wt != null ? walletTypeToString(wt) : (c.tag ?? '');
11 +}
12 +
13 +final Set<String> _stablecoinSymbols = {
14 + for (final c in CryptoCurrency.all)
15 + if (c.groups.contains(CurrencyGroups.stablecoin)) c.title.toUpperCase(),
16 +};
17 +
18 +bool isTrustedStablecoin(CryptoCurrency c) =>
19 + (c.groups.contains(CurrencyGroups.stablecoin) ||
20 + _stablecoinSymbols.contains(c.title.toUpperCase())) && !c.isPotentialScam;
21 +
22 +const _kEvmDefaultTokenNatives = <CryptoCurrency>[
23 + CryptoCurrency.baseEth,
24 + CryptoCurrency.arbEth,
25 + CryptoCurrency.maticpoly,
26 +];
27 +
28 +void appendEvmDefaultTokens(List<CryptoCurrency> into) {
29 + if (evm == null) return;
30 + String keyFor(CryptoCurrency c) {
31 + final wt = cryptoCurrencyOrTokenToWalletType(c);
32 + final chain = wt?.toString() ?? (c.tag ?? '').toUpperCase();
33 + return '${c.title.toUpperCase()}|$chain';
34 + }
35 +
36 + final seen = <String>{for (final c in into) keyFor(c)};
37 + for (final native in _kEvmDefaultTokenNatives) {
38 + final chainId = getChainIdByCryptoCurrency(native);
39 + if (chainId == null) continue;
40 + for (final t in evm!.getDefaultTokensByChainId(chainId)) {
41 + if (seen.add(keyFor(t))) into.add(t);
42 + }
43 + }
44 +}
45 +
46 +class CurrencyPickerBalance {
47 + const CurrencyPickerBalance(
48 + {required this.amount, this.fiat, this.fiatValue});
49 +
50 + final String amount;
51 + final String? fiat;
52 + final double? fiatValue;
53 +}
54 +
55 +enum RecentsSource { none, trades, orders }
56 +
57 +class CurrencyPickerArgs {
58 + const CurrencyPickerArgs({
59 + this.selected,
60 + required this.items,
61 + this.balanceByAsset,
62 + this.filterByNetwork,
63 + required this.onSelected,
64 + required this.symbolResolver,
65 + this.recentsSource = RecentsSource.none,
66 + });
67 +
68 + final CryptoCurrency? selected;
69 + final List<CryptoCurrency> items;
70 + final WalletType? filterByNetwork;
71 + final void Function(CryptoCurrency) onSelected;
72 + final String Function(CryptoCurrency) symbolResolver;
73 + final Map<CryptoCurrency, CurrencyPickerBalance>? balanceByAsset;
74 + final RecentsSource recentsSource;
75 +
76 + bool get isPreFiltered => filterByNetwork != null;
77 +}
lib/new-ui/widgets/currency_picker/currency_picker_list_container.dart new
+32
@@ -0,0 +1,32 @@
1 +import 'package:flutter/material.dart';
2 +
3 +class CurrencyPickerListContainer extends StatelessWidget {
4 + const CurrencyPickerListContainer({super.key, required this.rows});
5 +
6 + final List<Widget> rows;
7 +
8 + @override
9 + Widget build(BuildContext context) {
10 + final colors = Theme.of(context).colorScheme;
11 + final children = <Widget>[];
12 + for (var i = 0; i < rows.length; i++) {
13 + children.add(rows[i]);
14 + if (i != rows.length - 1) {
15 + children.add(Divider(
16 + height: 1,
17 + thickness: 1,
18 + color: colors.surfaceContainerHigh,
19 + indent: 56,
20 + endIndent: 24,
21 + ));
22 + }
23 + }
24 + return Container(
25 + decoration: BoxDecoration(
26 + color: colors.surfaceContainer,
27 + borderRadius: BorderRadius.circular(18),
28 + ),
29 + child: Column(mainAxisSize: MainAxisSize.min, children: children),
30 + );
31 + }
32 +}
lib/new-ui/widgets/currency_picker/currency_picker_row.dart new
+140
@@ -0,0 +1,140 @@
1 +import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
2 +import 'package:cw_core/crypto_currency.dart';
3 +import 'package:flutter/material.dart';
4 +
5 +class CurrencyPickerRow extends StatelessWidget {
6 + const CurrencyPickerRow({
7 + super.key,
8 + required this.currency,
9 + required this.isSelected,
10 + required this.trailing,
11 + required this.onTap,
12 + this.chainPillLabel,
13 + this.chainBadgePath,
14 + });
15 +
16 + final CryptoCurrency currency;
17 + final bool isSelected;
18 + final Widget trailing;
19 + final VoidCallback onTap;
20 + final String? chainPillLabel;
21 + final String? chainBadgePath;
22 +
23 + @override
24 + Widget build(BuildContext context) {
25 + final colors = Theme.of(context).colorScheme;
26 + return InkWell(
27 + onTap: onTap,
28 + child: Padding(
29 + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 12),
30 + child: Row(
31 + children: [
32 + _IconWithBadge(currency: currency, badgePath: chainBadgePath),
33 + const SizedBox(width: 12),
34 + Expanded(
35 + child: Row(
36 + children: [
37 + Flexible(
38 + child: Text(
39 + currency.fullName ?? currency.title,
40 + overflow: TextOverflow.ellipsis,
41 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
42 + fontWeight: FontWeight.w500,
43 + ),
44 + ),
45 + ),
46 + if (chainPillLabel != null) ...[
47 + const SizedBox(width: 8),
48 + Container(
49 + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2),
50 + decoration: BoxDecoration(
51 + color: colors.surfaceContainerHigh,
52 + borderRadius: BorderRadius.circular(10),
53 + ),
54 + child: Text(
55 + chainPillLabel!,
56 + style: Theme.of(context).textTheme.bodySmall?.copyWith(
57 + fontWeight: FontWeight.w500,
58 + color: colors.onSecondaryContainer,
59 + ),
60 + ),
61 + ),
62 + ],
63 + ],
64 + ),
65 + ),
66 + const SizedBox(width: 8),
67 + trailing,
68 + const SizedBox(width: 8),
69 + Icon(
70 + Icons.chevron_right,
71 + size: 20,
72 + color: isSelected ? colors.primary : colors.onSurfaceVariant,
73 + ),
74 + ],
75 + ),
76 + ),
77 + );
78 + }
79 +}
80 +
81 +class _IconWithBadge extends StatelessWidget {
82 + const _IconWithBadge({required this.currency, required this.badgePath});
83 +
84 + final CryptoCurrency currency;
85 + final String? badgePath;
86 +
87 + @override
88 + Widget build(BuildContext context) {
89 + final icon = CakeImageWidget(
90 + imageUrl: currency.iconPath,
91 + width: 32,
92 + height: 32,
93 + fit: BoxFit.cover,
94 + errorWidget: Container(
95 + width: 32,
96 + height: 32,
97 + child: Center(
98 + child: Text(
99 + currency.title.length >= 2 ? currency.title.substring(0, 2) : currency.title,
100 + ),
101 + ),
102 + ),
103 + );
104 + if (badgePath == null) return icon;
105 + return SizedBox(
106 + width: 36,
107 + height: 36,
108 + child: Stack(
109 + clipBehavior: Clip.none,
110 + children: [
111 + icon,
112 + Positioned(
113 + right: -2,
114 + bottom: -2,
115 + child: Container(
116 + width: 18,
117 + height: 18,
118 + decoration: BoxDecoration(
119 + borderRadius: BorderRadius.circular(6),
120 + border: Border.all(
121 + color: Theme.of(context).colorScheme.surfaceContainerHigh,
122 + width: 2,
123 + ),
124 + color: Theme.of(context).colorScheme.onSurface,
125 + ),
126 + padding: const EdgeInsets.all(2),
127 + child: CakeImageWidget(
128 + imageUrl: badgePath,
129 + color: Theme.of(context).colorScheme.surface,
130 + width: 13,
131 + height: 13,
132 + fit: BoxFit.cover,
133 + ),
134 + ),
135 + ),
136 + ],
137 + ),
138 + );
139 + }
140 +}
lib/new-ui/widgets/currency_picker/currency_picker_search_field.dart new
+68
@@ -0,0 +1,68 @@
1 +import 'package:cw_core/crypto_currency.dart';
2 +import 'package:flutter/material.dart';
3 +
4 +class CurrencyPickerSearchField extends StatelessWidget {
5 + const CurrencyPickerSearchField({
6 + super.key,
7 + required this.controller,
8 + required this.hintText,
9 + });
10 +
11 + final TextEditingController controller;
12 + final String hintText;
13 +
14 + @override
15 + Widget build(BuildContext context) {
16 + final colors = Theme.of(context).colorScheme;
17 + return Padding(
18 + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
19 + child: Container(
20 + height: 48,
21 + padding: const EdgeInsets.symmetric(horizontal: 14),
22 + decoration: BoxDecoration(
23 + color: colors.surfaceContainer,
24 + border: Border.all(color: colors.surfaceContainer, width: 1),
25 + borderRadius: BorderRadius.circular(28),
26 + ),
27 + child: Row(
28 + children: [
29 + Icon(Icons.search, size: 20, color: colors.primary),
30 + const SizedBox(width: 10),
31 + Expanded(
32 + child: TextFormField(
33 + controller: controller,
34 + style: Theme.of(context).textTheme.bodyMedium,
35 + decoration: InputDecoration(
36 + isCollapsed: true,
37 + border: InputBorder.none,
38 + focusedBorder: InputBorder.none,
39 + hintText: hintText,
40 + hintStyle: Theme.of(context).textTheme.bodyMedium?.copyWith(
41 + color: colors.onSurfaceVariant,
42 + ),
43 + ),
44 + ),
45 + ),
46 + if (controller.text.isNotEmpty)
47 + InkWell(
48 + onTap: controller.clear,
49 + customBorder: const CircleBorder(),
50 + child: Padding(
51 + padding: const EdgeInsets.all(4),
52 + child: Icon(Icons.close, size: 16, color: colors.onSurfaceVariant),
53 + ),
54 + ),
55 + ],
56 + ),
57 + ),
58 + );
59 + }
60 +}
61 +
62 +bool currencyMatchesQuery(CryptoCurrency c, String query) {
63 + if (query.isEmpty) return true;
64 + final q = query.toLowerCase();
65 + return c.title.toLowerCase().contains(q) ||
66 + c.name.toLowerCase().contains(q) ||
67 + (c.fullName?.toLowerCase().contains(q) ?? false);
68 +}
lib/new-ui/widgets/currency_picker/currency_picker_sheet.dart new
+56
@@ -0,0 +1,56 @@
1 +import 'package:cake_wallet/generated/i18n.dart';
2 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_args.dart';
3 +import 'package:cake_wallet/new-ui/widgets/currency_picker/multi_network_currency_picker.dart';
4 +import 'package:cake_wallet/new-ui/widgets/currency_picker/single_network_currency_picker.dart';
5 +import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart';
6 +import 'package:flutter/material.dart';
7 +
8 +class CurrencyPickerSheet extends StatelessWidget {
9 + const CurrencyPickerSheet({super.key, required this.args});
10 +
11 + final CurrencyPickerArgs args;
12 +
13 + static Future<void> show({
14 + required BuildContext context,
15 + required CurrencyPickerArgs args,
16 + }) {
17 + return showModalBottomSheet<void>(
18 + context: context,
19 + isScrollControlled: true,
20 + useSafeArea: true,
21 + enableDrag: false,
22 + isDismissible: false,
23 + backgroundColor: Colors.transparent,
24 + builder: (_) => CurrencyPickerSheet(args: args),
25 + );
26 + }
27 +
28 + @override
29 + Widget build(BuildContext context) {
30 + final colors = Theme.of(context).colorScheme;
31 + return Padding(
32 + padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
33 + child: Container(
34 + decoration: BoxDecoration(
35 + borderRadius: const BorderRadius.vertical(top: Radius.circular(24)),
36 + color: colors.surface,
37 + ),
38 + child: Column(
39 + mainAxisSize: MainAxisSize.max,
40 + children: [
41 + ModalTopBar(
42 + title: S.of(context).select_asset,
43 + leadingIcon: const Icon(Icons.close),
44 + onLeadingPressed: () => Navigator.of(context).maybePop(),
45 + ),
46 + Expanded(
47 + child: args.isPreFiltered
48 + ? SingleNetworkCurrencyPicker(args: args)
49 + : MultiNetworkCurrencyPicker(args: args),
50 + ),
51 + ],
52 + ),
53 + ),
54 + );
55 + }
56 +}
lib/new-ui/widgets/currency_picker/fiat_currency_picker_sheet.dart new
+314
@@ -0,0 +1,314 @@
1 +import 'package:cake_wallet/entities/fiat_currency.dart';
2 +import 'package:cake_wallet/generated/i18n.dart';
3 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_list_container.dart';
4 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_search_field.dart';
5 +import 'package:cake_wallet/new-ui/widgets/currency_picker/fiat_currency_row.dart';
6 +import 'package:cake_wallet/new-ui/widgets/currency_picker/fiat_currency_search_result.dart';
7 +import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart';
8 +import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
9 +import 'package:cw_core/crypto_currency.dart';
10 +import 'package:flutter/material.dart';
11 +
12 +class FiatCurrencyPickerSheet extends StatefulWidget {
13 + const FiatCurrencyPickerSheet({
14 + super.key,
15 + required this.selected,
16 + required this.onSelected,
17 + this.cryptoOption,
18 + this.onCryptoSelected,
19 + });
20 +
21 + final Object? selected;
22 + final ValueChanged<FiatCurrency> onSelected;
23 + final CryptoCurrency? cryptoOption;
24 + final ValueChanged<CryptoCurrency>? onCryptoSelected;
25 +
26 + static const _popularOrder = <FiatCurrency>[
27 + FiatCurrency.usd,
28 + FiatCurrency.eur,
29 + FiatCurrency.gbp,
30 + FiatCurrency.jpy,
31 + FiatCurrency.cny,
32 + ];
33 +
34 + static Future<void> show({
35 + required BuildContext context,
36 + required Object? selected,
37 + required ValueChanged<FiatCurrency> onSelected,
38 + CryptoCurrency? cryptoOption,
39 + ValueChanged<CryptoCurrency>? onCryptoSelected,
40 + }) {
41 + return showModalBottomSheet<void>(
42 + context: context,
43 + isScrollControlled: true,
44 + useSafeArea: true,
45 + enableDrag: false,
46 + backgroundColor: Colors.transparent,
47 + builder: (_) => FiatCurrencyPickerSheet(
48 + selected: selected,
49 + onSelected: onSelected,
50 + cryptoOption: cryptoOption,
51 + onCryptoSelected: onCryptoSelected,
52 + ),
53 + );
54 + }
55 +
56 + @override
57 + State<FiatCurrencyPickerSheet> createState() => _FiatCurrencyPickerSheetState();
58 +}
59 +
60 +class _FiatCurrencyPickerSheetState extends State<FiatCurrencyPickerSheet> {
61 + final TextEditingController _searchController = TextEditingController();
62 + late final List<FiatCurrency> _allSorted = [...FiatCurrency.all]..sort(
63 + (a, b) => a.fullName.toLowerCase().compareTo(b.fullName.toLowerCase()),
64 + );
65 +
66 + bool get _isSearching => _searchController.text.trim().isNotEmpty;
67 +
68 + @override
69 + void initState() {
70 + super.initState();
71 + _searchController.addListener(() => setState(() {}));
72 + }
73 +
74 + @override
75 + void dispose() {
76 + _searchController.dispose();
77 + super.dispose();
78 + }
79 +
80 + bool _matches(FiatCurrency c, String query) {
81 + if (query.isEmpty) return true;
82 + final q = query.toLowerCase();
83 + return c.fullName.toLowerCase().contains(q) || c.title.toLowerCase().contains(q);
84 + }
85 +
86 + void _selectFiatCurrency(FiatCurrency c) {
87 + widget.onSelected(c);
88 + Navigator.of(context).maybePop();
89 + }
90 +
91 + void _selectCryptoCurrency(CryptoCurrency c) {
92 + widget.onCryptoSelected?.call(c);
93 + Navigator.of(context).maybePop();
94 + }
95 +
96 + @override
97 + Widget build(BuildContext context) {
98 + final colors = Theme.of(context).colorScheme;
99 + final selected = widget.selected;
100 + final selectedFiat = selected is FiatCurrency ? selected : null;
101 + final popular = FiatCurrencyPickerSheet._popularOrder
102 + .where((c) => c != selectedFiat)
103 + .toList(growable: false);
104 + final query = _searchController.text.trim();
105 + final filteredAll = _allSorted.where((c) => _matches(c, query)).toList(growable: false);
106 +
107 + return Padding(
108 + padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
109 + child: Container(
110 + decoration: BoxDecoration(
111 + borderRadius: const BorderRadius.vertical(top: Radius.circular(24)),
112 + color: colors.surface,
113 + ),
114 + child: Column(
115 + mainAxisSize: MainAxisSize.max,
116 + children: [
117 + ModalTopBar(
118 + title: S.of(context).select_fiat_currency_title,
119 + leadingIcon: const Icon(Icons.close),
120 + onLeadingPressed: () => Navigator.of(context).maybePop(),
121 + ),
122 + Expanded(
123 + child: _isSearching
124 + ? FiatCurrencySearchResults(
125 + items: filteredAll,
126 + onSelected: _selectFiatCurrency,
127 + selected: selectedFiat,
128 + )
129 + : FiatCurrencyPickerBody(
130 + selected: selected,
131 + cryptoOption: widget.cryptoOption,
132 + popular: popular,
133 + all: filteredAll,
134 + onSelectedFiat: _selectFiatCurrency,
135 + onSelectedCrypto: _selectCryptoCurrency,
136 + ),
137 + ),
138 + CurrencyPickerSearchField(
139 + controller: _searchController,
140 + hintText: S.of(context).search,
141 + ),
142 + const SizedBox(height: 24),
143 + ],
144 + ),
145 + ),
146 + );
147 + }
148 +}
149 +
150 +class FiatCurrencyPickerBody extends StatelessWidget {
151 + const FiatCurrencyPickerBody({
152 + super.key,
153 + required this.selected,
154 + required this.cryptoOption,
155 + required this.popular,
156 + required this.all,
157 + required this.onSelectedFiat,
158 + required this.onSelectedCrypto,
159 + });
160 +
161 + final Object? selected;
162 + final CryptoCurrency? cryptoOption;
163 + final List<FiatCurrency> popular;
164 + final List<FiatCurrency> all;
165 + final void Function(FiatCurrency) onSelectedFiat;
166 + final void Function(CryptoCurrency) onSelectedCrypto;
167 +
168 + @override
169 + Widget build(BuildContext context) {
170 + final selectedFiat = selected is FiatCurrency ? selected as FiatCurrency : null;
171 + final selectedCrypto = selected is CryptoCurrency ? selected as CryptoCurrency : null;
172 + final showCryptoSection = cryptoOption != null && selectedCrypto == null;
173 +
174 + return ListView(
175 + padding: const EdgeInsets.fromLTRB(16, 8, 16, 16),
176 + children: [
177 + if (selectedFiat != null || selectedCrypto != null) ...[
178 + _SectionHeader(label: S.of(context).picker_section_selected),
179 + CurrencyPickerListContainer(
180 + rows: [
181 + if (selectedFiat != null)
182 + FiatCurrencyRow(
183 + currency: selectedFiat,
184 + isSelected: true,
185 + onTap: () => onSelectedFiat(selectedFiat),
186 + ),
187 + if (selectedCrypto != null)
188 + _CryptoOptionRow(
189 + currency: selectedCrypto,
190 + isSelected: true,
191 + onTap: () => onSelectedCrypto(selectedCrypto),
192 + ),
193 + ],
194 + ),
195 + const SizedBox(height: 16),
196 + ],
197 + if (showCryptoSection) ...[
198 + _SectionHeader(label: S.of(context).picker_section_crypto),
199 + CurrencyPickerListContainer(
200 + rows: [
201 + _CryptoOptionRow(
202 + currency: cryptoOption!,
203 + isSelected: false,
204 + onTap: () => onSelectedCrypto(cryptoOption!),
205 + ),
206 + ],
207 + ),
208 + const SizedBox(height: 16),
209 + ],
210 + if (popular.isNotEmpty) ...[
211 + _SectionHeader(label: S.of(context).picker_section_popular),
212 + CurrencyPickerListContainer(
213 + rows: [
214 + for (final c in popular)
215 + FiatCurrencyRow(
216 + currency: c,
217 + isSelected: false,
218 + onTap: () => onSelectedFiat(c),
219 + ),
220 + ],
221 + ),
222 + const SizedBox(height: 16),
223 + ],
224 + _SectionHeader(label: S.of(context).picker_section_all_currencies),
225 + CurrencyPickerListContainer(
226 + rows: [
227 + for (final c in all)
228 + FiatCurrencyRow(
229 + currency: c,
230 + isSelected: c == selectedFiat,
231 + onTap: () => onSelectedFiat(c),
232 + ),
233 + ],
234 + ),
235 + ],
236 + );
237 + }
238 +}
239 +
240 +class _SectionHeader extends StatelessWidget {
241 + const _SectionHeader({required this.label});
242 +
243 + final String label;
244 +
245 + @override
246 + Widget build(BuildContext context) {
247 + return Padding(
248 + padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 8),
249 + child: Text(
250 + label,
251 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
252 + fontWeight: FontWeight.w500,
253 + color: Theme.of(context).colorScheme.onSurfaceVariant,
254 + ),
255 + ),
256 + );
257 + }
258 +}
259 +
260 +class _CryptoOptionRow extends StatelessWidget {
261 + const _CryptoOptionRow({
262 + required this.currency,
263 + required this.isSelected,
264 + required this.onTap,
265 + });
266 +
267 + final CryptoCurrency currency;
268 + final bool isSelected;
269 + final VoidCallback onTap;
270 +
271 + @override
272 + Widget build(BuildContext context) {
273 + final colors = Theme.of(context).colorScheme;
274 + return InkWell(
275 + onTap: onTap,
276 + child: Padding(
277 + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 12),
278 + child: Row(
279 + children: [
280 + CakeImageWidget(
281 + imageUrl: currency.iconPath,
282 + width: 28,
283 + height: 28,
284 + fit: BoxFit.cover,
285 + ),
286 + const SizedBox(width: 12),
287 + Expanded(
288 + child: Column(
289 + crossAxisAlignment: CrossAxisAlignment.start,
290 + mainAxisSize: MainAxisSize.min,
291 + children: [
292 + Text(
293 + currency.fullName ?? currency.title,
294 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
295 + fontWeight: FontWeight.w500,
296 + ),
297 + ),
298 + const SizedBox(height: 2),
299 + Text(
300 + currency.title,
301 + style: Theme.of(context).textTheme.bodySmall?.copyWith(
302 + color: colors.onSurfaceVariant,
303 + ),
304 + ),
305 + ],
306 + ),
307 + ),
308 + if (isSelected) Icon(Icons.check, size: 20, color: colors.primary),
309 + ],
310 + ),
311 + ),
312 + );
313 + }
314 +}
lib/new-ui/widgets/currency_picker/fiat_currency_row.dart new
+67
@@ -0,0 +1,67 @@
1 +import 'package:cake_wallet/entities/fiat_currency.dart';
2 +import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
3 +import 'package:flutter/material.dart';
4 +
5 +class FiatCurrencyRow extends StatelessWidget {
6 + const FiatCurrencyRow({
7 + required this.currency,
8 + required this.isSelected,
9 + required this.onTap,
10 + });
11 +
12 + final FiatCurrency currency;
13 + final bool isSelected;
14 + final VoidCallback onTap;
15 +
16 + @override
17 + Widget build(BuildContext context) {
18 + final colors = Theme.of(context).colorScheme;
19 + return InkWell(
20 + onTap: onTap,
21 + child: Padding(
22 + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 12),
23 + child: Row(
24 + children: [
25 + ClipRRect(
26 + borderRadius: BorderRadius.circular(4),
27 + child: CakeImageWidget(
28 + imageUrl: 'assets/images/flags/${currency.countryCode}.png',
29 + width: 28,
30 + height: 20,
31 + fit: BoxFit.cover,
32 + errorWidget: Container(
33 + width: 28,
34 + height: 20,
35 + color: colors.surfaceContainer,
36 + ),
37 + ),
38 + ),
39 + const SizedBox(width: 12),
40 + Expanded(
41 + child: Column(
42 + crossAxisAlignment: CrossAxisAlignment.start,
43 + mainAxisSize: MainAxisSize.min,
44 + children: [
45 + Text(
46 + currency.fullName,
47 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
48 + fontWeight: FontWeight.w500,
49 + ),
50 + ),
51 + const SizedBox(height: 2),
52 + Text(
53 + currency.title,
54 + style: Theme.of(context).textTheme.bodySmall?.copyWith(
55 + color: colors.onSurfaceVariant,
56 + ),
57 + ),
58 + ],
59 + ),
60 + ),
61 + if (isSelected) Icon(Icons.check, size: 20, color: colors.primary),
62 + ],
63 + ),
64 + ),
65 + );
66 + }
67 +}
lib/new-ui/widgets/currency_picker/fiat_currency_search_result.dart new
+52
@@ -0,0 +1,52 @@
1 +import 'package:cake_wallet/entities/fiat_currency.dart';
2 +import 'package:cake_wallet/generated/i18n.dart';
3 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_list_container.dart';
4 +import 'package:cake_wallet/new-ui/widgets/currency_picker/fiat_currency_row.dart';
5 +import 'package:flutter/material.dart';
6 +
7 +class FiatCurrencySearchResults extends StatelessWidget {
8 + const FiatCurrencySearchResults({
9 + super.key,
10 + required this.items,
11 + required this.onSelected,
12 + required this.selected,
13 + });
14 +
15 + final List<FiatCurrency> items;
16 + final void Function(FiatCurrency) onSelected;
17 + final FiatCurrency? selected;
18 +
19 + @override
20 + Widget build(BuildContext context) {
21 + if (items.isEmpty) {
22 + return Center(
23 + child: Padding(
24 + padding: const EdgeInsets.all(24),
25 + child: Text(
26 + S.of(context).picker_no_matches,
27 + textAlign: TextAlign.center,
28 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
29 + color: Theme.of(context).colorScheme.onSurfaceVariant,
30 + ),
31 + ),
32 + ),
33 + );
34 + }
35 +
36 + return ListView(
37 + padding: const EdgeInsets.fromLTRB(16, 8, 16, 16),
38 + children: [
39 + CurrencyPickerListContainer(
40 + rows: [
41 + for (final c in items)
42 + FiatCurrencyRow(
43 + currency: c,
44 + isSelected: c == selected,
45 + onTap: () => onSelected(c),
46 + ),
47 + ],
48 + ),
49 + ],
50 + );
51 + }
52 +}
lib/new-ui/widgets/currency_picker/multi_network_currency_picker.dart new
+682
@@ -0,0 +1,682 @@
1 +import 'package:cake_wallet/generated/i18n.dart';
2 +import 'package:cake_wallet/new-ui/widgets/currency_picker/chain_chip_strip.dart';
3 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_args.dart';
4 +import 'package:cake_wallet/new-ui/widgets/currency_picker/picker_recents_loader.dart';
5 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_list_container.dart';
6 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_row.dart';
7 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_search_field.dart';
8 +import 'package:cake_wallet/new-ui/widgets/currency_picker/picker_section_header.dart';
9 +import 'package:cake_wallet/new-ui/widgets/currency_picker/pill_grid.dart';
10 +import 'package:cake_wallet/new-ui/widgets/currency_picker/select_network_page.dart';
11 +import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
12 +import 'package:cake_wallet/wallet_types.g.dart';
13 +import 'package:cw_core/crypto_currency.dart';
14 +import 'package:cw_core/currency_for_wallet_type.dart';
15 +import 'package:cw_core/currency_groups.dart';
16 +import 'package:cw_core/utils/print_verbose.dart';
17 +import 'package:cw_core/wallet_type.dart';
18 +import 'package:flutter/material.dart';
19 +
20 +class MultiNetworkCurrencyPicker extends StatefulWidget {
21 + const MultiNetworkCurrencyPicker({super.key, required this.args});
22 +
23 + final CurrencyPickerArgs args;
24 +
25 + @override
26 + State<MultiNetworkCurrencyPicker> createState() => _MultiNetworkCurrencyPickerState();
27 +}
28 +
29 +class _MultiNetworkCurrencyPickerState extends State<MultiNetworkCurrencyPicker> {
30 + bool _recentsLoaded = false;
31 + WalletType? _selectedNetwork;
32 + List<CryptoCurrency> _recents = const [];
33 + final TextEditingController _searchController = TextEditingController();
34 +
35 + bool get _isSearching => _searchController.text.trim().isNotEmpty;
36 +
37 + late final List<WalletType> _networks = _computeNetworks();
38 +
39 + List<WalletType> _computeNetworks() {
40 + final counts = <WalletType, int>{};
41 + for (final currency in widget.args.items) {
42 + final walletType = cryptoCurrencyOrTokenToWalletType(currency);
43 + if (walletType == null) continue;
44 + counts[walletType] = (counts[walletType] ?? 0) + 1;
45 + }
46 + return counts.entries.where((e) => e.value >= 2).map((e) => e.key).toList(growable: false);
47 + }
48 +
49 + Set<CryptoCurrency> get _natives =>
50 + {for (final walletType in availableWalletTypes) walletTypeToCryptoCurrency(walletType)};
51 +
52 + @override
53 + void initState() {
54 + super.initState();
55 + _searchController.addListener(() => setState(() {}));
56 + _loadRecents();
57 + }
58 +
59 + @override
60 + void dispose() {
61 + _searchController.dispose();
62 + super.dispose();
63 + }
64 +
65 + Future<void> _loadRecents() async {
66 + try {
67 + final recents = await PickerRecentsLoader.load(
68 + source: widget.args.recentsSource,
69 + visibleItems: widget.args.items,
70 + );
71 + if (!mounted) return;
72 + setState(() {
73 + _recents = recents;
74 + _recentsLoaded = true;
75 + });
76 + } catch (e, s) {
77 + printV('load picker recents failed: $e\n$s');
78 + if (!mounted) return;
79 + setState(() => _recentsLoaded = true);
80 + }
81 + }
82 +
83 + bool _matchesNetwork(CryptoCurrency c) {
84 + if (_selectedNetwork == null) return true;
85 + return cryptoCurrencyOrTokenToWalletType(c) == _selectedNetwork;
86 + }
87 +
88 + List<CryptoCurrency> get _visibleItems {
89 + final query = _searchController.text.trim();
90 + return widget.args.items
91 + .where(_hasSupportedChain)
92 + .where((c) => currencyMatchesQuery(c, query) && _matchesNetwork(c))
93 + .toList(growable: false);
94 + }
95 +
96 + bool _hasSupportedChain(CryptoCurrency c) {
97 + if (c.tag == null) return true;
98 + return cryptoCurrencyOrTokenToWalletType(c) != null;
99 + }
100 +
101 + void _selectCurrency(CryptoCurrency currency) {
102 + widget.args.onSelected(currency);
103 + Navigator.of(context).maybePop();
104 + }
105 +
106 + void _onStablecoinPillTapped(CryptoCurrency tapped) {
107 + var variants = widget.args.items
108 + .where((c) =>
109 + isTrustedStablecoin(c) &&
110 + c.title.toUpperCase() == tapped.title.toUpperCase() &&
111 + cryptoCurrencyOrTokenToWalletType(c) != null)
112 + .toList();
113 +
114 + if (_selectedNetwork != null) {
115 + final filtered = variants
116 + .where((c) => cryptoCurrencyOrTokenToWalletType(c) == _selectedNetwork)
117 + .toList(growable: false);
118 + if (filtered.isNotEmpty) variants = filtered;
119 + }
120 +
121 + if (variants.length <= 1) {
122 + _selectCurrency(variants.isNotEmpty ? variants.first : tapped);
123 + return;
124 + }
125 +
126 + Navigator.of(context).push(
127 + PageRouteBuilder<void>(
128 + opaque: true,
129 + transitionDuration: const Duration(milliseconds: 250),
130 + reverseTransitionDuration: const Duration(milliseconds: 250),
131 + pageBuilder: (_, __, ___) => SelectNetworkPage(
132 + assetTitle: tapped.title,
133 + assetFullName: tapped.fullName,
134 + assetIconPath: tapped.iconPath,
135 + variants: variants,
136 + onSelected: widget.args.onSelected,
137 + ),
138 + transitionsBuilder: (_, animation, __, child) => SlideTransition(
139 + position: animation.drive(
140 + Tween<Offset>(begin: const Offset(0, 1), end: Offset.zero)
141 + .chain(CurveTween(curve: Curves.easeInOut)),
142 + ),
143 + child: child,
144 + ),
145 + ),
146 + );
147 + }
148 +
149 + @override
150 + Widget build(BuildContext context) {
151 + return Column(
152 + mainAxisSize: MainAxisSize.max,
153 + children: [
154 + if (_networks.length > 1)
155 + ChainChipStrip(
156 + walletTypes: _networks,
157 + selected: _selectedNetwork,
158 + onSelected: (network) => setState(() => _selectedNetwork = network),
159 + ),
160 + Expanded(
161 + child: _MultiNetworkPickerBody(
162 + items: _visibleItems,
163 + isSearching: _isSearching,
164 + recents: _recents,
165 + recentsLoaded: _recentsLoaded,
166 + natives: _natives,
167 + selected: widget.args.selected,
168 + symbolResolver: widget.args.symbolResolver,
169 + onSelect: _selectCurrency,
170 + onStablecoinTap: _onStablecoinPillTapped,
171 + ),
172 + ),
173 + CurrencyPickerSearchField(
174 + controller: _searchController,
175 + hintText: S.of(context).search,
176 + ),
177 + const SizedBox(height: 24),
178 + ],
179 + );
180 + }
181 +}
182 +
183 +class _MultiNetworkPickerBody extends StatefulWidget {
184 + const _MultiNetworkPickerBody({
185 + required this.items,
186 + required this.isSearching,
187 + required this.recents,
188 + required this.recentsLoaded,
189 + required this.natives,
190 + required this.selected,
191 + required this.symbolResolver,
192 + required this.onSelect,
193 + required this.onStablecoinTap,
194 + });
195 +
196 + final bool isSearching;
197 + final bool recentsLoaded;
198 + final CryptoCurrency? selected;
199 + final List<CryptoCurrency> items;
200 + final List<CryptoCurrency> recents;
201 + final Set<CryptoCurrency> natives;
202 + final void Function(CryptoCurrency) onSelect;
203 + final String Function(CryptoCurrency) symbolResolver;
204 + final void Function(CryptoCurrency) onStablecoinTap;
205 +
206 + @override
207 + State<_MultiNetworkPickerBody> createState() => _MultiNetworkPickerBodyState();
208 +}
209 +
210 +class _MultiNetworkPickerBodyState extends State<_MultiNetworkPickerBody> {
211 + static const int _previewCount = 3;
212 +
213 + final ScrollController _scrollController = ScrollController();
214 + bool _moreCryptosSectionExpanded = false;
215 + bool _xstocksSectionExpanded = false;
216 +
217 + @override
218 + void initState() {
219 + super.initState();
220 + final selected = widget.selected;
221 + if (selected == null) return;
222 +
223 + final moreCryptos = _computeMoreCryptosSection(widget.items);
224 + final xstocks = _computeXstocksSection(widget.items);
225 +
226 + if (moreCryptos.indexOf(selected) >= _previewCount) {
227 + _moreCryptosSectionExpanded = true;
228 + }
229 +
230 + if (xstocks.indexOf(selected) >= _previewCount) {
231 + _xstocksSectionExpanded = true;
232 + }
233 + }
234 +
235 + @override
236 + void dispose() {
237 + _scrollController.dispose();
238 + super.dispose();
239 + }
240 +
241 + List<CryptoCurrency> _computeMoreCryptosSection(List<CryptoCurrency> from) {
242 + final list = from
243 + .where((c) =>
244 + !widget.natives.contains(c) &&
245 + cryptoCurrencyOrTokenToWalletType(c) == null &&
246 + c.tag == null &&
247 + !c.groups.contains(CurrencyGroups.stablecoin) &&
248 + !c.groups.contains(CurrencyGroups.tokenizedStock))
249 + .toList();
250 +
251 + list.sort((a, b) => (a.fullName ?? a.title).toLowerCase().compareTo(
252 + (b.fullName ?? b.title).toLowerCase(),
253 + ));
254 +
255 + return list;
256 + }
257 +
258 + List<CryptoCurrency> _computeXstocksSection(List<CryptoCurrency> from) {
259 + return from
260 + .where((c) => c.groups.contains(CurrencyGroups.tokenizedStock))
261 + .toList(growable: false);
262 + }
263 +
264 + @override
265 + Widget build(BuildContext context) {
266 + final items = widget.items;
267 + final isSearching = widget.isSearching;
268 + final recents = widget.recents;
269 + final recentsLoaded = widget.recentsLoaded;
270 + final natives = widget.natives;
271 + final selected = widget.selected;
272 + final symbolResolver = widget.symbolResolver;
273 + final onSelect = widget.onSelect;
274 + final onStablecoinTap = widget.onStablecoinTap;
275 +
276 + if (items.isEmpty) {
277 + return Center(
278 + child: Padding(
279 + padding: const EdgeInsets.all(24),
280 + child: Text(
281 + S.of(context).picker_no_matches,
282 + textAlign: TextAlign.center,
283 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
284 + color: Theme.of(context).colorScheme.onSurfaceVariant,
285 + ),
286 + ),
287 + ),
288 + );
289 + }
290 +
291 + if (isSearching) {
292 + return NotificationListener<ScrollNotification>(
293 + onNotification: (_) => true,
294 + child: ListView(
295 + controller: _scrollController,
296 + primary: false,
297 + physics: const ClampingScrollPhysics(),
298 + padding: const EdgeInsets.fromLTRB(16, 8, 16, 16),
299 + children: [
300 + CurrencyPickerListContainer(
301 + rows: [
302 + for (final item in items)
303 + CurrencyPickerRow(
304 + currency: item,
305 + isSelected: selected != null && selected == item,
306 + chainPillLabel: _chainPillLabelFor(item),
307 + chainBadgePath: _chainBadgePathFor(item),
308 + trailing: _SymbolTrailing(
309 + currency: item,
310 + symbolResolver: symbolResolver,
311 + ),
312 + onTap: () => onSelect(item),
313 + ),
314 + ],
315 + ),
316 + ],
317 + ),
318 + );
319 + }
320 +
321 + final visibleRecents = recents.where(items.contains).toList(growable: false);
322 +
323 + final seenStablecoinTitles = <String>{};
324 + final stablecoins = items
325 + .where((c) => isTrustedStablecoin(c) && seenStablecoinTitles.add(c.title.toUpperCase()))
326 + .toList(growable: false);
327 +
328 + final cryptocurrencies = items.where(natives.contains).toList(growable: false);
329 + final moreCryptos = _computeMoreCryptosSection(items);
330 + final xstocks = _computeXstocksSection(items);
331 + final allAssets = [...items]..sort((a, b) => (a.fullName ?? a.title).toLowerCase().compareTo(
332 + (b.fullName ?? b.title).toLowerCase(),
333 + ));
334 +
335 + final section = _selectedSection(
336 + recents: visibleRecents,
337 + stablecoins: stablecoins,
338 + cryptocurrencies: cryptocurrencies,
339 + moreCryptos: moreCryptos,
340 + xstocks: xstocks,
341 + );
342 +
343 + final moreCryptosVisible = _moreCryptosSectionExpanded
344 + ? moreCryptos
345 + : moreCryptos.take(_previewCount).toList(growable: false);
346 + final xstocksVisible =
347 + _xstocksSectionExpanded ? xstocks : xstocks.take(_previewCount).toList(growable: false);
348 +
349 + return NotificationListener<ScrollNotification>(
350 + onNotification: (_) => true,
351 + child: ListView(
352 + controller: _scrollController,
353 + primary: false,
354 + physics: const ClampingScrollPhysics(),
355 + padding: const EdgeInsets.fromLTRB(16, 8, 16, 16),
356 + children: [
357 + if (recentsLoaded && visibleRecents.isNotEmpty)
358 + _PickerSection(
359 + title: S.of(context).picker_section_recents,
360 + child: _RecentsRow(
361 + items: visibleRecents,
362 + selected: section == _SelSection.recents ? selected : null,
363 + symbolResolver: symbolResolver,
364 + onTap: onSelect,
365 + ),
366 + ),
367 + if (stablecoins.isNotEmpty)
368 + _PickerSection(
369 + title: S.of(context).picker_section_stablecoins,
370 + child: PillGrid(
371 + items: stablecoins,
372 + selected: section == _SelSection.stablecoins ? selected : null,
373 + onTap: onStablecoinTap,
374 + symbolResolver: symbolResolver,
375 + ),
376 + ),
377 + if (cryptocurrencies.isNotEmpty)
378 + _PickerSection(
379 + title: S.of(context).picker_section_cryptocurrencies,
380 + child: CurrencyPickerListContainer(
381 + rows: [
382 + for (final item in cryptocurrencies)
383 + CurrencyPickerRow(
384 + currency: item,
385 + isSelected: section == _SelSection.cryptocurrencies && selected == item,
386 + chainPillLabel: _chainPillLabelFor(item),
387 + chainBadgePath: _chainBadgePathFor(item),
388 + trailing: _SymbolTrailing(
389 + currency: item,
390 + symbolResolver: symbolResolver,
391 + ),
392 + onTap: () => onSelect(item),
393 + ),
394 + ],
395 + ),
396 + ),
397 + if (moreCryptos.isNotEmpty)
398 + _PickerSection(
399 + title: S.of(context).picker_section_more_cryptocurrencies,
400 + child: CurrencyPickerListContainer(
401 + rows: [
402 + for (final item in moreCryptosVisible)
403 + CurrencyPickerRow(
404 + currency: item,
405 + isSelected: section == _SelSection.moreCryptocurrencies && selected == item,
406 + trailing: _SymbolTrailing(
407 + currency: item,
408 + symbolResolver: symbolResolver,
409 + ),
410 + onTap: () => onSelect(item),
411 + ),
412 + if (moreCryptos.length > _previewCount)
413 + _SeeAllRow(
414 + expanded: _moreCryptosSectionExpanded,
415 + onTap: () => setState(
416 + () => _moreCryptosSectionExpanded = !_moreCryptosSectionExpanded),
417 + ),
418 + ],
419 + ),
420 + ),
421 + if (xstocks.isNotEmpty)
422 + _PickerSection(
423 + title: S.of(context).picker_section_tokenized_stocks,
424 + child: CurrencyPickerListContainer(
425 + rows: [
426 + for (final item in xstocksVisible)
427 + CurrencyPickerRow(
428 + currency: item,
429 + isSelected: section == _SelSection.xstocks && selected == item,
430 + trailing: _SymbolTrailing(
431 + currency: item,
432 + symbolResolver: symbolResolver,
433 + ),
434 + onTap: () => onSelect(item),
435 + chainPillLabel: _chainPillLabelFor(item),
436 + chainBadgePath: _chainBadgePathFor(item),
437 + ),
438 + if (xstocks.length > _previewCount)
439 + _SeeAllRow(
440 + expanded: _xstocksSectionExpanded,
441 + onTap: () =>
442 + setState(() => _xstocksSectionExpanded = !_xstocksSectionExpanded),
443 + ),
444 + ],
445 + ),
446 + ),
447 + if (allAssets.isNotEmpty)
448 + _PickerSection(
449 + title: S.of(context).picker_section_all_assets,
450 + child: CurrencyPickerListContainer(
451 + rows: [
452 + for (final item in allAssets)
453 + CurrencyPickerRow(
454 + currency: item,
455 + isSelected: section == _SelSection.allAssets && selected == item,
456 + chainPillLabel: _chainPillLabelFor(item),
457 + chainBadgePath: _chainBadgePathFor(item),
458 + trailing: _SymbolTrailing(
459 + currency: item,
460 + symbolResolver: symbolResolver,
461 + ),
462 + onTap: () => onSelect(item),
463 + ),
464 + ],
465 + ),
466 + ),
467 + ],
468 + ),
469 + );
470 + }
471 +
472 + String? _chainPillLabelFor(CryptoCurrency c) {
473 + if (c == CryptoCurrency.btcln) return _shortChainLabel(c);
474 + if (_isL2NativeEth(c)) return _shortChainLabel(c);
475 + if (widget.natives.contains(c)) return null;
476 + if (cryptoCurrencyOrTokenToWalletType(c) == null) return null;
477 + return _shortChainLabel(c);
478 + }
479 +
480 + String _shortChainLabel(CryptoCurrency c) {
481 + if (cryptoCurrencyOrTokenToWalletType(c) == WalletType.bsc) return 'BSC';
482 + return chainNameForCurrency(c);
483 + }
484 +
485 + String? _chainBadgePathFor(CryptoCurrency c) {
486 + if (_isL2NativeEth(c)) return c.chainIconPath;
487 + if (widget.natives.contains(c)) return null;
488 + final wt = cryptoCurrencyOrTokenToWalletType(c);
489 + if (wt == null) return null;
490 + return c.chainIconPath ?? walletTypeToCryptoCurrency(wt).chainIconPath;
491 + }
492 +
493 + bool _isL2NativeEth(CryptoCurrency c) =>
494 + c == CryptoCurrency.arbEth || c == CryptoCurrency.baseEth;
495 +
496 + _SelSection? _selectedSection({
497 + required List<CryptoCurrency> recents,
498 + required List<CryptoCurrency> stablecoins,
499 + required List<CryptoCurrency> cryptocurrencies,
500 + required List<CryptoCurrency> moreCryptos,
501 + required List<CryptoCurrency> xstocks,
502 + }) {
503 + final s = widget.selected;
504 + if (s == null) return null;
505 + if (recents.contains(s)) return _SelSection.recents;
506 + if (stablecoins.any((c) => c.title.toUpperCase() == s.title.toUpperCase())) {
507 + return _SelSection.stablecoins;
508 + }
509 + if (cryptocurrencies.contains(s)) return _SelSection.cryptocurrencies;
510 + if (moreCryptos.contains(s)) return _SelSection.moreCryptocurrencies;
511 + if (xstocks.contains(s)) return _SelSection.xstocks;
512 + return _SelSection.allAssets;
513 + }
514 +}
515 +
516 +class _PickerSection extends StatelessWidget {
517 + const _PickerSection({required this.title, required this.child});
518 +
519 + final String title;
520 + final Widget child;
521 +
522 + @override
523 + Widget build(BuildContext context) {
524 + return Column(
525 + crossAxisAlignment: CrossAxisAlignment.start,
526 + children: [
527 + PickerSectionHeader(title: title),
528 + child,
529 + const SizedBox(height: 16),
530 + ],
531 + );
532 + }
533 +}
534 +
535 +class _SymbolTrailing extends StatelessWidget {
536 + const _SymbolTrailing({
537 + required this.currency,
538 + required this.symbolResolver,
539 + });
540 +
541 + final CryptoCurrency currency;
542 + final String Function(CryptoCurrency) symbolResolver;
543 +
544 + @override
545 + Widget build(BuildContext context) {
546 + return Text(
547 + symbolResolver(currency),
548 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
549 + fontWeight: FontWeight.w500,
550 + color: Theme.of(context).colorScheme.onSurfaceVariant,
551 + ),
552 + );
553 + }
554 +}
555 +
556 +class _SeeAllRow extends StatelessWidget {
557 + const _SeeAllRow({
558 + required this.expanded,
559 + required this.onTap,
560 + });
561 +
562 + final bool expanded;
563 + final VoidCallback onTap;
564 +
565 + @override
566 + Widget build(BuildContext context) {
567 + final colors = Theme.of(context).colorScheme;
568 + final label = expanded ? S.of(context).picker_show_less : S.of(context).picker_see_all;
569 + return InkWell(
570 + onTap: onTap,
571 + child: Padding(
572 + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 14),
573 + child: Row(
574 + children: [
575 + Expanded(
576 + child: Text(
577 + label,
578 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
579 + fontWeight: FontWeight.w500,
580 + color: colors.primary,
581 + ),
582 + ),
583 + ),
584 + ],
585 + ),
586 + ),
587 + );
588 + }
589 +}
590 +
591 +class _RecentsRow extends StatelessWidget {
592 + const _RecentsRow({
593 + required this.items,
594 + required this.selected,
595 + required this.symbolResolver,
596 + required this.onTap,
597 + });
598 +
599 + final List<CryptoCurrency> items;
600 + final CryptoCurrency? selected;
601 + final String Function(CryptoCurrency) symbolResolver;
602 + final void Function(CryptoCurrency) onTap;
603 +
604 + @override
605 + Widget build(BuildContext context) {
606 + return SizedBox(
607 + height: 44,
608 + child: ListView.separated(
609 + scrollDirection: Axis.horizontal,
610 + itemCount: items.length,
611 + separatorBuilder: (_, __) => const SizedBox(width: 8),
612 + itemBuilder: (_, i) {
613 + final item = items[i];
614 + return _RecentPill(
615 + currency: item,
616 + label: symbolResolver(item),
617 + isSelected: selected != null && selected == item,
618 + onTap: () => onTap(item),
619 + );
620 + },
621 + ),
622 + );
623 + }
624 +}
625 +
626 +class _RecentPill extends StatelessWidget {
627 + const _RecentPill({
628 + required this.currency,
629 + required this.label,
630 + required this.isSelected,
631 + required this.onTap,
632 + });
633 +
634 + final CryptoCurrency currency;
635 + final String label;
636 + final bool isSelected;
637 + final VoidCallback onTap;
638 +
639 + @override
640 + Widget build(BuildContext context) {
641 + final colors = Theme.of(context).colorScheme;
642 + return InkWell(
643 + onTap: onTap,
644 + borderRadius: BorderRadius.circular(80),
645 + child: Container(
646 + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6),
647 + decoration: BoxDecoration(
648 + color: colors.surfaceContainer,
649 + borderRadius: BorderRadius.circular(80),
650 + border: isSelected ? Border.all(color: colors.primary, width: 1.5) : null,
651 + ),
652 + child: Row(
653 + mainAxisSize: MainAxisSize.min,
654 + children: [
655 + CakeImageWidget(
656 + imageUrl: currency.iconPath,
657 + width: 24,
658 + height: 24,
659 + fit: BoxFit.cover,
660 + ),
661 + const SizedBox(width: 8),
662 + Text(
663 + label,
664 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
665 + fontWeight: FontWeight.w600,
666 + ),
667 + ),
668 + ],
669 + ),
670 + ),
671 + );
672 + }
673 +}
674 +
675 +enum _SelSection {
676 + recents,
677 + stablecoins,
678 + cryptocurrencies,
679 + moreCryptocurrencies,
680 + xstocks,
681 + allAssets,
682 +}
lib/new-ui/widgets/currency_picker/picker_recents_loader.dart new
+97
@@ -0,0 +1,97 @@
1 +import 'package:cake_wallet/exchange/trade.dart';
2 +import 'package:cake_wallet/exchange/trade_state.dart';
3 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_args.dart';
4 +import 'package:cake_wallet/order/order.dart';
5 +import 'package:cw_core/crypto_currency.dart';
6 +import 'package:hive/hive.dart';
7 +
8 +class PickerRecentsLoader {
9 + const PickerRecentsLoader._();
10 +
11 + static const int defaultLimit = 6;
12 +
13 + static final Set<TradeState> _executedTradeStates = {
14 + TradeState.complete,
15 + TradeState.completed,
16 + TradeState.finished,
17 + TradeState.success,
18 + TradeState.settled,
19 + TradeState.traded,
20 + };
21 +
22 + static Future<List<CryptoCurrency>> load({
23 + required RecentsSource source,
24 + required List<CryptoCurrency> visibleItems,
25 + int limit = defaultLimit,
26 + }) async {
27 + switch (source) {
28 + case RecentsSource.none:
29 + return const [];
30 + case RecentsSource.trades:
31 + return _fromTrades(visibleItems, limit);
32 + case RecentsSource.orders:
33 + return _fromOrders(visibleItems, limit);
34 + }
35 + }
36 +
37 + static Future<List<CryptoCurrency>> _fromTrades(
38 + List<CryptoCurrency> visibleItems,
39 + int limit,
40 + ) async {
41 + final trades = await Trade.getAll();
42 + final ordered = trades
43 + .where((t) => _executedTradeStates.contains(t.state))
44 + .toList()
45 + ..sort((a, b) => (b.createdAt ?? DateTime.fromMillisecondsSinceEpoch(0))
46 + .compareTo(a.createdAt ?? DateTime.fromMillisecondsSinceEpoch(0)));
47 +
48 + return _collect(
49 + ordered.expand((t) => [t.from, t.to]),
50 + visibleItems,
51 + limit,
52 + );
53 + }
54 +
55 + static Future<List<CryptoCurrency>> _fromOrders(
56 + List<CryptoCurrency> visibleItems,
57 + int limit,
58 + ) async {
59 + final orders = Hive.box<Order>(Order.boxName).values.toList()
60 + ..sort((a, b) => b.createdAt.compareTo(a.createdAt));
61 +
62 + return _collect(
63 + orders.expand((o) => [_tryResolve(o.from), _tryResolve(o.to)]),
64 + visibleItems,
65 + limit,
66 + );
67 + }
68 +
69 + static List<CryptoCurrency> _collect(
70 + Iterable<CryptoCurrency?> candidates,
71 + List<CryptoCurrency> visibleItems,
72 + int limit,
73 + ) {
74 + final visibleSet = visibleItems.toSet();
75 + final seen = <CryptoCurrency>{};
76 + final collected = <CryptoCurrency>[];
77 +
78 + for (final candidate in candidates) {
79 + if (candidate == null) continue;
80 + if (!visibleSet.contains(candidate)) continue;
81 + if (!seen.add(candidate)) continue;
82 + collected.add(candidate);
83 + if (collected.length >= limit) break;
84 + }
85 +
86 + return collected;
87 + }
88 +
89 + static CryptoCurrency? _tryResolve(String? raw) {
90 + if (raw == null || raw.isEmpty) return null;
91 + try {
92 + return CryptoCurrency.fromString(raw);
93 + } catch (_) {
94 + return null;
95 + }
96 + }
97 +}
lib/new-ui/widgets/currency_picker/picker_section_header.dart new
+21
@@ -0,0 +1,21 @@
1 +import 'package:flutter/material.dart';
2 +
3 +class PickerSectionHeader extends StatelessWidget {
4 + const PickerSectionHeader({super.key, required this.title});
5 +
6 + final String title;
7 +
8 + @override
9 + Widget build(BuildContext context) {
10 + return Padding(
11 + padding: const EdgeInsets.fromLTRB(4, 12, 4, 8),
12 + child: Text(
13 + title,
14 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
15 + fontWeight: FontWeight.w500,
16 + color: Theme.of(context).colorScheme.onSurfaceVariant,
17 + ),
18 + ),
19 + );
20 + }
21 +}
lib/new-ui/widgets/currency_picker/pill_grid.dart new
+100
@@ -0,0 +1,100 @@
1 +import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
2 +import 'package:cw_core/crypto_currency.dart';
3 +import 'package:flutter/material.dart';
4 +
5 +class PillGrid extends StatelessWidget {
6 + const PillGrid({
7 + super.key,
8 + required this.items,
9 + required this.selected,
10 + required this.onTap,
11 + required this.symbolResolver,
12 + });
13 +
14 + final List<CryptoCurrency> items;
15 + final CryptoCurrency? selected;
16 + final ValueChanged<CryptoCurrency> onTap;
17 + final String Function(CryptoCurrency c) symbolResolver;
18 +
19 + @override
20 + Widget build(BuildContext context) {
21 + return LayoutBuilder(
22 + builder: (context, constraints) {
23 + const gap = 8.0;
24 + final cardWidth = (constraints.maxWidth - gap) / 2;
25 + return Wrap(
26 + spacing: gap,
27 + runSpacing: gap,
28 + children: [
29 + for (final item in items)
30 + SizedBox(
31 + width: cardWidth,
32 + child: _PillCard(
33 + currency: item,
34 + isSelected: selected != null && selected == item,
35 + label: symbolResolver(item),
36 + onTap: () => onTap(item),
37 + ),
38 + ),
39 + ],
40 + );
41 + },
42 + );
43 + }
44 +}
45 +
46 +class _PillCard extends StatelessWidget {
47 + const _PillCard({
48 + required this.currency,
49 + required this.isSelected,
50 + required this.label,
51 + required this.onTap,
52 + });
53 +
54 + final CryptoCurrency currency;
55 + final bool isSelected;
56 + final String label;
57 + final VoidCallback onTap;
58 +
59 + @override
60 + Widget build(BuildContext context) {
61 + final colors = Theme.of(context).colorScheme;
62 + return InkWell(
63 + onTap: onTap,
64 + borderRadius: BorderRadius.circular(80),
65 + child: Container(
66 + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10),
67 + decoration: BoxDecoration(
68 + color: colors.surfaceContainer,
69 + borderRadius: BorderRadius.circular(80),
70 + border: isSelected ? Border.all(color: colors.primary, width: 1.5) : null,
71 + ),
72 + child: Row(
73 + children: [
74 + CakeImageWidget(
75 + imageUrl: currency.iconPath,
76 + width: 24,
77 + height: 24,
78 + fit: BoxFit.cover,
79 + ),
80 + const SizedBox(width: 8),
81 + Expanded(
82 + child: Text(
83 + label,
84 + overflow: TextOverflow.ellipsis,
85 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
86 + fontWeight: FontWeight.w600,
87 + ),
88 + ),
89 + ),
90 + Icon(
91 + Icons.chevron_right,
92 + size: 18,
93 + color: colors.onSurfaceVariant,
94 + ),
95 + ],
96 + ),
97 + ),
98 + );
99 + }
100 +}
lib/new-ui/widgets/currency_picker/select_network_page.dart new
+140
@@ -0,0 +1,140 @@
1 +import 'package:cake_wallet/generated/i18n.dart';
2 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_args.dart';
3 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_list_container.dart';
4 +import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart';
5 +import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
6 +import 'package:cw_core/crypto_currency.dart';
7 +import 'package:cw_core/currency_for_wallet_type.dart';
8 +import 'package:cw_core/wallet_type.dart';
9 +import 'package:flutter/material.dart';
10 +
11 +class SelectNetworkPage extends StatelessWidget {
12 + const SelectNetworkPage({
13 + super.key,
14 + required this.assetTitle,
15 + required this.assetFullName,
16 + required this.assetIconPath,
17 + required this.variants,
18 + required this.onSelected,
19 + });
20 +
21 + final String assetTitle;
22 + final String? assetFullName;
23 + final String? assetIconPath;
24 + final List<CryptoCurrency> variants;
25 + final ValueChanged<CryptoCurrency> onSelected;
26 +
27 + @override
28 + Widget build(BuildContext context) {
29 + final colors = Theme.of(context).colorScheme;
30 + return Scaffold(
31 + backgroundColor: colors.surface,
32 + body: SafeArea(
33 + child: Column(
34 + children: [
35 + ModalTopBar(
36 + title: S.of(context).select_network_title,
37 + leadingIcon: const Icon(Icons.arrow_back),
38 + onLeadingPressed: () => Navigator.of(context).maybePop(),
39 + ),
40 + const SizedBox(height: 24),
41 + CakeImageWidget(
42 + imageUrl: assetIconPath,
43 + width: 75,
44 + height: 75,
45 + fit: BoxFit.cover,
46 + ),
47 + const SizedBox(height: 12),
48 + Text(
49 + assetTitle,
50 + style: Theme.of(context).textTheme.titleLarge?.copyWith(
51 + fontSize: 20,
52 + fontWeight: FontWeight.w600,
53 + ),
54 + ),
55 + const SizedBox(height: 12),
56 + Padding(
57 + padding: const EdgeInsets.symmetric(horizontal: 32),
58 + child: Text(
59 + S.of(context).select_network_subtitle,
60 + textAlign: TextAlign.center,
61 + style: Theme.of(context)
62 + .textTheme
63 + .bodyMedium
64 + ?.copyWith(color: colors.onSurfaceVariant),
65 + ),
66 + ),
67 + const SizedBox(height: 24),
68 + Expanded(
69 + child: ListView(
70 + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
71 + children: [
72 + CurrencyPickerListContainer(
73 + rows: [
74 + for (final variant in variants)
75 + _NetworkRow(
76 + variant: variant,
77 + onTap: () {
78 + final nav = Navigator.of(context);
79 + onSelected(variant);
80 + if (nav.canPop()) nav.pop();
81 + if (nav.canPop()) nav.pop();
82 + },
83 + ),
84 + ],
85 + ),
86 + ],
87 + ),
88 + ),
89 + ],
90 + ),
91 + ),
92 + );
93 + }
94 +}
95 +
96 +class _NetworkRow extends StatelessWidget {
97 + const _NetworkRow({required this.variant, required this.onTap});
98 +
99 + final CryptoCurrency variant;
100 + final VoidCallback onTap;
101 +
102 + @override
103 + Widget build(BuildContext context) {
104 + final colors = Theme.of(context).colorScheme;
105 + final wt = cryptoCurrencyOrTokenToWalletType(variant);
106 + final networkIconPath =
107 + wt != null ? getCryptoCurrencyIconForWalletListItem(wt) : variant.iconPath;
108 + final networkName = chainNameForCurrency(variant);
109 + return InkWell(
110 + onTap: onTap,
111 + child: Padding(
112 + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 14),
113 + child: Row(
114 + children: [
115 + CakeImageWidget(
116 + imageUrl: networkIconPath,
117 + width: 28,
118 + height: 28,
119 + fit: BoxFit.cover,
120 + ),
121 + const SizedBox(width: 12),
122 + Expanded(
123 + child: Text(
124 + networkName,
125 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
126 + fontWeight: FontWeight.w500,
127 + ),
128 + ),
129 + ),
130 + Icon(
131 + Icons.chevron_right,
132 + size: 20,
133 + color: colors.onSurfaceVariant,
134 + ),
135 + ],
136 + ),
137 + ),
138 + );
139 + }
140 +}
lib/new-ui/widgets/currency_picker/single_network_currency_picker.dart new
+163
@@ -0,0 +1,163 @@
1 +import 'package:cake_wallet/generated/i18n.dart';
2 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_args.dart';
3 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_list_container.dart';
4 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_row.dart';
5 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_search_field.dart';
6 +import 'package:cake_wallet/new-ui/widgets/currency_picker/picker_section_header.dart';
7 +import 'package:cake_wallet/reactions/wallet_utils.dart';
8 +import 'package:cw_core/crypto_currency.dart';
9 +import 'package:cw_core/currency_for_wallet_type.dart';
10 +import 'package:cw_core/wallet_type.dart';
11 +import 'package:flutter/material.dart';
12 +
13 +class SingleNetworkCurrencyPicker extends StatefulWidget {
14 + const SingleNetworkCurrencyPicker({super.key, required this.args});
15 +
16 + final CurrencyPickerArgs args;
17 +
18 + @override
19 + State<SingleNetworkCurrencyPicker> createState() => _SingleNetworkCurrencyPickerState();
20 +}
21 +
22 +class _SingleNetworkCurrencyPickerState extends State<SingleNetworkCurrencyPicker> {
23 + CurrencyPickerArgs get _args => widget.args;
24 + WalletType get _network => _args.filterByNetwork!;
25 + final TextEditingController _searchController = TextEditingController();
26 +
27 + @override
28 + void initState() {
29 + super.initState();
30 + _searchController.addListener(() => setState(() {}));
31 + }
32 +
33 + @override
34 + void dispose() {
35 + _searchController.dispose();
36 + super.dispose();
37 + }
38 +
39 + void _selectCurrency(CryptoCurrency currency) {
40 + _args.onSelected(currency);
41 + Navigator.of(context).maybePop();
42 + }
43 +
44 + double _fiatValueFor(CryptoCurrency c) => _args.balanceByAsset?[c]?.fiatValue ?? 0;
45 +
46 + @override
47 + Widget build(BuildContext context) {
48 + final native = walletTypeToCryptoCurrency(_network);
49 + final query = _searchController.text.trim();
50 + final tokens = _args.items
51 + .where((c) => c != native)
52 + .where((c) => currencyMatchesQuery(c, query))
53 + .toList();
54 +
55 + final insertOrder = {for (var i = 0; i < tokens.length; i++) tokens[i]: i};
56 + tokens.sort((a, b) {
57 + final av = _fiatValueFor(a);
58 + final bv = _fiatValueFor(b);
59 + if (bv != av) return bv.compareTo(av);
60 + return (insertOrder[a] ?? 0).compareTo(insertOrder[b] ?? 0);
61 + });
62 + final nativeMatches = currencyMatchesQuery(native, query);
63 +
64 + return Column(
65 + mainAxisSize: MainAxisSize.max,
66 + children: [
67 + Expanded(
68 + child: (nativeMatches || tokens.isNotEmpty)
69 + ? ListView(
70 + padding: const EdgeInsets.fromLTRB(16, 8, 16, 16),
71 + children: [
72 + if (nativeMatches) ...[
73 + PickerSectionHeader(title: S.of(context).picker_section_gas_token),
74 + CurrencyPickerListContainer(
75 + rows: [
76 + CurrencyPickerRow(
77 + currency: native,
78 + isSelected: _args.selected == native,
79 + trailing: _BalanceTrailing(balance: _args.balanceByAsset?[native]),
80 + onTap: () => _selectCurrency(native),
81 + ),
82 + ],
83 + ),
84 + const SizedBox(height: 16),
85 + ],
86 + if (tokens.isNotEmpty) ...[
87 + PickerSectionHeader(
88 + title: S
89 + .of(context)
90 + .picker_section_tokens_standard(tokenStandardFor(_network)),
91 + ),
92 + CurrencyPickerListContainer(
93 + rows: [
94 + for (final t in tokens)
95 + CurrencyPickerRow(
96 + currency: t,
97 + isSelected: _args.selected == t,
98 + trailing: _BalanceTrailing(balance: _args.balanceByAsset?[t]),
99 + onTap: () => _selectCurrency(t),
100 + ),
101 + ],
102 + ),
103 + ],
104 + ],
105 + )
106 + : Center(
107 + child: Padding(
108 + padding: const EdgeInsets.all(24),
109 + child: Text(
110 + S.of(context).picker_no_matches,
111 + textAlign: TextAlign.center,
112 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
113 + color: Theme.of(context).colorScheme.onSurfaceVariant,
114 + ),
115 + ),
116 + ),
117 + ),
118 + ),
119 + CurrencyPickerSearchField(
120 + controller: _searchController,
121 + hintText: S.of(context).search,
122 + ),
123 + const SizedBox(height: 24),
124 + ],
125 + );
126 + }
127 +}
128 +
129 +class _BalanceTrailing extends StatelessWidget {
130 + const _BalanceTrailing({required this.balance});
131 +
132 + final CurrencyPickerBalance? balance;
133 +
134 + @override
135 + Widget build(BuildContext context) {
136 + final colors = Theme.of(context).colorScheme;
137 + final amount = balance?.amount ?? '—';
138 + final fiat = balance?.fiat;
139 + return Column(
140 + crossAxisAlignment: CrossAxisAlignment.end,
141 + mainAxisSize: MainAxisSize.min,
142 + children: [
143 + Text(
144 + amount,
145 + style: Theme.of(context).textTheme.bodyMedium?.copyWith(
146 + fontWeight: FontWeight.w500,
147 + ),
148 + ),
149 + if (fiat != null && fiat.isNotEmpty)
150 + Padding(
151 + padding: const EdgeInsets.only(top: 2),
152 + child: Text(
153 + fiat,
154 + style: Theme.of(context).textTheme.bodySmall?.copyWith(
155 + fontWeight: FontWeight.w400,
156 + color: colors.onSurfaceVariant,
157 + ),
158 + ),
159 + ),
160 + ],
161 + );
162 + }
163 +}
lib/new-ui/widgets/receive_page/receive_amount_modal.dart
+23 -27
@@ -1,16 +1,16 @@
1 import 'package:cake_wallet/entities/fiat_currency.dart';
2 import 'package:cake_wallet/generated/i18n.dart';
3 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_args.dart';
4 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_sheet.dart';
5 +import 'package:cake_wallet/new-ui/widgets/currency_picker/fiat_currency_picker_sheet.dart';
6 import 'package:cake_wallet/new-ui/widgets/coins_page/token_image_widget.dart';
7 import 'package:cake_wallet/new-ui/widgets/new_primary_button.dart';
8 import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart';
6 -import 'package:cake_wallet/src/screens/exchange/widgets/currency_picker.dart';
9 import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
8 -import 'package:cake_wallet/utils/show_pop_up.dart';
10 import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_view_model.dart';
11 import 'package:cw_core/crypto_currency.dart';
12 import 'package:flutter/material.dart';
13 import 'package:flutter_mobx/flutter_mobx.dart';
13 -import 'package:flutter_svg/svg.dart';
14
15 class ReceiveAmountModal extends StatefulWidget {
16 const ReceiveAmountModal(
@@ -217,35 +217,31 @@ class _ReceiveAmountModalState extends State<ReceiveAmountModal> {
217 );
218 }
219
220 - void _presentTokenCurrencyPicker(BuildContext context) async {
221 - await showPopUp(
222 - builder: (_) => CurrencyPicker(
223 - selectedAtIndex: widget.walletAddressListViewModel.tokenCurrencyIndex,
224 - items: widget.walletAddressListViewModel.tokenCurrencies,
225 - hintText: S.of(context).search_currency,
226 - onItemSelected: widget.walletAddressListViewModel.setTokenCurrency,
227 - ),
220 + void _presentTokenCurrencyPicker(BuildContext context) {
221 + final items = widget.walletAddressListViewModel.tokenCurrencies
222 + .whereType<CryptoCurrency>()
223 + .toList();
224 + CurrencyPickerSheet.show(
225 context: context,
226 + args: CurrencyPickerArgs(
227 + items: items,
228 + selected: widget.walletAddressListViewModel.tokenCurrency,
229 + onSelected: widget.walletAddressListViewModel.setTokenCurrency,
230 + symbolResolver: widget.walletAddressListViewModel.amountParsingProxy.getCryptoSymbol,
231 + ),
232 );
233 }
234
232 - void _presentFiatCurrencyPicker(BuildContext context) async {
233 - final currs = widget.walletAddressListViewModel.currencies.toList();
234 - // the first options should be the crypto and the default fiat currency
235 - currs.sort((a, b) {
236 - if(a == widget.walletAddressListViewModel.fiatCurrency || a is CryptoCurrency) return -1;
237 - if(b == widget.walletAddressListViewModel.fiatCurrency || a is CryptoCurrency) return 1;
238 - return 0;
239 - });
240 -
241 - await showPopUp(
242 - builder: (_) => CurrencyPicker(
243 - selectedAtIndex: currs.indexOf(widget.walletAddressListViewModel.selectedCurrency),
244 - items: currs,
245 - hintText: S.of(context).search_currency,
246 - onItemSelected: widget.walletAddressListViewModel.selectCurrency,
247 - ),
235 + void _presentFiatCurrencyPicker(BuildContext context) {
236 + final selected = widget.walletAddressListViewModel.selectedCurrency;
237 + final cryptoOption =
238 + widget.walletAddressListViewModel.currencies.whereType<CryptoCurrency>().firstOrNull;
239 + FiatCurrencyPickerSheet.show(
240 context: context,
241 + selected: selected,
242 + cryptoOption: cryptoOption,
243 + onSelected: widget.walletAddressListViewModel.selectCurrency,
244 + onCryptoSelected: widget.walletAddressListViewModel.selectCurrency,
245 );
246 }
247 }
lib/reactions/wallet_utils.dart
+19 -1
@@ -52,4 +52,22 @@ bool hasTokens(WalletType walletType) {
52 default:
53 return false;
54 }
55 -}
\ No newline at end of file
55 +}
56 +
57 +String tokenStandardFor(WalletType walletType) {
58 + switch (walletType) {
59 + case WalletType.ethereum:
60 + case WalletType.polygon:
61 + case WalletType.arbitrum:
62 + case WalletType.base:
63 + return 'ERC-20';
64 + case WalletType.bsc:
65 + return 'BEP-20';
66 + case WalletType.solana:
67 + return 'SPL';
68 + case WalletType.tron:
69 + return 'TRC-20';
70 + default:
71 + return walletTypeToString(walletType);
72 + }
73 +}
lib/src/screens/buy/buy_sell_page.dart
+28
@@ -3,6 +3,9 @@ import 'package:cake_wallet/core/address_validator.dart';
3 import 'package:cake_wallet/di.dart';
4 import 'package:cake_wallet/entities/parse_address_from_domain.dart';
5 import 'package:cake_wallet/generated/i18n.dart';
6 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_args.dart';
7 +import 'package:cake_wallet/new-ui/widgets/currency_picker/currency_picker_sheet.dart';
8 +import 'package:cake_wallet/new-ui/widgets/currency_picker/fiat_currency_picker_sheet.dart';
9 import 'package:cake_wallet/routes.dart';
10 import 'package:cake_wallet/src/screens/base_page.dart';
11 import 'package:cake_wallet/src/screens/exchange/widgets/desktop_exchange_cards_section.dart';
@@ -398,6 +401,7 @@ class BuySellPage extends BasePage {
401 showLimitsField: false,
402 currencies: buySellViewModel.fiatCurrencies,
403 onCurrencySelected: (currency) => buySellViewModel.changeFiatCurrency(currency: currency),
404 + onTapCurrencyPicker: _presentFiatPicker,
405 imageArrow: Image.asset(
406 'assets/images/arrow_bottom_purple_icon.png',
407 color: Theme.of(context).colorScheme.primary,
@@ -435,6 +439,7 @@ class BuySellPage extends BasePage {
439 isMoneroWallet: buySellViewModel.wallet == WalletType.monero,
440 currencies: buySellViewModel.cryptoCurrencies,
441 onCurrencySelected: (currency) => buySellViewModel.changeCryptoCurrency(currency: currency),
442 + onTapCurrencyPicker: _presentCryptoPicker,
443 imageArrow: Image.asset(
444 'assets/images/arrow_bottom_cake_green.png',
445 color: Theme.of(context).colorScheme.primary,
@@ -504,6 +509,29 @@ class BuySellPage extends BasePage {
509 );
510 }
511
512 + void _presentFiatPicker(BuildContext context) {
513 + FiatCurrencyPickerSheet.show(
514 + context: context,
515 + selected: buySellViewModel.fiatCurrency,
516 + onSelected: (currency) => buySellViewModel.changeFiatCurrency(currency: currency),
517 + );
518 + }
519 +
520 + void _presentCryptoPicker(BuildContext context) {
521 + final items = [...buySellViewModel.cryptoCurrencies];
522 + appendEvmDefaultTokens(items);
523 + CurrencyPickerSheet.show(
524 + context: context,
525 + args: CurrencyPickerArgs(
526 + items: items,
527 + selected: buySellViewModel.cryptoCurrency,
528 + recentsSource: RecentsSource.orders,
529 + onSelected: (currency) => buySellViewModel.changeCryptoCurrency(currency: currency),
530 + symbolResolver: buySellViewModel.amountParsingProxy.getCryptoSymbol,
531 + ),
532 + );
533 + }
534 +
535 Future<String> fetchParsedAddress(
536 BuildContext context,
537 String domain,
lib/src/screens/exchange/widgets/exchange_card.dart
+6
@@ -48,6 +48,7 @@ class ExchangeCard<T extends Currency> extends StatefulWidget {
48 this.onPushAddressBookButton,
49 this.onDispose,
50 this.useSatoshis = false,
51 + this.onTapCurrencyPicker,
52 required this.cardInstanceName,
53 }) : super(key: key);
54
@@ -84,6 +85,7 @@ class ExchangeCard<T extends Currency> extends StatefulWidget {
85 final String cardInstanceName;
86 final Color fillColor;
87 final bool useSatoshis;
88 + final void Function(BuildContext context)? onTapCurrencyPicker;
89
90 @override
91 ExchangeCardState<T> createState() => ExchangeCardState<T>();
@@ -447,6 +449,10 @@ class ExchangeCardState<T extends Currency> extends State<ExchangeCard<T>> {
449 }
450
451 void _presentPicker(BuildContext context) {
452 + if (widget.onTapCurrencyPicker != null) {
453 + widget.onTapCurrencyPicker!(context);
454 + return;
455 + }
456 showPopUp<void>(
457 context: context,
458 builder: (_) => CurrencyPicker(
lib/src/screens/settings/display_settings_page.dart
+6 -30
@@ -1,11 +1,11 @@
1 import 'package:cake_wallet/entities/bitcoin_amount_display_mode.dart';
2 -import 'package:cake_wallet/entities/fiat_currency.dart';
2 import 'package:cake_wallet/entities/language_service.dart';
3 import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_regular_row.dart';
4 import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_selector.dart';
5 import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_toggle.dart';
6 import 'package:cake_wallet/entities/sync_status_display_mode.dart';
7 import 'package:cake_wallet/generated/i18n.dart';
8 +import 'package:cake_wallet/new-ui/widgets/currency_picker/fiat_currency_picker_sheet.dart';
9 import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart';
10 import 'package:cake_wallet/src/screens/settings/widgets/settings_choices_cell.dart';
11 import 'package:cake_wallet/src/screens/settings/widgets/settings_theme_choice.dart';
@@ -179,35 +179,11 @@ class DisplaySettingsPage extends StatelessWidget {
179 keyValue: "display_settings_fiat_currency",
180 label: S.of(context).settings_currency,
181 options: [_displaySettingsViewModel.fiatCurrency.title],
182 - onTap: () async {
183 - final items = FiatCurrency.all;
184 -
185 - final selectedAtIndex =
186 - items.indexOf(_displaySettingsViewModel.fiatCurrency);
187 -
188 - await showPopUp<void>(
189 - context: context,
190 - builder: (_) => Picker(
191 - items: items,
192 - selectedAtIndex: selectedAtIndex,
193 - mainAxisAlignment: MainAxisAlignment.start,
194 - onItemSelected: (FiatCurrency currency) {
195 - _displaySettingsViewModel.setFiatCurrency(currency);
196 - },
197 - images: FiatCurrency.all
198 - .map((e) => Image.asset("assets/images/flags/${e.countryCode}.png"))
199 - .toList(),
200 - hintText: S.of(context).search_currency,
201 - isGridView: true,
202 - matchingCriteria: (FiatCurrency currency, String searchText) {
203 - return currency.title.toLowerCase().contains(searchText) ||
204 - currency.fullName.toLowerCase().contains(searchText);
205 - },
206 - isSeparated: false,
207 -
208 - ),
209 - );
210 - }),
182 + onTap: () => FiatCurrencyPickerSheet.show(
183 + context: context,
184 + selected: _displaySettingsViewModel.fiatCurrency,
185 + onSelected: _displaySettingsViewModel.setFiatCurrency,
186 + )),
187 ListItemSelector(
188 keyValue: "display_settings_language",
189 label: S.of(context).settings_change_language,
lib/view_model/buy/buy_sell_view_model.dart
+3
@@ -5,6 +5,7 @@ import 'package:cake_wallet/buy/buy_quote.dart';
5 import 'package:cake_wallet/buy/onramper/onramper_buy_provider.dart';
6 import 'package:cake_wallet/buy/payment_method.dart';
7 import 'package:cake_wallet/buy/sell_buy_states.dart';
8 +import 'package:cake_wallet/core/amount_parsing_proxy.dart';
9 import 'package:cake_wallet/core/selectable_option.dart';
10 import 'package:cake_wallet/core/wallet_change_listener_view_model.dart';
11 import 'package:cake_wallet/entities/fiat_currency.dart';
@@ -87,6 +88,8 @@ abstract class BuySellViewModelBase extends WalletChangeListenerViewModel with S
88
89 final AppStore _appStore;
90
91 + AmountParsingProxy get amountParsingProxy => _appStore.amountParsingProxy;
92 +
93 Quote? bestRateQuote;
94
95 Quote? selectedQuote;
lib/view_model/exchange/exchange_view_model.dart
+4 -13
@@ -38,11 +38,9 @@ import 'package:cake_wallet/exchange/provider/xoswap_exchange_provider.dart';
38 import 'package:cake_wallet/exchange/trade.dart';
39 import 'package:cake_wallet/exchange/trade_request.dart';
40 import 'package:cake_wallet/generated/i18n.dart';
41 -import 'package:cake_wallet/src/screens/exchange/widgets/currency_picker.dart';
41 +import 'package:cake_wallet/new-ui/widgets/currency_picker/fiat_currency_picker_sheet.dart';
42 import 'package:cake_wallet/store/app_store.dart';
43 import 'package:cake_wallet/utils/exchange_provider_logger.dart';
44 -import 'package:cake_wallet/utils/show_pop_up.dart';
45 -import 'package:cw_core/currency.dart';
44 import "package:cw_core/wallet_info.dart";
45 import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
46 import 'package:cake_wallet/store/dashboard/trades_store.dart';
@@ -270,17 +268,10 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
268 }
269
270 void showFiatCurrencyPicker(BuildContext context) {
273 - showPopUp<void>(
271 + FiatCurrencyPickerSheet.show(
272 context: context,
275 - builder: (_) => CurrencyPicker(
276 - key: ValueKey('send_page_currency_picker_dialog_button_key'),
277 - selectedAtIndex: FiatCurrency.all.indexOf(fiat),
278 - items: FiatCurrency.all,
279 - hintText: S.of(context).search_currency,
280 - onItemSelected: (Currency cur) async {
281 - _settingsStore.fiatCurrency = (cur as FiatCurrency);
282 - },
283 - ),
273 + selected: fiat,
274 + onSelected: (cur) => _settingsStore.fiatCurrency = cur,
275 );
276 }
277
lib/view_model/wallet_address_list/wallet_address_list_view_model.dart
+3
@@ -2,6 +2,7 @@ import 'dart:core';
2 import 'dart:developer' as dev;
3
4 import 'package:cake_wallet/bitcoin/bitcoin.dart';
5 +import 'package:cake_wallet/core/amount_parsing_proxy.dart';
6 import 'package:cake_wallet/core/fiat_conversion_service.dart';
7 import 'package:cake_wallet/core/wallet_change_listener_view_model.dart';
8 import 'package:cake_wallet/decred/decred.dart';
@@ -167,6 +168,8 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
168 bool get hasPayjoin =>
169 wallet.type == WalletType.bitcoin && !isLightning && !isSilentPayments && uri.toString().contains("payjo.in");
170
171 + AmountParsingProxy get amountParsingProxy => _appStore.amountParsingProxy;
172 +
173 @computed
174 FiatCurrency get fiatCurrency => _appStore.settingsStore.fiatCurrency;
175
res/values/strings_ar.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "جارٍ إنشاء محفظة جديدة",
278 "creating_new_wallet_error": "خطأ: ${description}",
279 "creation_date": "تاريخ الإنشاء",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "المبادلة الحالية",
282 "current_wallet": "المحفظة الحالية",
283 "custom": "مخصص",
@@ -450,14 +451,12 @@
451 "expires": "ينتهي",
452 "expiresOn": "تنتهي في",
453 "expiry_and_validity": "تاريخ الانتهاء والصلاحية",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "تصدير النسخة الاحتياطية",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "تصدير سجلات Lightning",
457 "export_logs": "تصدير السجلات",
458 "export_outputs": "تصدير المخرجات",
459 "export_payjoin_logs": "تصدير سجلات Payjoin",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "تمديد الجلسة",
461 "external": "خارجي",
462 "external_wallet": "محفظة خارجية",
@@ -494,6 +493,7 @@
493 "gas_price": "سعر الغاز",
494 "general": "عام",
495 "generate_name": "توليد اسم",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "جارٍ إنشاء بطاقة هدية",
498 "generating_transaction": "جارٍ إنشاء المعاملة",
499 "get_a": "احصل على ",
@@ -736,6 +736,22 @@
736 "payments": "المدفوعات",
737 "pending": " (معلّق)",
738 "percentageOf": "من ${amount}",
739 + "picker_chip_all": "الجميع",
740 + "picker_no_matches": "لا توجد مباريات",
741 + "picker_section_all_assets": "جميع الأصول (من الألف إلى الياء)",
742 + "picker_section_all_currencies": "جميع العملات",
743 + "picker_section_crypto": "تشفير",
744 + "picker_section_cryptocurrencies": "العملات المشفرة",
745 + "picker_section_gas_token": "رمز الغاز",
746 + "picker_section_more_cryptocurrencies": "المزيد من العملات المشفرة",
747 + "picker_section_popular": "شائع",
748 + "picker_section_recents": "الأخيرة",
749 + "picker_section_selected": "مختارة",
750 + "picker_section_stablecoins": "العملات المستقرة",
751 + "picker_section_tokenized_stocks": "الأسهم المُرمزة (xStocks)",
752 + "picker_section_tokens_standard": "الرموز المميزة (${standard})",
753 + "picker_see_all": "شاهد الكل",
754 + "picker_show_less": "عرض أقل",
755 "pin_at_top": "تثبيت ${token} في الأعلى",
756 "pin_is_incorrect": "رمز PIN غير صحيح",
757 "pin_number": "رقم PIN",
@@ -926,12 +942,16 @@
942 "select_a_wallet": "اختر محفظة",
943 "select_address_to_copy": "حدد العنوان لنسخه",
944 "select_all": "تحديد الكل",
945 + "select_asset": "حدد الأصول",
946 "select_backup_file": "حدد ملف النسخ الاحتياطي",
947 "select_buy_provider_notice": "حدّد مزوّد الشراء أعلاه. يمكنك تخطّي هذه الشاشة عبر تعيين مزوّد الشراء الافتراضي في إعدادات التطبيق.",
948 "select_destination": "يرجى تحديد وجهة ملف النسخ الاحتياطي.",
949 + "select_fiat_currency_title": "حدد العملة",
950 "select_hw_account_below": "يرجى تحديد الحساب المراد استعادته أدناه:",
951 "select_manufacturer_title": "اختر الشركة المصنِّعة",
952 "select_network": "اختر الشبكة",
953 + "select_network_subtitle": "هذا الأصل موجود في شبكات متعددة. حدد الشخص الذي تريد استخدامه",
954 + "select_network_title": "حدد الشبكة",
955 "select_other_wallet": "اختر محفظة أخرى",
956 "select_receiver": "حدد المستلم",
957 "select_sell_provider_notice": "اختر مزوّد البيع أعلاه. يمكنك تخطّي هذه الشاشة بتعيين مزوّد البيع الافتراضي في إعدادات التطبيق.",
res/values/strings_bg.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Създаване на нов портфейл",
278 "creating_new_wallet_error": "Грешка: ${description}",
279 "creation_date": "Дата на създаване",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Текущ суап",
282 "current_wallet": "Текущ портфейл",
283 "custom": "По избор",
@@ -450,14 +451,12 @@
451 "expires": "Изтича",
452 "expiresOn": "Изтича на",
453 "expiry_and_validity": "Срок на валидност и валидност",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Експортиране на резервно копие",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Експортиране на Lightning логове",
457 "export_logs": "Експортиране на логове",
458 "export_outputs": "Експортиране на изходи",
459 "export_payjoin_logs": "Експортиране на Payjoin логове",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Удължи сесията",
461 "external": "Външен",
462 "external_wallet": "Външен портфейл",
@@ -494,6 +493,7 @@
493 "gas_price": "Цена на gas",
494 "general": "Общи",
495 "generate_name": "Генериране на име",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Генериране на подаръчна карта",
498 "generating_transaction": "Генериране на транзакция",
499 "get_a": "Вземете ",
@@ -736,6 +736,22 @@
736 "payments": "Плащания",
737 "pending": " (в изчакване)",
738 "percentageOf": "от ${amount}",
739 + "picker_chip_all": "Всички",
740 + "picker_no_matches": "Няма съвпадения",
741 + "picker_section_all_assets": "Всички активи (A-Z)",
742 + "picker_section_all_currencies": "Всички валути",
743 + "picker_section_crypto": "Крипто",
744 + "picker_section_cryptocurrencies": "Криптовалути",
745 + "picker_section_gas_token": "Газов жетон",
746 + "picker_section_more_cryptocurrencies": "Още криптовалути",
747 + "picker_section_popular": "Популярни",
748 + "picker_section_recents": "Скорошни",
749 + "picker_section_selected": "Избрано",
750 + "picker_section_stablecoins": "Стабилни монети",
751 + "picker_section_tokenized_stocks": "Токенизирани акции (xStocks)",
752 + "picker_section_tokens_standard": "Токени (${standard})",
753 + "picker_see_all": "Вижте всички",
754 + "picker_show_less": "Покажи по-малко",
755 "pin_at_top": "Закачи ${token} най-отгоре",
756 "pin_is_incorrect": "PIN кодът е неправилен",
757 "pin_number": "PIN номер",
@@ -926,12 +942,16 @@
942 "select_a_wallet": "Изберете портфейл",
943 "select_address_to_copy": "Изберете адрес за копиране",
944 "select_all": "Избери всички",
945 + "select_asset": "Изберете Актив",
946 "select_backup_file": "Изберете файл с резервно копие",
947 "select_buy_provider_notice": "Изберете доставчик за покупка по‑горе. Можете да пропуснете този екран, като зададете доставчик за покупка по подразбиране в настройките на приложението.",
948 "select_destination": "Моля, изберете местоположение за файла с резервно копие.",
949 + "select_fiat_currency_title": "Изберете Валута",
950 "select_hw_account_below": "Моля, изберете кой акаунт да възстановите по-долу:",
951 "select_manufacturer_title": "Изберете производител",
952 "select_network": "Изберете мрежа",
953 + "select_network_subtitle": "Този актив присъства в множество мрежи. Изберете този, който искате да използвате",
954 + "select_network_title": "Изберете Мрежа",
955 "select_other_wallet": "Изберете друг портфейл",
956 "select_receiver": "Изберете получател",
957 "select_sell_provider_notice": "Изберете доставчик за продажба по-горе. Можете да пропуснете този екран, като зададете доставчик за продажба по подразбиране в настройките на приложението.",
res/values/strings_cs.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Vytváření nové peněženky",
278 "creating_new_wallet_error": "Chyba: ${description}",
279 "creation_date": "Datum vytvoření",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Aktuální swap",
282 "current_wallet": "Aktuální peněženka",
283 "custom": "Vlastní",
@@ -450,14 +451,12 @@
451 "expires": "Vyprší",
452 "expiresOn": "Vyprší dne",
453 "expiry_and_validity": "Vypršení platnosti",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Exportovat zálohu",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Exportovat protokoly Lightning",
457 "export_logs": "Exportovat protokoly",
458 "export_outputs": "Exportovat výstupy",
459 "export_payjoin_logs": "Exportovat protokoly Payjoin",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Prodloužit relaci",
461 "external": "Externí",
462 "external_wallet": "Externí peněženka",
@@ -494,6 +493,7 @@
493 "gas_price": "Cena gasu",
494 "general": "Obecné",
495 "generate_name": "Vygenerovat jméno",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Generuji dárkovou kartu",
498 "generating_transaction": "Generování transakce",
499 "get_a": "Získejte ",
@@ -736,6 +736,22 @@
736 "payments": "Platby",
737 "pending": " (čekající)",
738 "percentageOf": "z ${amount}",
739 + "picker_chip_all": "Vše",
740 + "picker_no_matches": "Žádné zápasy",
741 + "picker_section_all_assets": "Všechna aktiva (A–Z)",
742 + "picker_section_all_currencies": "Všechny měny",
743 + "picker_section_crypto": "Krypto",
744 + "picker_section_cryptocurrencies": "Kryptoměny",
745 + "picker_section_gas_token": "Token na plyn",
746 + "picker_section_more_cryptocurrencies": "Více kryptoměn",
747 + "picker_section_popular": "Populární",
748 + "picker_section_recents": "Nedávné",
749 + "picker_section_selected": "Vybraný",
750 + "picker_section_stablecoins": "Stablecoiny",
751 + "picker_section_tokenized_stocks": "Tokenizované akcie (xStocks)",
752 + "picker_section_tokens_standard": "Tokeny (${standard})",
753 + "picker_see_all": "Zobrazit vše",
754 + "picker_show_less": "Ukázat méně",
755 "pin_at_top": "Připnout ${token} nahoru",
756 "pin_is_incorrect": "PIN je nesprávný",
757 "pin_number": "PIN",
@@ -926,12 +942,16 @@
942 "select_a_wallet": "Vyberte peněženku",
943 "select_address_to_copy": "Vyberte adresu ke zkopírování",
944 "select_all": "Vybrat vše",
945 + "select_asset": "Vyberte položku Dílo",
946 "select_backup_file": "Vybrat záložní soubor",
947 "select_buy_provider_notice": "Vyberte výše poskytovatele pro nákup. Tuto obrazovku můžete přeskočit nastavením výchozího poskytovatele pro nákup v nastavení aplikace.",
948 "select_destination": "Vyberte prosím umístění pro soubor zálohy.",
949 + "select_fiat_currency_title": "Vyberte možnost Měna",
950 "select_hw_account_below": "Vyberte prosím níže účet, který chcete obnovit:",
951 "select_manufacturer_title": "Vyberte výrobce",
952 "select_network": "Vyberte síť",
953 + "select_network_subtitle": "Toto aktivum je přítomno ve více sítích. Vyberte ten, který chcete použít",
954 + "select_network_title": "Vyberte Síť",
955 "select_other_wallet": "Vyberte jinou peněženku",
956 "select_receiver": "Vyberte příjemce",
957 "select_sell_provider_notice": "Vyberte výše poskytovatele prodeje. Tuto obrazovku můžete přeskočit nastavením výchozího poskytovatele prodeje v nastavení aplikace.",
res/values/strings_de.arb
+20
@@ -736,6 +736,22 @@
736 "payments": "Zahlungen",
737 "pending": " (ausstehend)",
738 "percentageOf": "von ${amount}",
739 + "picker_chip_all": "Alle",
740 + "picker_no_matches": "Keine Übereinstimmungen",
741 + "picker_section_all_assets": "Alle Assets (A-Z)",
742 + "picker_section_all_currencies": "Alle Währungen",
743 + "picker_section_crypto": "Krypto",
744 + "picker_section_cryptocurrencies": "Kryptowährungen",
745 + "picker_section_gas_token": "Gas-Token",
746 + "picker_section_more_cryptocurrencies": "Weitere Kryptowährungen",
747 + "picker_section_popular": "Beliebt",
748 + "picker_section_recents": "Neueste",
749 + "picker_section_selected": "Ausgewählt",
750 + "picker_section_stablecoins": "Stablecoins",
751 + "picker_section_tokenized_stocks": "Tokenisierte Aktien (xStocks)",
752 + "picker_section_tokens_standard": "Token (${standard})",
753 + "picker_see_all": "Alle anzeigen",
754 + "picker_show_less": "Weniger anzeigen",
755 "pin_at_top": "${token} oben anheften",
756 "pin_is_incorrect": "PIN ist falsch",
757 "pin_number": "PIN-Nummer",
@@ -927,12 +943,16 @@
943 "select_a_wallet": "Wallet auswählen",
944 "select_address_to_copy": "Adresse zum Kopieren auswählen",
945 "select_all": "Alles auswählen",
946 + "select_asset": "Wählen Sie Asset aus",
947 "select_backup_file": "Backup-Datei auswählen",
948 "select_buy_provider_notice": "Wählen Sie oben einen Kaufanbieter aus. Sie können diesen Bildschirm überspringen, indem Sie Ihren Standard-Kaufanbieter in den App-Einstellungen festlegen.",
949 "select_destination": "Bitte wählen Sie das Ziel für die Backup-Datei aus.",
950 + "select_fiat_currency_title": "Wählen Sie Währung aus",
951 "select_hw_account_below": "Bitte wählen Sie unten aus, welches Konto wiederhergestellt werden soll:",
952 "select_manufacturer_title": "Hersteller auswählen",
953 "select_network": "Netzwerk auswählen",
954 + "select_network_subtitle": "Dieses Asset ist in mehreren Netzwerken vorhanden. Wählen Sie die aus, die Sie verwenden möchten",
955 + "select_network_title": "Wählen Sie Netzwerk",
956 "select_other_wallet": "Anderes Wallet auswählen",
957 "select_receiver": "Empfänger auswählen",
958 "select_sell_provider_notice": "Wählen Sie oben einen Verkaufsanbieter aus. Sie können diesen Bildschirm überspringen, indem Sie in den App-Einstellungen Ihren Standard-Verkaufsanbieter festlegen.",
res/values/strings_en.arb
+22 -2
@@ -280,6 +280,7 @@
280 "creating_new_wallet": "Creating new wallet",
281 "creating_new_wallet_error": "Error: ${description}",
282 "creation_date": "Creation Date",
283 + "csv_nothing_to_export": "Nothing to export",
284 "current_swap": "Current Swap",
285 "current_wallet": "Current wallet",
286 "custom": "Custom",
@@ -455,14 +456,12 @@
456 "expires": "Expires",
457 "expiresOn": "Expires on",
458 "expiry_and_validity": "Expiry and Validity",
458 - "csv_nothing_to_export": "Nothing to export",
459 "export_backup": "Export backup",
460 "export_csv": "Export CSV",
461 "export_lightning_logs": "Export Lightning logs",
462 "export_logs": "Export logs",
463 "export_outputs": "Export outputs",
464 "export_payjoin_logs": "Export Payjoin logs",
465 - "generating_csv": "Generating CSV...",
465 "extend_session": "Extend Session",
466 "external": "External",
467 "external_wallet": "External wallet",
@@ -501,6 +500,7 @@
500 "gas_price": "Gas price",
501 "general": "General",
502 "generate_name": "Generate Name",
503 + "generating_csv": "Generating CSV...",
504 "generating_gift_card": "Generating Gift Card",
505 "generating_transaction": "Generating transaction",
506 "get_a": "Get a ",
@@ -751,6 +751,22 @@
751 "payments": "Payments",
752 "pending": " (pending)",
753 "percentageOf": "of ${amount}",
754 + "picker_chip_all": "All",
755 + "picker_no_matches": "No matches",
756 + "picker_section_all_assets": "All Assets (A-Z)",
757 + "picker_section_all_currencies": "All Currencies",
758 + "picker_section_crypto": "Crypto",
759 + "picker_section_cryptocurrencies": "Cryptocurrencies",
760 + "picker_section_gas_token": "Gas Token",
761 + "picker_section_more_cryptocurrencies": "More Cryptocurrencies",
762 + "picker_section_popular": "Popular",
763 + "picker_section_recents": "Recents",
764 + "picker_section_selected": "Selected",
765 + "picker_section_stablecoins": "Stablecoins",
766 + "picker_section_tokenized_stocks": "Tokenized Stocks (xStocks)",
767 + "picker_section_tokens_standard": "Tokens (${standard})",
768 + "picker_see_all": "See All",
769 + "picker_show_less": "Show less",
770 "pin_at_top": "Pin ${token} at top",
771 "pin_is_incorrect": "PIN is incorrect",
772 "pin_number": "PIN number",
@@ -941,12 +957,16 @@
957 "select_a_wallet": "Select a wallet",
958 "select_address_to_copy": "Select Address to Copy",
959 "select_all": "Select all",
960 + "select_asset": "Select Asset",
961 "select_backup_file": "Select backup file",
962 "select_buy_provider_notice": "Select a buy provider above. You can skip this screen by setting your default buy provider in app settings.",
963 "select_destination": "Please select destination for the backup file.",
964 + "select_fiat_currency_title": "Select Currency",
965 "select_hw_account_below": "Please select which account to restore below:",
966 "select_manufacturer_title": "Select Manufacturer",
967 "select_network": "Select Network",
968 + "select_network_subtitle": "This asset is present in multiple networks. Select the one you want to use",
969 + "select_network_title": "Select Network",
970 "select_other_wallet": "Select other Wallet",
971 "select_receiver": "Select Receiver",
972 "select_sell_provider_notice": "Select a sell provider above. You can skip this screen by setting your default sell provider in app settings.",
res/values/strings_es.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Creando una nueva billetera",
278 "creating_new_wallet_error": "Error: ${description}",
279 "creation_date": "Fecha de creación",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Intercambio actual",
282 "current_wallet": "Cartera actual",
283 "custom": "Personalizado",
@@ -450,14 +451,12 @@
451 "expires": "Caduca",
452 "expiresOn": "Caduca el",
453 "expiry_and_validity": "Caducidad y validez",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Exportar copia de seguridad",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Exportar registros de Lightning",
457 "export_logs": "Exportar registros",
458 "export_outputs": "Exportar salidas",
459 "export_payjoin_logs": "Exportar registros de Payjoin",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Extender sesión",
461 "external": "Externo",
462 "external_wallet": "Billetera externa",
@@ -494,6 +493,7 @@
493 "gas_price": "Precio del gas",
494 "general": "General",
495 "generate_name": "Generar nombre",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Generando tarjeta de regalo",
498 "generating_transaction": "Generando transacción",
499 "get_a": "Obtén un ",
@@ -737,6 +737,22 @@
737 "pending": " (pendiente)",
738 "percentageOf": "de ${amount}",
739 "personalizado": "personalizado",
740 + "picker_chip_all": "Todo",
741 + "picker_no_matches": "No hay coincidencias",
742 + "picker_section_all_assets": "Todos los activos (A-Z)",
743 + "picker_section_all_currencies": "Todas las monedas",
744 + "picker_section_crypto": "Cripto",
745 + "picker_section_cryptocurrencies": "Criptomonedas",
746 + "picker_section_gas_token": "Ficha de gasolina",
747 + "picker_section_more_cryptocurrencies": "Más criptomonedas",
748 + "picker_section_popular": "Popular",
749 + "picker_section_recents": "Recientes",
750 + "picker_section_selected": "Seleccionado",
751 + "picker_section_stablecoins": "Monedas estables",
752 + "picker_section_tokenized_stocks": "Acciones tokenizadas (xStocks)",
753 + "picker_section_tokens_standard": "Fichas (${standard})",
754 + "picker_see_all": "Ver todo",
755 + "picker_show_less": "Mostrar menos",
756 "pin_at_top": "Fijar ${token} arriba",
757 "pin_is_incorrect": "El PIN es incorrecto",
758 "pin_number": "Número de PIN",
@@ -927,12 +943,16 @@
943 "select_a_wallet": "Selecciona una cartera",
944 "select_address_to_copy": "Seleccionar dirección para copiar",
945 "select_all": "Seleccionar todo",
946 + "select_asset": "Seleccionar activo",
947 "select_backup_file": "Seleccionar archivo de copia de seguridad",
948 "select_buy_provider_notice": "Selecciona un proveedor de compra arriba. Puedes omitir esta pantalla configurando tu proveedor de compra predeterminado en los ajustes de la aplicación.",
949 "select_destination": "Selecciona el destino del archivo de copia de seguridad.",
950 + "select_fiat_currency_title": "Seleccionar moneda",
951 "select_hw_account_below": "Por favor, selecciona la cuenta que deseas restaurar a continuación:",
952 "select_manufacturer_title": "Seleccionar fabricante",
953 "select_network": "Seleccionar red",
954 + "select_network_subtitle": "Este activo está presente en múltiples redes. Seleccione el que desea utilizar",
955 + "select_network_title": "Seleccionar red",
956 "select_other_wallet": "Seleccionar otra billetera",
957 "select_receiver": "Seleccionar destinatario",
958 "select_sell_provider_notice": "Selecciona un proveedor de venta arriba. Puedes omitir esta pantalla configurando tu proveedor de venta predeterminado en los ajustes de la aplicación.",
res/values/strings_fa.arb
+22 -2
@@ -275,6 +275,7 @@
275 "creating_new_wallet": "در حال ایجاد کیف پول جدید",
276 "creating_new_wallet_error": "خطا: ${description}",
277 "creation_date": "تاریخ ایجاد",
278 + "csv_nothing_to_export": "Nothing to export",
279 "current_swap": "سواپ فعلی",
280 "current_wallet": "کیف پول فعلی",
281 "custom": "سفارشی",
@@ -448,14 +449,12 @@
449 "expires": "منقضی می‌شود",
450 "expiresOn": "انقضا در",
451 "expiry_and_validity": "انقضا و اعتبار",
451 - "csv_nothing_to_export": "Nothing to export",
452 "export_backup": "صدور نسخه پشتیبان",
453 "export_csv": "Export CSV",
454 "export_lightning_logs": "خروجی گرفتن از گزارش‌های لایتنینگ",
455 "export_logs": "خروجی گرفتن از گزارش‌ها",
456 "export_outputs": "برون‌برد خروجی‌ها",
457 "export_payjoin_logs": "گزارش‌های Payjoin را صادر کنید",
458 - "generating_csv": "Generating CSV...",
458 "extend_session": "تمدید جلسه",
459 "external": "خارجی",
460 "external_wallet": "کیف پول خارجی",
@@ -492,6 +491,7 @@
491 "gas_price": "قیمت گس",
492 "general": "عمومی",
493 "generate_name": "ایجاد نام",
494 + "generating_csv": "Generating CSV...",
495 "generating_gift_card": "در حال ایجاد گیفت کارت",
496 "generating_transaction": "در حال ایجاد تراکنش",
497 "get_a": "یک ",
@@ -735,6 +735,22 @@
735 "payments": "پرداخت‌ها",
736 "pending": " (در انتظار)",
737 "percentageOf": "از ${amount}",
738 + "picker_chip_all": "همه",
739 + "picker_no_matches": "هیچ مسابقه ای وجود ندارد",
740 + "picker_section_all_assets": "همه دارایی ها (A-Z)",
741 + "picker_section_all_currencies": "همه ارزها",
742 + "picker_section_crypto": "رمزنگاری",
743 + "picker_section_cryptocurrencies": "ارزهای رمزنگاری شده",
744 + "picker_section_gas_token": "ژتون گاز",
745 + "picker_section_more_cryptocurrencies": "ارزهای دیجیتال بیشتر",
746 + "picker_section_popular": "محبوب",
747 + "picker_section_recents": "اخیر",
748 + "picker_section_selected": "انتخاب شده است",
749 + "picker_section_stablecoins": "استیبل کوین ها",
750 + "picker_section_tokenized_stocks": "سهام توکن شده (xStocks)",
751 + "picker_section_tokens_standard": "توکن‌ها (${standard})",
752 + "picker_see_all": "همه را ببینید",
753 + "picker_show_less": "کمتر نشان دادن",
754 "pin_at_top": "سنجاق کردن ${token} به بالا",
755 "pin_is_incorrect": "پین نادرست است",
756 "pin_number": "شماره PIN",
@@ -925,12 +941,16 @@
941 "select_a_wallet": "یک کیف پول را انتخاب کنید",
942 "select_address_to_copy": "آدرس را برای کپی کردن انتخاب کنید",
943 "select_all": "انتخاب همه",
944 + "select_asset": "Asset را انتخاب کنید",
945 "select_backup_file": "فایل پشتیبان را انتخاب کنید",
946 "select_buy_provider_notice": "یک ارائه‌دهنده خرید را در بالا انتخاب کنید.\nمی‌توانید با تنظیم ارائه‌دهنده خرید پیش‌فرض در تنظیمات برنامه، این صفحه را رد کنید.",
947 "select_destination": "لطفاً مقصد فایل پشتیبان را انتخاب کنید.",
948 + "select_fiat_currency_title": "ارز را انتخاب کنید",
949 "select_hw_account_below": "لطفاً حسابی را که می‌خواهید بازیابی کنید، در زیر انتخاب کنید:",
950 "select_manufacturer_title": "انتخاب سازنده",
951 "select_network": "انتخاب شبکه",
952 + "select_network_subtitle": "این دارایی در چندین شبکه وجود دارد. موردی را که می خواهید استفاده کنید انتخاب کنید",
953 + "select_network_title": "Network را انتخاب کنید",
954 "select_other_wallet": "کیف پول دیگری را انتخاب کنید",
955 "select_receiver": "گیرنده را انتخاب کنید",
956 "select_sell_provider_notice": "یک ارائه‌دهنده فروش را در بالا انتخاب کنید.\nمی‌توانید با تنظیم ارائه‌دهنده فروش پیش‌فرض خود در تنظیمات برنامه، این صفحه را رد کنید.",
res/values/strings_fr.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Création d'un nouveau portefeuille",
278 "creating_new_wallet_error": "Erreur : ${description}",
279 "creation_date": "Date de création",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Swap en cours",
282 "current_wallet": "Portefeuille actuel",
283 "custom": "Personnalisé",
@@ -450,14 +451,12 @@
451 "expires": "Expire",
452 "expiresOn": "Expire le",
453 "expiry_and_validity": "Expiration et validité",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Exporter la sauvegarde",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Exporter les logs Lightning",
457 "export_logs": "Exporter les journaux",
458 "export_outputs": "Exporter les sorties",
459 "export_payjoin_logs": "Exporter les journaux de Payjoin",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Prolonger la session",
461 "external": "Externe",
462 "external_wallet": "Portefeuille externe",
@@ -494,6 +493,7 @@
493 "gas_price": "Prix du gas",
494 "general": "Général",
495 "generate_name": "Générer un nom",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Génération de la carte-cadeau",
498 "generating_transaction": "Génération de la transaction",
499 "get_a": "Obtenir un ",
@@ -736,6 +736,22 @@
736 "payments": "Paiements",
737 "pending": " (en attente)",
738 "percentageOf": "de ${amount}",
739 + "picker_chip_all": "Tous",
740 + "picker_no_matches": "Aucune correspondance",
741 + "picker_section_all_assets": "Tous les actifs (A-Z)",
742 + "picker_section_all_currencies": "Toutes les devises",
743 + "picker_section_crypto": "Cryptomonnaie",
744 + "picker_section_cryptocurrencies": "Crypto-monnaies",
745 + "picker_section_gas_token": "Jeton de gaz",
746 + "picker_section_more_cryptocurrencies": "Plus de crypto-monnaies",
747 + "picker_section_popular": "Populaire",
748 + "picker_section_recents": "Récents",
749 + "picker_section_selected": "Choisi",
750 + "picker_section_stablecoins": "Pièces stables",
751 + "picker_section_tokenized_stocks": "Actions tokenisées (xStocks)",
752 + "picker_section_tokens_standard": "Jetons (${standard})",
753 + "picker_see_all": "Voir tout",
754 + "picker_show_less": "Afficher moins",
755 "pin_at_top": "Épingler ${token} en haut",
756 "pin_is_incorrect": "Le PIN est incorrect",
757 "pin_number": "Numéro de PIN",
@@ -926,12 +942,16 @@
942 "select_a_wallet": "Sélectionnez un portefeuille",
943 "select_address_to_copy": "Sélectionner l'adresse à copier",
944 "select_all": "Tout sélectionner",
945 + "select_asset": "Sélectionnez l'actif",
946 "select_backup_file": "Sélectionner le fichier de sauvegarde",
947 "select_buy_provider_notice": "Sélectionnez un prestataire d'achat ci-dessus. Vous pouvez ignorer cet écran en définissant votre prestataire d'achat par défaut dans les paramètres de l'application.",
948 "select_destination": "Veuillez sélectionner l’emplacement du fichier de sauvegarde.",
949 + "select_fiat_currency_title": "Sélectionnez la devise",
950 "select_hw_account_below": "Veuillez sélectionner ci-dessous le compte à restaurer :",
951 "select_manufacturer_title": "Sélectionner le fabricant",
952 "select_network": "Sélectionner le réseau",
953 + "select_network_subtitle": "Cet atout est présent dans plusieurs réseaux. Sélectionnez celui que vous souhaitez utiliser",
954 + "select_network_title": "Sélectionnez le réseau",
955 "select_other_wallet": "Sélectionner un autre portefeuille",
956 "select_receiver": "Sélectionner le destinataire",
957 "select_sell_provider_notice": "Sélectionnez un prestataire de vente ci-dessus. Vous pouvez ignorer cet écran en définissant votre prestataire de vente par défaut dans les paramètres de l'application.",
res/values/strings_gn.arb
+22 -2
@@ -223,6 +223,7 @@
223 "creating_new_wallet": "Omoheñóvo billetera pyahu",
224 "creating_new_wallet_error": "Jejavy: ${description}",
225 "creation_date": "Arange ojejapo hague",
226 + "csv_nothing_to_export": "Nothing to export",
227 "current_swap": "Intercambio ko'ág̃a",
228 "current_wallet": "Billetera actual",
229 "custom": "Mboavopyre",
@@ -357,12 +358,10 @@
358 "expires": "Opa hag̃ua",
359 "expiresOn": "Opa hag̃ua",
360 "expiry_and_validity": "Opaha ára ha hekorã",
360 - "csv_nothing_to_export": "Nothing to export",
361 "export_backup": "Emondo hag̃ua backup",
362 "export_csv": "Export CSV",
363 "export_lightning_logs": "Emondo Lightning rembiapokue",
364 "export_payjoin_logs": "Emondo okápe Payjoin registro-kuéra",
365 - "generating_csv": "Generating CSV...",
365 "external": "Okápegua",
366 "external_wallet": "Billetera externa",
367 "extra_id": "ID extra:",
@@ -391,6 +390,7 @@
390 "full_balance": "Saldo completo",
391 "general": "Mba'eichagua",
392 "generate_name": "Emoheñói Téra",
393 + "generating_csv": "Generating CSV...",
394 "generating_gift_card": "Oñemoheñói hína tarjeta jopói",
395 "get_a": "Ereko peteĩ ",
396 "get_card_note": "Ikatu emyenyhẽjey viru digital rupive. Ndoikotevẽi ambue marandu!",
@@ -577,6 +577,22 @@
577 "pending": " (oĩhína oñehaʼãrõme)",
578 "percentageOf": "rehe ${amount}",
579 "personalizado": "Ojeiporavokuaava",
580 + "picker_chip_all": "Opavave",
581 + "picker_no_matches": "Ndaipóri joaju",
582 + "picker_section_all_assets": "Opaite mba’e (A-Z) .",
583 + "picker_section_all_currencies": "Opaite Viru rehegua",
584 + "picker_section_crypto": "Cripto rehegua",
585 + "picker_section_cryptocurrencies": "Criptomoneda rehegua",
586 + "picker_section_gas_token": "Token de Gas rehegua",
587 + "picker_section_more_cryptocurrencies": "Hetave Criptomoneda rehegua",
588 + "picker_section_popular": "Ojehayhúva",
589 + "picker_section_recents": "Nda’aréi ojejapóva",
590 + "picker_section_selected": "Ojeporavóva",
591 + "picker_section_stablecoins": "Stablecoins rehegua",
592 + "picker_section_tokenized_stocks": "Acciones Tokenizadas (xStocks) rehegua .",
593 + "picker_section_tokens_standard": "Fichas (${standard}) rehegua .",
594 + "picker_see_all": "Ehecha opa mba'e",
595 + "picker_show_less": "Ehechauka sa’ive",
596 "pin_at_top": "Emboja ${token} yvate gotyo",
597 "pin_is_incorrect": "PIN ndoikói hag̃ua",
598 "pin_number": "PIN papapy",
@@ -743,9 +759,13 @@
759 "seedtype_polyseed": "Polieta (16 ñe’ẽ)",
760 "select_address_to_copy": "Eiporavo dirección emokopia hag̃ua",
761 "select_all": "Eiporavo opaite",
762 + "select_asset": "Eiporavo Activo",
763 "select_backup_file": "Eiporavo marandurenda ñongatupyre",
764 "select_buy_provider_notice": "Eiporavo peteĩ jogua-me’ẽha yvate. Ikatu rehasapa ko pantalla emoĩvo nde jogua-me’ẽha ijypykuéramo ñembohekorã aplicación-pe.",
765 "select_destination": "Eiporavo moõpa oñeñongatúta marandurenda backup.",
766 + "select_fiat_currency_title": "Eiporavo Moneda",
767 + "select_network_subtitle": "Ko activo oime presente heta red-pe. Eiporavo pe reiporuséva",
768 + "select_network_title": "Eiporavo Red",
769 "select_other_wallet": "Eiporavo ambue billetera",
770 "select_receiver": "Eiporavo Mbyhyha",
771 "select_sell_provider_notice": "Eiporavo yvate peteĩ ñemuha. Ikatu rehasa hag̃ua ko pantalla emoĩvo nde ñemuha ijypykuéramo umi ñemboheko hag̃ua aplicación-pe.",
res/values/strings_ha.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Ana ƙirƙirar sabon walat",
278 "creating_new_wallet_error": "Kuskure: ${description}",
279 "creation_date": "Ranar ƙirƙira",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Musayar Yanzu",
282 "current_wallet": "Walit na yanzu",
283 "custom": "Na musamman",
@@ -450,14 +451,12 @@
451 "expires": "Yana ƙarewa",
452 "expiresOn": "Yana ƙarewa a",
453 "expiry_and_validity": "Ranar ƙarewa da inganci",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Fitar da ajiyar baya",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Fitar da log ɗin Lightning",
457 "export_logs": "Fitar da log",
458 "export_outputs": "Fitar da abubuwan fitarwa",
459 "export_payjoin_logs": "Fitar da log ɗin Payjoin",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Tsawaita Zama",
461 "external": "Na waje",
462 "external_wallet": "Wallet na waje",
@@ -494,6 +493,7 @@
493 "gas_price": "Farashin gas",
494 "general": "Gabaɗaya",
495 "generate_name": "Ƙirƙiri Suna",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Ana Ƙirƙirar Katin Kyauta",
498 "generating_transaction": "Ana ƙirƙirar ma'amala",
499 "get_a": "Samu ",
@@ -738,6 +738,22 @@
738 "payments": "Biyan kuɗi",
739 "pending": " (ana jiran)",
740 "percentageOf": "na ${amount}",
741 + "picker_chip_all": "Duka",
742 + "picker_no_matches": "Babu ashana",
743 + "picker_section_all_assets": "Duk Kayayyaki (A-Z)",
744 + "picker_section_all_currencies": "Duk Kudi",
745 + "picker_section_crypto": "Crypto",
746 + "picker_section_cryptocurrencies": "Cryptocurrencies",
747 + "picker_section_gas_token": "Gas Token",
748 + "picker_section_more_cryptocurrencies": "Ƙarin Cryptocurrencies",
749 + "picker_section_popular": "Shahararren",
750 + "picker_section_recents": "Kwanan nan",
751 + "picker_section_selected": "zaba",
752 + "picker_section_stablecoins": "Stablecoins",
753 + "picker_section_tokenized_stocks": "Hannun Jari na Tokenized (xStocks)",
754 + "picker_section_tokens_standard": "Alamu (${standard})",
755 + "picker_see_all": "Duba duka",
756 + "picker_show_less": "Nuna ƙasa",
757 "pin_at_top": "Saka ${token} a sama",
758 "pin_is_incorrect": "PIN ɗin ba daidai ba ne",
759 "pin_number": "Lambar PIN",
@@ -928,12 +944,16 @@
944 "select_a_wallet": "Zaɓi walat",
945 "select_address_to_copy": "Zaɓi adireshi don kwafi",
946 "select_all": "Zaɓi duka",
947 + "select_asset": "Zaɓi Kadari",
948 "select_backup_file": "Zaɓi fayil ɗin ajiyar baya",
949 "select_buy_provider_notice": "Zaɓi mai ba da sabis na saye a sama. Za ka iya tsallake wannan allon ta hanyar saita tsohon mai ba da sabis na saye a cikin saitunan manhaja.",
950 "select_destination": "Da fatan za a zaɓi wurin da za a ajiye fayil ɗin madadin.",
951 + "select_fiat_currency_title": "Zaɓi Kuɗi",
952 "select_hw_account_below": "Da fatan za a zaɓi asusun da za a maido a ƙasa:",
953 "select_manufacturer_title": "Zaɓi Mai ƙera",
954 "select_network": "Zaɓi hanyar sadarwa",
955 + "select_network_subtitle": "Wannan kadari yana nan a cikin cibiyoyin sadarwa da yawa. Zaɓi wanda kake son amfani da shi",
956 + "select_network_title": "Zaɓi hanyar sadarwa",
957 "select_other_wallet": "Zaɓi wata Wallet",
958 "select_receiver": "Zaɓi Mai karɓa",
959 "select_sell_provider_notice": "Zaɓi mai ba da sabis na sayarwa a sama. Kuna iya tsallake wannan allon ta saita tsohon mai ba da sabis na sayarwa a cikin saitunan app.",
res/values/strings_hi.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "नया वॉलेट बनाया जा रहा है",
278 "creating_new_wallet_error": "त्रुटि: ${description}",
279 "creation_date": "निर्माण तिथि",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "वर्तमान स्वैप",
282 "current_wallet": "वर्तमान वॉलेट",
283 "custom": "कस्टम",
@@ -450,14 +451,12 @@
451 "expires": "समाप्त होता है",
452 "expiresOn": "इस दिन समाप्त होता है",
453 "expiry_and_validity": "समाप्ति और वैधता",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "बैकअप निर्यात करें",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "लाइटनिंग लॉग्स निर्यात करें",
457 "export_logs": "लॉग निर्यात करें",
458 "export_outputs": "आउटपुट निर्यात करें",
459 "export_payjoin_logs": "Payjoin लॉग एक्सपोर्ट करें",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "सत्र बढ़ाएँ",
461 "external": "बाहरी",
462 "external_wallet": "बाहरी वॉलेट",
@@ -494,6 +493,7 @@
493 "gas_price": "गैस मूल्य",
494 "general": "सामान्य",
495 "generate_name": "नाम उत्पन्न करें",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "गिफ्ट कार्ड जनरेट किया जा रहा है",
498 "generating_transaction": "लेन-देन जनरेट किया जा रहा है",
499 "get_a": "एक प्राप्त करें ",
@@ -737,6 +737,22 @@
737 "payments": "भुगतान",
738 "pending": " (लंबित)",
739 "percentageOf": "${amount} का",
740 + "picker_chip_all": "सभी",
741 + "picker_no_matches": "कोई मेल नहीं",
742 + "picker_section_all_assets": "सभी संपत्तियां (ए-जेड)",
743 + "picker_section_all_currencies": "सभी मुद्राएँ",
744 + "picker_section_crypto": "क्रिप्टो",
745 + "picker_section_cryptocurrencies": "क्रिप्टोकरेंसी",
746 + "picker_section_gas_token": "गैस टोकन",
747 + "picker_section_more_cryptocurrencies": "अधिक क्रिप्टोकरेंसी",
748 + "picker_section_popular": "लोकप्रिय",
749 + "picker_section_recents": "हाल ही",
750 + "picker_section_selected": "चयनित",
751 + "picker_section_stablecoins": "स्थिर सिक्के",
752 + "picker_section_tokenized_stocks": "टोकनयुक्त स्टॉक (xStocks)",
753 + "picker_section_tokens_standard": "टोकन (${standard})",
754 + "picker_see_all": "सभी देखें",
755 + "picker_show_less": "कम दिखाओ",
756 "pin_at_top": "${token} को शीर्ष पर पिन करें",
757 "pin_is_incorrect": "PIN गलत है",
758 "pin_number": "पिन नंबर",
@@ -928,12 +944,16 @@
944 "select_a_wallet": "एक वॉलेट चुनें",
945 "select_address_to_copy": "कॉपी करने के लिए पता चुनें",
946 "select_all": "सभी चुनें",
947 + "select_asset": "संपत्ति का चयन करें",
948 "select_backup_file": "बैकअप फ़ाइल चुनें",
949 "select_buy_provider_notice": "ऊपर किसी खरीद प्रदाता का चयन करें। आप ऐप सेटिंग्स में अपना डिफ़ॉल्ट खरीद प्रदाता सेट करके इस स्क्रीन को छोड़ सकते हैं।",
950 "select_destination": "कृपया बैकअप फ़ाइल के लिए गंतव्य चुनें।",
951 + "select_fiat_currency_title": "मुद्रा चुनें",
952 "select_hw_account_below": "कृपया नीचे पुनर्स्थापित करने के लिए खाता चुनें:",
953 "select_manufacturer_title": "निर्माता चुनें",
954 "select_network": "नेटवर्क चुनें",
955 + "select_network_subtitle": "यह संपत्ति कई नेटवर्क में मौजूद है. जिसे आप उपयोग करना चाहते हैं उसे चुनें",
956 + "select_network_title": "नेटवर्क चुनें",
957 "select_other_wallet": "अन्य वॉलेट चुनें",
958 "select_receiver": "प्राप्तकर्ता चुनें",
959 "select_sell_provider_notice": "ऊपर किसी विक्रय प्रदाता का चयन करें। आप ऐप सेटिंग्स में अपना डिफ़ॉल्ट विक्रय प्रदाता सेट करके इस स्क्रीन को छोड़ सकते हैं।",
res/values/strings_hr.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Stvaranje novog novčanika",
278 "creating_new_wallet_error": "Greška: ${description}",
279 "creation_date": "Datum izrade",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Trenutna zamjena",
282 "current_wallet": "Trenutni novčanik",
283 "custom": "Prilagođeno",
@@ -450,14 +451,12 @@
451 "expires": "Ističe",
452 "expiresOn": "Istječe",
453 "expiry_and_validity": "Istek i valjanost",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Izvezi sigurnosnu kopiju",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Izvezi Lightning zapise",
457 "export_logs": "Izvezi zapise",
458 "export_outputs": "Izvoz izlaza",
459 "export_payjoin_logs": "Izvezi Payjoin zapise",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Produži sesiju",
461 "external": "Vanjski",
462 "external_wallet": "Vanjski novčanik",
@@ -494,6 +493,7 @@
493 "gas_price": "Cijena gasa",
494 "general": "Općenito",
495 "generate_name": "Generiraj naziv",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Generiranje poklon kartice",
498 "generating_transaction": "Generiranje transakcije",
499 "get_a": "Nabavite ",
@@ -736,6 +736,22 @@
736 "payments": "Plaćanja",
737 "pending": " (na čekanju)",
738 "percentageOf": "od ${amount}",
739 + "picker_chip_all": "Sve",
740 + "picker_no_matches": "Nema podudaranja",
741 + "picker_section_all_assets": "Sva sredstva (A-Z)",
742 + "picker_section_all_currencies": "Sve valute",
743 + "picker_section_crypto": "Kripto",
744 + "picker_section_cryptocurrencies": "Kriptovalute",
745 + "picker_section_gas_token": "Žeton za plin",
746 + "picker_section_more_cryptocurrencies": "Više kriptovaluta",
747 + "picker_section_popular": "Popularan",
748 + "picker_section_recents": "Nedavni",
749 + "picker_section_selected": "Odabrano",
750 + "picker_section_stablecoins": "Stablecoins",
751 + "picker_section_tokenized_stocks": "Tokenizirane dionice (xStocks)",
752 + "picker_section_tokens_standard": "Tokeni (${standard})",
753 + "picker_see_all": "Vidi sve",
754 + "picker_show_less": "Prikaži manje",
755 "pin_at_top": "Prikvači ${token} na vrh",
756 "pin_is_incorrect": "PIN je netočan",
757 "pin_number": "PIN broj",
@@ -926,12 +942,16 @@
942 "select_a_wallet": "Odaberite novčanik",
943 "select_address_to_copy": "Odaberite adresu za kopiranje",
944 "select_all": "Odaberi sve",
945 + "select_asset": "Odaberite sredstvo",
946 "select_backup_file": "Odaberite datoteku sigurnosne kopije",
947 "select_buy_provider_notice": "Odaberite gore pružatelja usluge kupnje. Ovaj zaslon možete preskočiti postavljanjem zadanog pružatelja usluge kupnje u postavkama aplikacije.",
948 "select_destination": "Molimo odaberite odredište za datoteku sigurnosne kopije.",
949 + "select_fiat_currency_title": "Odaberite Valutu",
950 "select_hw_account_below": "Molimo odaberite račun koji želite vratiti u nastavku:",
951 "select_manufacturer_title": "Odaberite proizvođača",
952 "select_network": "Odaberite mrežu",
953 + "select_network_subtitle": "Ovo sredstvo je prisutno u više mreža. Odaberite onu koju želite koristiti",
954 + "select_network_title": "Odaberite Mreža",
955 "select_other_wallet": "Odaberite drugi novčanik",
956 "select_receiver": "Odaberite primatelja",
957 "select_sell_provider_notice": "Odaberite pružatelja usluge prodaje iznad. Ovaj zaslon možete preskočiti tako da u postavkama aplikacije postavite zadanog pružatelja usluge prodaje.",
res/values/strings_hy.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Ստեղծվում է նոր դրամապանակ",
278 "creating_new_wallet_error": "Սխալ՝ ${description}",
279 "creation_date": "Ստեղծման ամսաթիվ",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Ընթացիկ փոխանակում",
282 "current_wallet": "Ընթացիկ դրամապանակ",
283 "custom": "Հատուկ",
@@ -450,14 +451,12 @@
451 "expires": "Լրանում է",
452 "expiresOn": "Լրանում է",
453 "expiry_and_validity": "Ժամկետ և վավերականություն",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Արտահանել պահուստային պատճենը",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Արտահանել Lightning-ի տեղեկամատյանները",
457 "export_logs": "Արտահանել տեղեկամատյանները",
458 "export_outputs": "Արտահանել ելքերը",
459 "export_payjoin_logs": "Արտահանել Payjoin-ի մատյանները",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Երկարացնել սեսիան",
461 "external": "Արտաքին",
462 "external_wallet": "Արտաքին դրամապանակ",
@@ -494,6 +493,7 @@
493 "gas_price": "Գազի գին",
494 "general": "Ընդհանուր",
495 "generate_name": "Ստեղծել անուն",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Նվեր քարտի ստեղծում",
498 "generating_transaction": "Գործարքի ստեղծում",
499 "get_a": "Ստանալ ",
@@ -735,6 +735,22 @@
735 "payments": "Վճարումներ",
736 "pending": " (սպասման մեջ)",
737 "percentageOf": "${amount}-ից",
738 + "picker_chip_all": "Բոլորը",
739 + "picker_no_matches": "Համընկնումներ չկան",
740 + "picker_section_all_assets": "Բոլոր ակտիվները (A-Z)",
741 + "picker_section_all_currencies": "Բոլոր արժույթները",
742 + "picker_section_crypto": "Կրիպտո",
743 + "picker_section_cryptocurrencies": "Կրիպտոարժույթներ",
744 + "picker_section_gas_token": "Գազի նշան",
745 + "picker_section_more_cryptocurrencies": "Ավելի շատ կրիպտոարժույթներ",
746 + "picker_section_popular": "Հանրաճանաչ",
747 + "picker_section_recents": "Վերջերս",
748 + "picker_section_selected": "Ընտրված է",
749 + "picker_section_stablecoins": "Stablecoins",
750 + "picker_section_tokenized_stocks": "Tokenized Stocks (xStocks)",
751 + "picker_section_tokens_standard": "Նշաններ (${standard})",
752 + "picker_see_all": "Տես բոլորը",
753 + "picker_show_less": "Ցույց տալ ավելի քիչ",
754 "pin_at_top": "${token}-ը ամրացնել վերևում",
755 "pin_is_incorrect": "PIN-ը սխալ է",
756 "pin_number": "PIN համար",
@@ -925,12 +941,16 @@
941 "select_a_wallet": "Ընտրեք դրամապանակը",
942 "select_address_to_copy": "Ընտրեք հասցեն՝ պատճենելու համար",
943 "select_all": "Ընտրել բոլորը",
944 + "select_asset": "Ընտրեք Ակտիվ",
945 "select_backup_file": "Ընտրել պահուստային ֆայլը",
946 "select_buy_provider_notice": "Վերևում ընտրեք գնման մատակարար։ Դուք կարող եք բաց թողնել այս էկրանը՝ հավելվածի կարգավորումներում սահմանելով ձեր լռելայն գնման մատակարարը։",
947 "select_destination": "Խնդրում ենք ընտրել պահուստային ֆայլի նպատակակետը։",
948 + "select_fiat_currency_title": "Ընտրեք արժույթ",
949 "select_hw_account_below": "Խնդրում ենք ներքևում ընտրել, թե որ հաշիվը վերականգնել․",
950 "select_manufacturer_title": "Ընտրեք արտադրողին",
951 "select_network": "Ընտրեք ցանցը",
952 + "select_network_subtitle": "Այս ակտիվը առկա է բազմաթիվ ցանցերում: Ընտրեք մեկը, որը ցանկանում եք օգտագործել",
953 + "select_network_title": "Ընտրեք Ցանց",
954 "select_other_wallet": "Ընտրեք այլ դրամապանակ",
955 "select_receiver": "Ընտրեք ստացողին",
956 "select_sell_provider_notice": "Վերևում ընտրեք վաճառքի մատակարար։ Դուք կարող եք բաց թողնել այս էկրանը՝ հավելվածի կարգավորումներում սահմանելով ձեր լռելայն վաճառքի մատակարարին։",
res/values/strings_id.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Membuat dompet baru",
278 "creating_new_wallet_error": "Kesalahan: ${description}",
279 "creation_date": "Tanggal Pembuatan",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Swap Saat Ini",
282 "current_wallet": "Dompet saat ini",
283 "custom": "Kustom",
@@ -450,14 +451,12 @@
451 "expires": "Kedaluwarsa",
452 "expiresOn": "Kedaluwarsa pada",
453 "expiry_and_validity": "Kedaluwarsa dan Validitas",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Ekspor cadangan",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Ekspor log Lightning",
457 "export_logs": "Ekspor log",
458 "export_outputs": "Ekspor keluaran",
459 "export_payjoin_logs": "Ekspor log Payjoin",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Perpanjang Sesi",
461 "external": "Eksternal",
462 "external_wallet": "Dompet eksternal",
@@ -494,6 +493,7 @@
493 "gas_price": "Harga gas",
494 "general": "Umum",
495 "generate_name": "Buat Nama",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Sedang Membuat Kartu Hadiah",
498 "generating_transaction": "Membuat transaksi",
499 "get_a": "Dapatkan ",
@@ -738,6 +738,22 @@
738 "payments": "Pembayaran",
739 "pending": " (tertunda)",
740 "percentageOf": "dari ${amount}",
741 + "picker_chip_all": "Semua",
742 + "picker_no_matches": "Tidak ada kecocokan",
743 + "picker_section_all_assets": "Semua Aset (A-Z)",
744 + "picker_section_all_currencies": "Semua Mata Uang",
745 + "picker_section_crypto": "kripto",
746 + "picker_section_cryptocurrencies": "Mata uang kripto",
747 + "picker_section_gas_token": "Token Gas",
748 + "picker_section_more_cryptocurrencies": "Lebih Banyak Cryptocurrency",
749 + "picker_section_popular": "Populer",
750 + "picker_section_recents": "Terbaru",
751 + "picker_section_selected": "Terpilih",
752 + "picker_section_stablecoins": "Stablecoin",
753 + "picker_section_tokenized_stocks": "Saham yang Diberi Token (xStocks)",
754 + "picker_section_tokens_standard": "Token (${standard})",
755 + "picker_see_all": "Lihat semuanya",
756 + "picker_show_less": "Tampilkan lebih sedikit",
757 "pin_at_top": "Sematkan ${token} di atas",
758 "pin_is_incorrect": "PIN tidak benar",
759 "pin_number": "Nomor PIN",
@@ -929,12 +945,16 @@
945 "select_a_wallet": "Pilih dompet",
946 "select_address_to_copy": "Pilih Alamat untuk Disalin",
947 "select_all": "Pilih semua",
948 + "select_asset": "Pilih Aset",
949 "select_backup_file": "Pilih file cadangan",
950 "select_buy_provider_notice": "Pilih penyedia beli di atas. Anda dapat melewati layar ini dengan mengatur penyedia beli default Anda di pengaturan aplikasi.",
951 "select_destination": "Silakan pilih lokasi tujuan untuk file cadangan.",
952 + "select_fiat_currency_title": "Pilih Mata Uang",
953 "select_hw_account_below": "Silakan pilih akun yang akan dipulihkan di bawah ini:",
954 "select_manufacturer_title": "Pilih Produsen",
955 "select_network": "Pilih Jaringan",
956 + "select_network_subtitle": "Aset ini ada di beberapa jaringan. Pilih salah satu yang ingin Anda gunakan",
957 + "select_network_title": "Pilih Jaringan",
958 "select_other_wallet": "Pilih Wallet lain",
959 "select_receiver": "Pilih Penerima",
960 "select_sell_provider_notice": "Pilih penyedia jual di atas. Anda dapat melewati layar ini dengan mengatur penyedia jual default Anda di pengaturan aplikasi.",
res/values/strings_it.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Creazione di un nuovo portafoglio",
278 "creating_new_wallet_error": "Errore: ${description}",
279 "creation_date": "Data di creazione",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Scambio in corso",
282 "current_wallet": "Portafoglio corrente",
283 "custom": "Personalizzato",
@@ -450,14 +451,12 @@
451 "expires": "Scade",
452 "expiresOn": "Scade il",
453 "expiry_and_validity": "Scadenza e validità",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Esporta backup",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Esporta i log di Lightning",
457 "export_logs": "Esporta registri",
458 "export_outputs": "Esporta output",
459 "export_payjoin_logs": "Esporta i log Payjoin",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Estendi la sessione",
461 "external": "Esterno",
462 "external_wallet": "Portafoglio esterno",
@@ -494,6 +493,7 @@
493 "gas_price": "Prezzo del gas",
494 "general": "Generale",
495 "generate_name": "Genera nome",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Generazione della carta regalo",
498 "generating_transaction": "Generazione della transazione",
499 "get_a": "Ottieni un ",
@@ -737,6 +737,22 @@
737 "payments": "Pagamenti",
738 "pending": " (in sospeso)",
739 "percentageOf": "di ${amount}",
740 + "picker_chip_all": "Tutto",
741 + "picker_no_matches": "Nessuna corrispondenza",
742 + "picker_section_all_assets": "Tutte le risorse (A-Z)",
743 + "picker_section_all_currencies": "Tutte le valute",
744 + "picker_section_crypto": "Criptovaluta",
745 + "picker_section_cryptocurrencies": "Criptovalute",
746 + "picker_section_gas_token": "Gettone del gas",
747 + "picker_section_more_cryptocurrencies": "Altre criptovalute",
748 + "picker_section_popular": "Popolare",
749 + "picker_section_recents": "Recenti",
750 + "picker_section_selected": "Selezionato",
751 + "picker_section_stablecoins": "Stablecoin",
752 + "picker_section_tokenized_stocks": "Azioni tokenizzate (xStocks)",
753 + "picker_section_tokens_standard": "Gettoni (${standard})",
754 + "picker_see_all": "Vedi tutto",
755 + "picker_show_less": "Mostra meno",
756 "pin_at_top": "Fissa ${token} in alto",
757 "pin_is_incorrect": "Il PIN non è corretto",
758 "pin_number": "Numero PIN",
@@ -926,12 +942,16 @@
942 "select_a_wallet": "Seleziona un wallet",
943 "select_address_to_copy": "Seleziona l'indirizzo da copiare",
944 "select_all": "Seleziona tutto",
945 + "select_asset": "Seleziona Risorsa",
946 "select_backup_file": "Seleziona il file di backup",
947 "select_buy_provider_notice": "Seleziona un provider di acquisto qui sopra. Puoi saltare questa schermata impostando il provider di acquisto predefinito nelle impostazioni dell'app.",
948 "select_destination": "Seleziona la destinazione per il file di backup.",
949 + "select_fiat_currency_title": "Seleziona Valuta",
950 "select_hw_account_below": "Seleziona l'account da ripristinare qui sotto:",
951 "select_manufacturer_title": "Seleziona produttore",
952 "select_network": "Seleziona rete",
953 + "select_network_subtitle": "Questa risorsa è presente in più reti. Seleziona quello che desideri utilizzare",
954 + "select_network_title": "Seleziona Rete",
955 "select_other_wallet": "Seleziona un altro Wallet",
956 "select_receiver": "Seleziona destinatario",
957 "select_sell_provider_notice": "Seleziona un provider di vendita qui sopra. Puoi saltare questa schermata impostando il provider di vendita predefinito nelle impostazioni dell'app.",
res/values/strings_ja.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "新しいウォレットを作成中",
278 "creating_new_wallet_error": "エラー: ${description}",
279 "creation_date": "作成日",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "現在のスワップ",
282 "current_wallet": "現在のウォレット",
283 "custom": "カスタム",
@@ -450,14 +451,12 @@
451 "expires": "有効期限",
452 "expiresOn": "有効期限",
453 "expiry_and_validity": "有効期限と有効性",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "バックアップをエクスポート",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Lightningログをエクスポート",
457 "export_logs": "ログをエクスポート",
458 "export_outputs": "アウトプットをエクスポート",
459 "export_payjoin_logs": "Payjoinログをエクスポート",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "セッションを延長",
461 "external": "外部",
462 "external_wallet": "外部ウォレット",
@@ -495,6 +494,7 @@
494 "general": "一般",
495 "generate_name": "名前を生成",
496 "generated_gift_card": "ギフトカードの生成",
497 + "generating_csv": "Generating CSV...",
498 "generating_gift_card": "ギフトカードを生成中",
499 "generating_transaction": "トランザクションを生成中",
500 "get_a": "入手する ",
@@ -737,6 +737,22 @@
737 "payments": "支払い",
738 "pending": " (保留中)",
739 "percentageOf": "${amount}の",
740 + "picker_chip_all": "全て",
741 + "picker_no_matches": "一致しません",
742 + "picker_section_all_assets": "すべてのアセット (A ~ Z)",
743 + "picker_section_all_currencies": "すべての通貨",
744 + "picker_section_crypto": "暗号",
745 + "picker_section_cryptocurrencies": "暗号通貨",
746 + "picker_section_gas_token": "ガストークン",
747 + "picker_section_more_cryptocurrencies": "より多くの暗号通貨",
748 + "picker_section_popular": "人気のある",
749 + "picker_section_recents": "最近",
750 + "picker_section_selected": "選択済み",
751 + "picker_section_stablecoins": "ステーブルコイン",
752 + "picker_section_tokenized_stocks": "トークン化された株式 (xStocks)",
753 + "picker_section_tokens_standard": "トークン (${standard})",
754 + "picker_see_all": "全て見る",
755 + "picker_show_less": "表示を少なくする",
756 "pin_at_top": "${token} を上部にピン留め",
757 "pin_is_incorrect": "PINが正しくありません",
758 "pin_number": "PIN番号",
@@ -926,12 +942,16 @@
942 "select_a_wallet": "ウォレットを選択",
943 "select_address_to_copy": "コピーするアドレスを選択",
944 "select_all": "すべて選択",
945 + "select_asset": "アセットの選択",
946 "select_backup_file": "バックアップファイルを選択",
947 "select_buy_provider_notice": "上の購入プロバイダーを選択してください。アプリ設定でデフォルトの購入プロバイダーを設定すると、この画面をスキップできます。",
948 "select_destination": "バックアップファイルの保存先を選択してください。",
949 + "select_fiat_currency_title": "通貨の選択",
950 "select_hw_account_below": "以下から復元するアカウントを選択してください:",
951 "select_manufacturer_title": "メーカーを選択",
952 "select_network": "ネットワークを選択",
953 + "select_network_subtitle": "この資産は複数のネットワークに存在します。使用したいものを選択してください",
954 + "select_network_title": "ネットワークの選択",
955 "select_other_wallet": "他のウォレットを選択",
956 "select_receiver": "受信者を選択",
957 "select_sell_provider_notice": "上記の売却プロバイダーを選択してください。アプリの設定でデフォルトの売却プロバイダーを設定すると、この画面をスキップできます。",
res/values/strings_ko.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "새 지갑 생성 중",
278 "creating_new_wallet_error": "오류: ${description}",
279 "creation_date": "생성일",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "현재 스왑",
282 "current_wallet": "현재 지갑",
283 "custom": "사용자 지정",
@@ -450,14 +451,12 @@
451 "expires": "만료됨",
452 "expiresOn": "만료일",
453 "expiry_and_validity": "만료 및 유효 기간",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "백업 내보내기",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Lightning 로그 내보내기",
457 "export_logs": "로그 내보내기",
458 "export_outputs": "출력 내보내기",
459 "export_payjoin_logs": "Payjoin 로그 내보내기",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "세션 연장",
461 "external": "외부",
462 "external_wallet": "외부 지갑",
@@ -494,6 +493,7 @@
493 "gas_price": "가스 가격",
494 "general": "일반",
495 "generate_name": "이름 생성",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "기프트 카드 생성 중",
498 "generating_transaction": "트랜잭션 생성 중",
499 "get_a": "받기 ",
@@ -737,6 +737,22 @@
737 "payments": "결제",
738 "pending": " (보류 중)",
739 "percentageOf": "${amount}의",
740 + "picker_chip_all": "모두",
741 + "picker_no_matches": "일치하는 항목 없음",
742 + "picker_section_all_assets": "모든 자산(A-Z)",
743 + "picker_section_all_currencies": "모든 통화",
744 + "picker_section_crypto": "암호화폐",
745 + "picker_section_cryptocurrencies": "암호화폐",
746 + "picker_section_gas_token": "가스 토큰",
747 + "picker_section_more_cryptocurrencies": "더 많은 암호화폐",
748 + "picker_section_popular": "인기 있는",
749 + "picker_section_recents": "최근",
750 + "picker_section_selected": "선택된",
751 + "picker_section_stablecoins": "스테이블코인",
752 + "picker_section_tokenized_stocks": "토큰화된 주식(xStocks)",
753 + "picker_section_tokens_standard": "토큰(${standard})",
754 + "picker_see_all": "모두 보기",
755 + "picker_show_less": "간략히 보기",
756 "pin_at_top": "${token}을(를) 상단에 고정",
757 "pin_is_incorrect": "PIN이 올바르지 않습니다",
758 "pin_number": "PIN 번호",
@@ -926,12 +942,16 @@
942 "select_a_wallet": "지갑 선택",
943 "select_address_to_copy": "복사할 주소를 선택하세요",
944 "select_all": "모두 선택",
945 + "select_asset": "자산 선택",
946 "select_backup_file": "백업 파일 선택",
947 "select_buy_provider_notice": "위에서 구매 제공업체를 선택하세요. 앱 설정에서 기본 구매 제공업체를 설정하면 이 화면을 건너뛸 수 있습니다.",
948 "select_destination": "백업 파일의 저장 위치를 선택해 주세요.",
949 + "select_fiat_currency_title": "통화 선택",
950 "select_hw_account_below": "아래에서 복구할 계정을 선택해 주세요:",
951 "select_manufacturer_title": "제조업체 선택",
952 "select_network": "네트워크 선택",
953 + "select_network_subtitle": "이 자산은 여러 네트워크에 존재합니다. 사용하고 싶은 것을 선택하세요",
954 + "select_network_title": "네트워크 선택",
955 "select_other_wallet": "다른 Wallet 선택",
956 "select_receiver": "수신자 선택",
957 "select_sell_provider_notice": "위에서 판매 제공업체를 선택하세요. 앱 설정에서 기본 판매 제공업체를 설정하면 이 화면을 건너뛸 수 있습니다.",
res/values/strings_my.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "ပိုက်ဆံအိတ်အသစ် ဖန်တီးနေသည်",
278 "creating_new_wallet_error": "အမှား: ${description}",
279 "creation_date": "ဖန်တီးသည့်နေ့စွဲ",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "လက်ရှိ Swap",
282 "current_wallet": "လက်ရှိ Wallet",
283 "custom": "စိတ်ကြိုက်",
@@ -450,14 +451,12 @@
451 "expires": "သက်တမ်းကုန်ဆုံးသည်",
452 "expiresOn": "သက်တမ်းကုန်ဆုံးမည့်ရက်",
453 "expiry_and_validity": "သက်တမ်းကုန်ဆုံးရက်နှင့် အကျုံးဝင်မှု",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "အရန်ကူးကို ထုတ်ယူရန်",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Lightning မှတ်တမ်းများကို ထုတ်ယူပါ",
457 "export_logs": "မှတ်တမ်းများကို ထုတ်ယူရန်",
458 "export_outputs": "Outputs များကို ထုတ်ယူရန်",
459 "export_payjoin_logs": "Payjoin မှတ်တမ်းများကို တင်ပို့ပါ",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "စက်ရှင် သက်တမ်းတိုးရန်",
461 "external": "ပြင်ပ",
462 "external_wallet": "ပြင်ပ Wallet",
@@ -494,6 +493,7 @@
493 "gas_price": "ဂတ်စ်စျေးနှုန်း",
494 "general": "အထွေထွေ",
495 "generate_name": "အမည်ထုတ်ပေးပါ",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "လက်ဆောင်ကတ် ထုတ်လုပ်နေသည်",
498 "generating_transaction": "ငွေလွှဲပြောင်းမှုကို ဖန်တီးနေသည်",
499 "get_a": "ရယူပါ ",
@@ -736,6 +736,22 @@
736 "payments": "ပေးချေမှုများ",
737 "pending": " (စောင့်ဆိုင်းဆဲ)",
738 "percentageOf": "${amount} ၏",
739 + "picker_chip_all": "အားလုံး",
740 + "picker_no_matches": "တိုက်ဆိုင်မှု မရှိပါ။",
741 + "picker_section_all_assets": "ပိုင်ဆိုင်မှုအားလုံး (A-Z)",
742 + "picker_section_all_currencies": "ငွေကြေးအားလုံး",
743 + "picker_section_crypto": "Crypto",
744 + "picker_section_cryptocurrencies": "Cryptocurrencies",
745 + "picker_section_gas_token": "ဓာတ်ငွေ့တိုကင်",
746 + "picker_section_more_cryptocurrencies": "နောက်ထပ် Cryptocurrencies",
747 + "picker_section_popular": "လူကြိုက်များသည်။",
748 + "picker_section_recents": "မကြာမှီ",
749 + "picker_section_selected": "ရွေးချယ်ခဲ့သည်။",
750 + "picker_section_stablecoins": "Stablecoins",
751 + "picker_section_tokenized_stocks": "Tokenized Stocks (xStocks)",
752 + "picker_section_tokens_standard": "တိုကင်များ (${standard})",
753 + "picker_see_all": "အားလုံးကြည့်",
754 + "picker_show_less": "လျှော့ပြပါ။",
755 "pin_at_top": "${token} ကို အပေါ်ဆုံးတွင် ပင်ထိုးပါ",
756 "pin_is_incorrect": "PIN မမှန်ပါ။",
757 "pin_number": "PIN နံပါတ်",
@@ -925,12 +941,16 @@
941 "select_a_wallet": "ပိုက်ဆံအိတ်ကို ရွေးပါ",
942 "select_address_to_copy": "ကူးယူရန် လိပ်စာကို ရွေးချယ်ပါ",
943 "select_all": "အားလုံးကို ရွေးချယ်ပါ",
944 + "select_asset": "ပိုင်ဆိုင်မှုကို ရွေးပါ။",
945 "select_backup_file": "အရန်ကူးဖိုင်ကို ရွေးပါ",
946 "select_buy_provider_notice": "အပေါ်တွင်ရှိသော ဝယ်ယူမှု ပံ့ပိုးသူကို ရွေးချယ်ပါ။ App settings တွင် သင့်မူလ ဝယ်ယူမှု ပံ့ပိုးသူကို သတ်မှတ်ထားခြင်းဖြင့် ဤစခရင်ကို ကျော်သွားနိုင်သည်။",
947 "select_destination": "အရန်ကူးဖိုင်အတွက် သိမ်းဆည်းမည့်နေရာကို ရွေးချယ်ပါ။",
948 + "select_fiat_currency_title": "ငွေကြေးကို ရွေးပါ။",
949 "select_hw_account_below": "အောက်တွင် ပြန်လည်ရယူရန် မည်သည့်အကောင့်ကို ရွေးချယ်မည်ကို ကျေးဇူးပြု၍ ရွေးပါ။",
950 "select_manufacturer_title": "ထုတ်လုပ်သူကို ရွေးချယ်ပါ",
951 "select_network": "ကွန်ရက်ကို ရွေးချယ်ပါ",
952 + "select_network_subtitle": "ဤပိုင်ဆိုင်မှုသည် ကွန်ရက်များစွာတွင် ရှိနေသည်။ သင်အသုံးပြုလိုသောတစ်ခုကို ရွေးပါ။",
953 + "select_network_title": "Network ကို ရွေးပါ။",
954 "select_other_wallet": "အခြား Wallet ကို ရွေးချယ်ပါ",
955 "select_receiver": "လက်ခံသူကို ရွေးချယ်ပါ",
956 "select_sell_provider_notice": "အထက်တွင်ရှိသော အရောင်းဝန်ဆောင်မှုပေးသူကို ရွေးပါ။ အက်ပ်ဆက်တင်များတွင် သင်၏ မူလ အရောင်းဝန်ဆောင်မှုပေးသူကို သတ်မှတ်ထားခြင်းဖြင့် ဤစခရင်ကို ကျော်နိုင်သည်။",
res/values/strings_nl.arb
+22 -2
@@ -275,6 +275,7 @@
275 "creating_new_wallet": "Nieuwe wallet aanmaken",
276 "creating_new_wallet_error": "Fout: ${description}",
277 "creation_date": "Aanmaakdatum",
278 + "csv_nothing_to_export": "Nothing to export",
279 "current_swap": "Huidige swap",
280 "current_wallet": "Huidige wallet",
281 "custom": "Aangepast",
@@ -448,14 +449,12 @@
449 "expires": "Verloopt",
450 "expiresOn": "Verloopt op",
451 "expiry_and_validity": "Vervaldatum en geldigheid",
451 - "csv_nothing_to_export": "Nothing to export",
452 "export_backup": "Back-up exporteren",
453 "export_csv": "Export CSV",
454 "export_lightning_logs": "Lightning-logboeken exporteren",
455 "export_logs": "Exporteer logboeken",
456 "export_outputs": "Outputs exporteren",
457 "export_payjoin_logs": "Payjoin-logboeken exporteren",
458 - "generating_csv": "Generating CSV...",
458 "extend_session": "Sessie verlengen",
459 "external": "Extern",
460 "external_wallet": "Externe wallet",
@@ -492,6 +491,7 @@
491 "gas_price": "Gasprijs",
492 "general": "Algemeen",
493 "generate_name": "Naam genereren",
494 + "generating_csv": "Generating CSV...",
495 "generating_gift_card": "Cadeaubon genereren",
496 "generating_transaction": "Transactie genereren",
497 "get_a": "Krijg een ",
@@ -733,6 +733,22 @@
733 "payments": "Betalingen",
734 "pending": " (in behandeling)",
735 "percentageOf": "van ${amount}",
736 + "picker_chip_all": "Alle",
737 + "picker_no_matches": "Geen overeenkomsten",
738 + "picker_section_all_assets": "Alle activa (A-Z)",
739 + "picker_section_all_currencies": "Alle valuta's",
740 + "picker_section_crypto": "Crypto",
741 + "picker_section_cryptocurrencies": "Cryptocurrencies",
742 + "picker_section_gas_token": "Gas-token",
743 + "picker_section_more_cryptocurrencies": "Meer cryptocurrencies",
744 + "picker_section_popular": "Populair",
745 + "picker_section_recents": "Recent",
746 + "picker_section_selected": "Gekozen",
747 + "picker_section_stablecoins": "Stabiele munten",
748 + "picker_section_tokenized_stocks": "Tokenized aandelen (xStocks)",
749 + "picker_section_tokens_standard": "Tokens (${standard})",
750 + "picker_see_all": "Bekijk alles",
751 + "picker_show_less": "Laat minder zien",
752 "pin_at_top": "Zet ${token} bovenaan vast",
753 "pin_is_incorrect": "PIN is onjuist",
754 "pin_number": "PIN-nummer",
@@ -922,12 +938,16 @@
938 "select_a_wallet": "Selecteer een wallet",
939 "select_address_to_copy": "Selecteer adres om te kopiëren",
940 "select_all": "Alles selecteren",
941 + "select_asset": "Selecteer Activa",
942 "select_backup_file": "Selecteer een back-upbestand",
943 "select_buy_provider_notice": "Selecteer hierboven een koopprovider. Je kunt dit scherm overslaan door je standaard koopprovider in te stellen in app-instellingen.",
944 "select_destination": "Selecteer de bestemming voor het back-upbestand.",
945 + "select_fiat_currency_title": "Selecteer Valuta",
946 "select_hw_account_below": "Selecteer hieronder welk account je wilt herstellen:",
947 "select_manufacturer_title": "Selecteer fabrikant",
948 "select_network": "Selecteer Netwerk",
949 + "select_network_subtitle": "Deze asset is aanwezig in meerdere netwerken. Selecteer degene die u wilt gebruiken",
950 + "select_network_title": "Selecteer Netwerk",
951 "select_other_wallet": "Selecteer een andere wallet",
952 "select_receiver": "Selecteer ontvanger",
953 "select_sell_provider_notice": "Selecteer hierboven een verkoopaanbieder. Je kunt dit scherm overslaan door je standaardverkoopprovider in te stellen in de app-instellingen.",
res/values/strings_pl.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Tworzenie nowego portfela",
278 "creating_new_wallet_error": "Błąd: ${description}",
279 "creation_date": "Data utworzenia",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Bieżący swap",
282 "current_wallet": "Bieżący portfel",
283 "custom": "Niestandardowy",
@@ -449,14 +450,12 @@
450 "expires": "Wygasa",
451 "expiresOn": "Wygasa",
452 "expiry_and_validity": "Termin ważności i ważność",
452 - "csv_nothing_to_export": "Nothing to export",
453 "export_backup": "Eksportuj kopię zapasową",
454 "export_csv": "Export CSV",
455 "export_lightning_logs": "Eksportuj logi Lightning",
456 "export_logs": "Eksportuj logi",
457 "export_outputs": "Eksportuj wyjścia",
458 "export_payjoin_logs": "Eksportuj logi Payjoin",
459 - "generating_csv": "Generating CSV...",
459 "extend_session": "Przedłuż sesję",
460 "external": "Zewnętrzny",
461 "external_wallet": "Zewnętrzny portfel",
@@ -493,6 +492,7 @@
492 "gas_price": "Cena gas",
493 "general": "Ogólne",
494 "generate_name": "Wygeneruj nazwę",
495 + "generating_csv": "Generating CSV...",
496 "generating_gift_card": "Generowanie karty podarunkowej",
497 "generating_transaction": "Generowanie transakcji",
498 "get_a": "Uzyskaj ",
@@ -735,6 +735,22 @@
735 "payments": "Płatności",
736 "pending": " (w toku)",
737 "percentageOf": "z ${amount}",
738 + "picker_chip_all": "Wszystko",
739 + "picker_no_matches": "Brak dopasowań",
740 + "picker_section_all_assets": "Wszystkie zasoby (A-Z)",
741 + "picker_section_all_currencies": "Wszystkie waluty",
742 + "picker_section_crypto": "Krypto",
743 + "picker_section_cryptocurrencies": "Kryptowaluty",
744 + "picker_section_gas_token": "Żeton gazu",
745 + "picker_section_more_cryptocurrencies": "Więcej kryptowalut",
746 + "picker_section_popular": "Popularny",
747 + "picker_section_recents": "Najnowsze",
748 + "picker_section_selected": "Wybrany",
749 + "picker_section_stablecoins": "Stablecoiny",
750 + "picker_section_tokenized_stocks": "Tokenizowane akcje (xStocks)",
751 + "picker_section_tokens_standard": "Tokeny (${standard})",
752 + "picker_see_all": "Zobacz wszystko",
753 + "picker_show_less": "Pokaż mniej",
754 "pin_at_top": "Przypnij ${token} na górze",
755 "pin_is_incorrect": "PIN jest nieprawidłowy",
756 "pin_number": "Numer PIN",
@@ -924,12 +940,16 @@
940 "select_a_wallet": "Wybierz portfel",
941 "select_address_to_copy": "Wybierz adres do skopiowania",
942 "select_all": "Zaznacz wszystko",
943 + "select_asset": "Wybierz Zasób",
944 "select_backup_file": "Wybierz plik kopii zapasowej",
945 "select_buy_provider_notice": "Wybierz powyżej dostawcę zakupu. Możesz pominąć ten ekran, ustawiając domyślnego dostawcę zakupu w ustawieniach aplikacji.",
946 "select_destination": "Wybierz miejsce docelowe dla pliku kopii zapasowej.",
947 + "select_fiat_currency_title": "Wybierz Waluta",
948 "select_hw_account_below": "Wybierz poniżej konto do przywrócenia:",
949 "select_manufacturer_title": "Wybierz producenta",
950 "select_network": "Wybierz sieć",
951 + "select_network_subtitle": "Ten zasób jest obecny w wielu sieciach. Wybierz ten, którego chcesz użyć",
952 + "select_network_title": "Wybierz opcję Sieć",
953 "select_other_wallet": "Wybierz inny portfel",
954 "select_receiver": "Wybierz odbiorcę",
955 "select_sell_provider_notice": "Wybierz powyżej dostawcę sprzedaży. Możesz pominąć ten ekran, ustawiając domyślnego dostawcę sprzedaży w ustawieniach aplikacji.",
res/values/strings_pt.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Criando nova carteira",
278 "creating_new_wallet_error": "Erro: ${description}",
279 "creation_date": "Data de criação",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Troca atual",
282 "current_wallet": "Carteira atual",
283 "custom": "Personalizado",
@@ -450,14 +451,12 @@
451 "expires": "Expira",
452 "expiresOn": "Expira em",
453 "expiry_and_validity": "Expiração e validade",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Exportar backup",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Exportar logs do Lightning",
457 "export_logs": "Exportar logs",
458 "export_outputs": "Exportar saídas",
459 "export_payjoin_logs": "Exportar logs do Payjoin",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Estender sessão",
461 "external": "Externo",
462 "external_wallet": "Carteira externa",
@@ -494,6 +493,7 @@
493 "gas_price": "Preço do gas",
494 "general": "Geral",
495 "generate_name": "Gerar Nome",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Gerando cartão-presente",
498 "generating_transaction": "Gerando transação",
499 "get_a": "Obter um ",
@@ -738,6 +738,22 @@
738 "payments": "Pagamentos",
739 "pending": " (pendente)",
740 "percentageOf": "de ${amount}",
741 + "picker_chip_all": "Todos",
742 + "picker_no_matches": "Nenhuma correspondência",
743 + "picker_section_all_assets": "Todos os ativos (A-Z)",
744 + "picker_section_all_currencies": "Todas as moedas",
745 + "picker_section_crypto": "Criptografia",
746 + "picker_section_cryptocurrencies": "Criptomoedas",
747 + "picker_section_gas_token": "Token de Gás",
748 + "picker_section_more_cryptocurrencies": "Mais criptomoedas",
749 + "picker_section_popular": "Popular",
750 + "picker_section_recents": "Recentes",
751 + "picker_section_selected": "Selecionado",
752 + "picker_section_stablecoins": "Moedas estáveis",
753 + "picker_section_tokenized_stocks": "Ações tokenizadas (xStocks)",
754 + "picker_section_tokens_standard": "Tokens (${standard})",
755 + "picker_see_all": "Ver tudo",
756 + "picker_show_less": "Mostrar menos",
757 "pin_at_top": "Fixar ${token} no topo",
758 "pin_is_incorrect": "O PIN está incorreto",
759 "pin_number": "Número do PIN",
@@ -927,12 +943,16 @@
943 "select_a_wallet": "Selecione uma carteira",
944 "select_address_to_copy": "Selecione o endereço para copiar",
945 "select_all": "Selecionar tudo",
946 + "select_asset": "Selecione Ativo",
947 "select_backup_file": "Selecionar arquivo de backup",
948 "select_buy_provider_notice": "Selecione um provedor de compra acima. Você pode pular esta tela definindo seu provedor de compra padrão nas configurações do app.",
949 "select_destination": "Selecione o destino para o arquivo de backup.",
950 + "select_fiat_currency_title": "Selecione a moeda",
951 "select_hw_account_below": "Selecione abaixo qual conta restaurar:",
952 "select_manufacturer_title": "Selecionar fabricante",
953 "select_network": "Selecionar rede",
954 + "select_network_subtitle": "Este ativo está presente em múltiplas redes. Selecione aquele que você deseja usar",
955 + "select_network_title": "Selecione Rede",
956 "select_other_wallet": "Selecionar outra carteira",
957 "select_receiver": "Selecionar destinatário",
958 "select_sell_provider_notice": "Selecione um provedor de venda acima. Você pode pular esta tela definindo seu provedor de venda padrão nas configurações do aplicativo.",
res/values/strings_pt_BR.arb
+5
@@ -732,6 +732,11 @@
732 "payments": "Pagamentos",
733 "pending": " (pendente)",
734 "percentageOf": "de ${amount}",
735 + "picker_section_crypto": "Cripto",
736 + "picker_section_more_cryptocurrencies": "Mais criptomoedas",
737 + "picker_section_tokens_standard": "Tokens (${standard})",
738 + "picker_see_all": "Ver tudo",
739 + "picker_show_less": "Mostrar menos",
740 "pin_at_top": "Fixar ${token} no topo",
741 "pin_is_incorrect": "O PIN está incorreto",
742 "pin_number": "Número do PIN",
res/values/strings_ru.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Создание нового кошелька",
278 "creating_new_wallet_error": "Ошибка: ${description}",
279 "creation_date": "Дата создания",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Текущий обмен",
282 "current_wallet": "Текущий кошелёк",
283 "custom": "Пользовательский",
@@ -450,14 +451,12 @@
451 "expires": "Истекает",
452 "expiresOn": "Истекает",
453 "expiry_and_validity": "Срок действия и действительность",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Экспорт резервной копии",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Экспорт логов Lightning",
457 "export_logs": "Экспорт журналов",
458 "export_outputs": "Экспорт выходов",
459 "export_payjoin_logs": "Экспорт журналов Payjoin",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Продлить сессию",
461 "external": "Внешний",
462 "external_wallet": "Внешний кошелёк",
@@ -494,6 +493,7 @@
493 "gas_price": "Цена газа",
494 "general": "Общие",
495 "generate_name": "Сгенерировать имя",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Создание подарочной карты",
498 "generating_transaction": "Генерация транзакции",
499 "get_a": "Получить ",
@@ -737,6 +737,22 @@
737 "payments": "Платежи",
738 "pending": " (в ожидании)",
739 "percentageOf": "из ${amount}",
740 + "picker_chip_all": "Все",
741 + "picker_no_matches": "Нет совпадений",
742 + "picker_section_all_assets": "Все активы (А-Я)",
743 + "picker_section_all_currencies": "Все валюты",
744 + "picker_section_crypto": "Крипто",
745 + "picker_section_cryptocurrencies": "Криптовалюты",
746 + "picker_section_gas_token": "Газовый токен",
747 + "picker_section_more_cryptocurrencies": "Больше криптовалют",
748 + "picker_section_popular": "Популярный",
749 + "picker_section_recents": "Недавние",
750 + "picker_section_selected": "Выбрано",
751 + "picker_section_stablecoins": "Стейблкоины",
752 + "picker_section_tokenized_stocks": "Токенизированные акции (xStocks)",
753 + "picker_section_tokens_standard": "Токены (${standard})",
754 + "picker_see_all": "Посмотреть все",
755 + "picker_show_less": "Показать меньше",
756 "pin_at_top": "Закрепить ${token} сверху",
757 "pin_is_incorrect": "PIN неверный",
758 "pin_number": "PIN-код",
@@ -926,12 +942,16 @@
942 "select_a_wallet": "Выберите кошелёк",
943 "select_address_to_copy": "Выберите адрес для копирования",
944 "select_all": "Выбрать все",
945 + "select_asset": "Выберите актив",
946 "select_backup_file": "Выберите файл резервной копии",
947 "select_buy_provider_notice": "Выберите выше провайдера для покупки. Вы можете пропустить этот экран, установив провайдера покупки по умолчанию в настройках приложения.",
948 "select_destination": "Пожалуйста, выберите место назначения для файла резервной копии.",
949 + "select_fiat_currency_title": "Выберите валюту",
950 "select_hw_account_below": "Пожалуйста, выберите ниже, какую учетную запись восстановить:",
951 "select_manufacturer_title": "Выберите производителя",
952 "select_network": "Выберите сеть",
953 + "select_network_subtitle": "Этот актив присутствует в нескольких сетях. Выберите тот, который вы хотите использовать",
954 + "select_network_title": "Выберите сеть",
955 "select_other_wallet": "Выбрать другой кошелек",
956 "select_receiver": "Выберите получателя",
957 "select_sell_provider_notice": "Выберите провайдера для продажи выше. Вы можете пропустить этот экран, установив провайдера для продажи по умолчанию в настройках приложения.",
res/values/strings_th.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "กำลังสร้างกระเป๋าเงินใหม่",
278 "creating_new_wallet_error": "ข้อผิดพลาด: ${description}",
279 "creation_date": "วันที่สร้าง",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "การสวอปปัจจุบัน",
282 "current_wallet": "กระเป๋าเงินปัจจุบัน",
283 "custom": "กำหนดเอง",
@@ -450,14 +451,12 @@
451 "expires": "หมดอายุ",
452 "expiresOn": "หมดอายุวันที่",
453 "expiry_and_validity": "วันหมดอายุและระยะเวลาที่มีผล",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "ส่งออกข้อมูลสำรอง",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "ส่งออกล็อก Lightning",
457 "export_logs": "ส่งออกบันทึก",
458 "export_outputs": "ส่งออกเอาต์พุต",
459 "export_payjoin_logs": "ส่งออกล็อก Payjoin",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "ขยายเซสชัน",
461 "external": "ภายนอก",
462 "external_wallet": "กระเป๋าเงินภายนอก",
@@ -494,6 +493,7 @@
493 "gas_price": "ราคา Gas",
494 "general": "ทั่วไป",
495 "generate_name": "สร้างชื่อ",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "กำลังสร้างบัตรของขวัญ",
498 "generating_transaction": "กำลังสร้างธุรกรรม",
499 "get_a": "รับ ",
@@ -736,6 +736,22 @@
736 "payments": "การชำระเงิน",
737 "pending": " (รอดำเนินการ)",
738 "percentageOf": "จาก ${amount}",
739 + "picker_chip_all": "ทั้งหมด",
740 + "picker_no_matches": "ไม่มีการแข่งขัน",
741 + "picker_section_all_assets": "ทรัพย์สินทั้งหมด (A-Z)",
742 + "picker_section_all_currencies": "สกุลเงินทั้งหมด",
743 + "picker_section_crypto": "การเข้ารหัสลับ",
744 + "picker_section_cryptocurrencies": "สกุลเงินดิจิทัล",
745 + "picker_section_gas_token": "โทเค็นแก๊ส",
746 + "picker_section_more_cryptocurrencies": "Cryptocurrencies เพิ่มเติม",
747 + "picker_section_popular": "เป็นที่นิยม",
748 + "picker_section_recents": "ล่าสุด",
749 + "picker_section_selected": "เลือกแล้ว",
750 + "picker_section_stablecoins": "Stablecoins",
751 + "picker_section_tokenized_stocks": "หุ้นโทเค็น (xStocks)",
752 + "picker_section_tokens_standard": "โทเค็น (${standard})",
753 + "picker_see_all": "ดูทั้งหมด",
754 + "picker_show_less": "แสดงน้อยลง",
755 "pin_at_top": "ปักหมุด ${token} ไว้ด้านบน",
756 "pin_is_incorrect": "PIN ไม่ถูกต้อง",
757 "pin_number": "หมายเลข PIN",
@@ -925,12 +941,16 @@
941 "select_a_wallet": "เลือกวอลเล็ต",
942 "select_address_to_copy": "เลือกที่อยู่เพื่อคัดลอก",
943 "select_all": "เลือกทั้งหมด",
944 + "select_asset": "เลือกสินทรัพย์",
945 "select_backup_file": "เลือกไฟล์สำรองข้อมูล",
946 "select_buy_provider_notice": "เลือกผู้ให้บริการซื้อด้านบน คุณสามารถข้ามหน้าจอนี้ได้โดยตั้งค่าผู้ให้บริการซื้อเริ่มต้นในการตั้งค่าแอป",
947 "select_destination": "โปรดเลือกปลายทางสำหรับไฟล์สำรองข้อมูล",
948 + "select_fiat_currency_title": "เลือกสกุลเงิน",
949 "select_hw_account_below": "โปรดเลือกบัญชีที่จะกู้คืนด้านล่าง:",
950 "select_manufacturer_title": "เลือกผู้ผลิต",
951 "select_network": "เลือกเครือข่าย",
952 + "select_network_subtitle": "เนื้อหานี้มีอยู่ในหลายเครือข่าย เลือกอันที่คุณต้องการใช้",
953 + "select_network_title": "เลือกเครือข่าย",
954 "select_other_wallet": "เลือก Wallet อื่น",
955 "select_receiver": "เลือกผู้รับ",
956 "select_sell_provider_notice": "เลือกผู้ให้บริการขายด้านบน คุณสามารถข้ามหน้าจอนี้ได้โดยตั้งค่าผู้ให้บริการขายเริ่มต้นในการตั้งค่าแอป",
res/values/strings_tl.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Gumagawa ng bagong wallet",
278 "creating_new_wallet_error": "Error: ${description}",
279 "creation_date": "Petsa ng Paglikha",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Kasalukuyang Swap",
282 "current_wallet": "Kasalukuyang wallet",
283 "custom": "Pasadya",
@@ -450,14 +451,12 @@
451 "expires": "Mag-e-expire",
452 "expiresOn": "Mag-e-expire sa",
453 "expiry_and_validity": "Pag-expire at Pagiging Balido",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "I-export ang backup",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "I-export ang mga log ng Lightning",
457 "export_logs": "I-export ang mga log",
458 "export_outputs": "I-export ang mga output",
459 "export_payjoin_logs": "I-export ang mga Payjoin log",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Palawigin ang session",
461 "external": "Panlabas",
462 "external_wallet": "Panlabas na wallet",
@@ -494,6 +493,7 @@
493 "gas_price": "Presyo ng gas",
494 "general": "Pangkalahatan",
495 "generate_name": "Bumuo ng Pangalan",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Ginagawa ang Gift Card",
498 "generating_transaction": "Ginagawa ang transaksyon",
499 "get_a": "Kumuha ng ",
@@ -736,6 +736,22 @@
736 "payments": "Mga Pagbabayad",
737 "pending": " (nakabinbin)",
738 "percentageOf": "ng ${amount}",
739 + "picker_chip_all": "Lahat",
740 + "picker_no_matches": "Walang tugma",
741 + "picker_section_all_assets": "Lahat ng Asset (A-Z)",
742 + "picker_section_all_currencies": "Lahat ng Pera",
743 + "picker_section_crypto": "Crypto",
744 + "picker_section_cryptocurrencies": "Cryptocurrencies",
745 + "picker_section_gas_token": "Gas Token",
746 + "picker_section_more_cryptocurrencies": "Higit pang Cryptocurrencies",
747 + "picker_section_popular": "Sikat",
748 + "picker_section_recents": "Recents",
749 + "picker_section_selected": "Napili",
750 + "picker_section_stablecoins": "Mga Stablecoin",
751 + "picker_section_tokenized_stocks": "Mga Tokenized na Stock (xStocks)",
752 + "picker_section_tokens_standard": "Mga Token (${standard})",
753 + "picker_see_all": "Tingnan lahat",
754 + "picker_show_less": "Magpakita ng mas kaunti",
755 "pin_at_top": "I-pin ang ${token} sa itaas",
756 "pin_is_incorrect": "Mali ang PIN",
757 "pin_number": "Numero ng PIN",
@@ -925,12 +941,16 @@
941 "select_a_wallet": "Pumili ng wallet",
942 "select_address_to_copy": "Piliin ang Address na Kokopyahin",
943 "select_all": "Piliin lahat",
944 + "select_asset": "Piliin ang Asset",
945 "select_backup_file": "Piliin ang backup file",
946 "select_buy_provider_notice": "Pumili ng provider para bumili sa itaas. Maaari mong laktawan ang screen na ito sa pamamagitan ng pagtatakda ng iyong default na provider para bumili sa mga setting ng app.",
947 "select_destination": "Mangyaring piliin ang patutunguhan ng backup file.",
948 + "select_fiat_currency_title": "Piliin ang Pera",
949 "select_hw_account_below": "Mangyaring piliin sa ibaba kung aling account ang ire-restore:",
950 "select_manufacturer_title": "Piliin ang Manufacturer",
951 "select_network": "Pumili ng Network",
952 + "select_network_subtitle": "Ang asset na ito ay nasa maraming network. Piliin ang gusto mong gamitin",
953 + "select_network_title": "Piliin ang Network",
954 "select_other_wallet": "Pumili ng iba pang Wallet",
955 "select_receiver": "Piliin ang Tatanggap",
956 "select_sell_provider_notice": "Pumili ng sell provider sa itaas. Maaari mong laktawan ang screen na ito sa pamamagitan ng pagtatakda ng iyong default na sell provider sa mga setting ng app.",
res/values/strings_tr.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Yeni cüzdan oluşturuluyor",
278 "creating_new_wallet_error": "Hata: ${description}",
279 "creation_date": "Oluşturulma Tarihi",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Mevcut Takas",
282 "current_wallet": "Geçerli cüzdan",
283 "custom": "Özel",
@@ -450,14 +451,12 @@
451 "expires": "Sona erme tarihi",
452 "expiresOn": "Şu tarihte sona erer",
453 "expiry_and_validity": "Son Kullanma ve Geçerlilik",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Yedeklemeyi dışa aktar",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Lightning günlüklerini dışa aktar",
457 "export_logs": "Günlükleri dışa aktar",
458 "export_outputs": "Çıktıları dışa aktar",
459 "export_payjoin_logs": "Payjoin günlüklerini dışa aktar",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Oturumu Uzat",
461 "external": "Harici",
462 "external_wallet": "Harici cüzdan",
@@ -494,6 +493,7 @@
493 "gas_price": "Gas ücreti",
494 "general": "Genel",
495 "generate_name": "Ad Oluştur",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Hediye Kartı Oluşturuluyor",
498 "generating_transaction": "İşlem oluşturuluyor",
499 "get_a": "Bir ",
@@ -736,6 +736,22 @@
736 "payments": "Ödemeler",
737 "pending": " (beklemede)",
738 "percentageOf": "${amount} tutarının",
739 + "picker_chip_all": "Tüm",
740 + "picker_no_matches": "Eşleşme yok",
741 + "picker_section_all_assets": "Tüm Varlıklar (A'dan Z'ye)",
742 + "picker_section_all_currencies": "Tüm Para Birimleri",
743 + "picker_section_crypto": "Kripto",
744 + "picker_section_cryptocurrencies": "Kripto para birimleri",
745 + "picker_section_gas_token": "Gaz Jetonu",
746 + "picker_section_more_cryptocurrencies": "Daha Fazla Kripto Para Birimi",
747 + "picker_section_popular": "Popüler",
748 + "picker_section_recents": "Son Kullanılanlar",
749 + "picker_section_selected": "Seçildi",
750 + "picker_section_stablecoins": "Stablecoin'ler",
751 + "picker_section_tokenized_stocks": "Tokenleştirilmiş Hisse Senetleri (xStocks)",
752 + "picker_section_tokens_standard": "Jetonlar (${standard})",
753 + "picker_see_all": "Tümünü gör",
754 + "picker_show_less": "Daha az göster",
755 "pin_at_top": "${token}'ı üste sabitle",
756 "pin_is_incorrect": "PIN yanlış",
757 "pin_number": "PIN numarası",
@@ -925,12 +941,16 @@
941 "select_a_wallet": "Bir cüzdan seçin",
942 "select_address_to_copy": "Kopyalanacak Adresi Seçin",
943 "select_all": "Tümünü seç",
944 + "select_asset": "Varlık Seç",
945 "select_backup_file": "Yedekleme dosyasını seç",
946 "select_buy_provider_notice": "Yukarıdan bir satın alma sağlayıcısı seçin. Uygulama ayarlarında varsayılan satın alma sağlayıcınızı belirleyerek bu ekranı atlayabilirsiniz.",
947 "select_destination": "Lütfen yedekleme dosyası için bir hedef seçin.",
948 + "select_fiat_currency_title": "Para Birimi Seçin",
949 "select_hw_account_below": "Lütfen aşağıdan geri yüklenecek hesabı seçin:",
950 "select_manufacturer_title": "Üretici Seçin",
951 "select_network": "Ağ Seç",
952 + "select_network_subtitle": "Bu varlık birden fazla ağda mevcut. Kullanmak istediğinizi seçin",
953 + "select_network_title": "Ağ Seçin",
954 "select_other_wallet": "Başka bir Cüzdan seçin",
955 "select_receiver": "Alıcı Seçin",
956 "select_sell_provider_notice": "Yukarıdan bir satış sağlayıcısı seçin. Uygulama ayarlarında varsayılan satış sağlayıcınızı belirleyerek bu ekranı atlayabilirsiniz.",
res/values/strings_uk.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Створення нового гаманця",
278 "creating_new_wallet_error": "Помилка: ${description}",
279 "creation_date": "Дата створення",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Поточний своп",
282 "current_wallet": "Поточний гаманець",
283 "custom": "Власний",
@@ -450,14 +451,12 @@
451 "expires": "Термін дії закінчується",
452 "expiresOn": "Дійсний до",
453 "expiry_and_validity": "Термін дії та чинність",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "Експортувати резервну копію",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "Експортувати логи Lightning",
457 "export_logs": "Експорт журналів",
458 "export_outputs": "Експорт виходів",
459 "export_payjoin_logs": "Експорт журналів Payjoin",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "Подовжити сеанс",
461 "external": "Зовнішній",
462 "external_wallet": "Зовнішній гаманець",
@@ -494,6 +493,7 @@
493 "gas_price": "Ціна газу",
494 "general": "Загальні",
495 "generate_name": "Згенерувати ім’я",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "Генерація подарункової картки",
498 "generating_transaction": "Створення транзакції",
499 "get_a": "Отримати ",
@@ -736,6 +736,22 @@
736 "payments": "Платежі",
737 "pending": " (в очікуванні)",
738 "percentageOf": "з ${amount}",
739 + "picker_chip_all": "все",
740 + "picker_no_matches": "Немає збігів",
741 + "picker_section_all_assets": "Усі активи (A-Z)",
742 + "picker_section_all_currencies": "Усі валюти",
743 + "picker_section_crypto": "Крипто",
744 + "picker_section_cryptocurrencies": "Криптовалюти",
745 + "picker_section_gas_token": "Газ Токен",
746 + "picker_section_more_cryptocurrencies": "Більше криптовалют",
747 + "picker_section_popular": "Популярний",
748 + "picker_section_recents": "Останні",
749 + "picker_section_selected": "Вибране",
750 + "picker_section_stablecoins": "Стайблкойни",
751 + "picker_section_tokenized_stocks": "Токенізовані акції (xStocks)",
752 + "picker_section_tokens_standard": "Жетони (${standard})",
753 + "picker_see_all": "Переглянути всі",
754 + "picker_show_less": "Показувати менше",
755 "pin_at_top": "Закріпити ${token} зверху",
756 "pin_is_incorrect": "PIN-код неправильний",
757 "pin_number": "PIN-номер",
@@ -926,12 +942,16 @@
942 "select_a_wallet": "Виберіть гаманець",
943 "select_address_to_copy": "Виберіть адресу для копіювання",
944 "select_all": "Вибрати все",
945 + "select_asset": "Виберіть Актив",
946 "select_backup_file": "Виберіть файл резервної копії",
947 "select_buy_provider_notice": "Виберіть вище постачальника для купівлі. Ви можете пропустити цей екран, встановивши постачальника для купівлі за замовчуванням у налаштуваннях застосунку.",
948 "select_destination": "Будь ласка, виберіть місце призначення для файлу резервної копії.",
949 + "select_fiat_currency_title": "Виберіть Валюта",
950 "select_hw_account_below": "Будь ласка, виберіть нижче, який обліковий запис відновити:",
951 "select_manufacturer_title": "Виберіть виробника",
952 "select_network": "Виберіть мережу",
953 + "select_network_subtitle": "Цей актив присутній у кількох мережах. Виберіть той, який хочете використовувати",
954 + "select_network_title": "Виберіть Мережа",
955 "select_other_wallet": "Виберіть інший гаманець",
956 "select_receiver": "Виберіть одержувача",
957 "select_sell_provider_notice": "Виберіть вище провайдера для продажу. Ви можете пропустити цей екран, встановивши провайдера для продажу за замовчуванням у налаштуваннях застосунку.",
res/values/strings_ur.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "نیا والیٹ بنایا جا رہا ہے",
278 "creating_new_wallet_error": "خرابی: ${description}",
279 "creation_date": "تخلیق کی تاریخ",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "موجودہ سواپ",
282 "current_wallet": "موجودہ والیٹ",
283 "custom": "حسبِ ضرورت",
@@ -450,14 +451,12 @@
451 "expires": "میعاد ختم ہوتا ہے",
452 "expiresOn": "میعاد ختم ہونے کی تاریخ",
453 "expiry_and_validity": "میعادِ ختم اور درستگی",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "بیک اپ ایکسپورٹ کریں",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "لائٹننگ لاگز برآمد کریں",
457 "export_logs": "لاگز برآمد کریں",
458 "export_outputs": "آؤٹ پٹس ایکسپورٹ کریں",
459 "export_payjoin_logs": "Payjoin لاگز ایکسپورٹ کریں",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "سیشن میں توسیع کریں",
461 "external": "بیرونی",
462 "external_wallet": "بیرونی والیٹ",
@@ -494,6 +493,7 @@
493 "gas_price": "گیس کی قیمت",
494 "general": "عمومی",
495 "generate_name": "نام بنائیں",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "گفٹ کارڈ تیار کیا جا رہا ہے",
498 "generating_transaction": "ٹرانزیکشن تیار کی جا رہی ہے",
499 "get_a": "حاصل کریں ",
@@ -738,6 +738,22 @@
738 "payments": "ادائیگیاں",
739 "pending": " (زیرِ التواء)",
740 "percentageOf": "${amount} کا",
741 + "picker_chip_all": "تمام",
742 + "picker_no_matches": "کوئی میچ نہیں",
743 + "picker_section_all_assets": "تمام اثاثے (A-Z)",
744 + "picker_section_all_currencies": "تمام کرنسیاں",
745 + "picker_section_crypto": "کرپٹو",
746 + "picker_section_cryptocurrencies": "کرپٹو کرنسی",
747 + "picker_section_gas_token": "گیس ٹوکن",
748 + "picker_section_more_cryptocurrencies": "مزید کریپٹو کرنسی",
749 + "picker_section_popular": "مقبول",
750 + "picker_section_recents": "حالیہ",
751 + "picker_section_selected": "منتخب",
752 + "picker_section_stablecoins": "سٹیبل کوائنز",
753 + "picker_section_tokenized_stocks": "ٹوکنائزڈ اسٹاکس (xStocks)",
754 + "picker_section_tokens_standard": "ٹوکنز (${standard})",
755 + "picker_see_all": "سب دیکھیں",
756 + "picker_show_less": "کم دکھائیں۔",
757 "pin_at_top": "${token} کو اوپر پن کریں",
758 "pin_is_incorrect": "PIN غلط ہے",
759 "pin_number": "PIN نمبر",
@@ -927,12 +943,16 @@
943 "select_a_wallet": "ایک والیٹ منتخب کریں",
944 "select_address_to_copy": "کاپی کرنے کے لیے ایڈریس منتخب کریں",
945 "select_all": "سب منتخب کریں",
946 + "select_asset": "اثاثہ منتخب کریں۔",
947 "select_backup_file": "بیک اپ فائل منتخب کریں",
948 "select_buy_provider_notice": "اوپر خریداری فراہم کنندہ منتخب کریں۔ آپ ایپ کی ترتیبات میں اپنا ڈیفالٹ خریداری فراہم کنندہ سیٹ کر کے اس اسکرین کو چھوڑ سکتے ہیں۔",
949 "select_destination": "براہِ کرم بیک اپ فائل کے لیے منزل منتخب کریں۔",
950 + "select_fiat_currency_title": "کرنسی کا انتخاب کریں۔",
951 "select_hw_account_below": "براہ کرم نیچے بحال کرنے کے لیے اکاؤنٹ منتخب کریں:",
952 "select_manufacturer_title": "مینوفیکچرر منتخب کریں",
953 "select_network": "نیٹ ورک منتخب کریں",
954 + "select_network_subtitle": "یہ اثاثہ متعدد نیٹ ورکس میں موجود ہے۔ جس کو آپ استعمال کرنا چاہتے ہیں اسے منتخب کریں۔",
955 + "select_network_title": "نیٹ ورک کو منتخب کریں۔",
956 "select_other_wallet": "دوسرا والیٹ منتخب کریں",
957 "select_receiver": "وصول کنندہ منتخب کریں",
958 "select_sell_provider_notice": "اوپر کسی سیل فراہم کنندہ کو منتخب کریں۔ آپ ایپ کی سیٹنگز میں اپنا ڈیفالٹ سیل فراہم کنندہ سیٹ کر کے اس اسکرین کو چھوڑ سکتے ہیں۔",
res/values/strings_vi.arb
+22 -2
@@ -276,6 +276,7 @@
276 "creating_new_wallet": "Đang tạo ví mới",
277 "creating_new_wallet_error": "Lỗi: ${description}",
278 "creation_date": "Ngày tạo",
279 + "csv_nothing_to_export": "Nothing to export",
280 "current_swap": "Hoán đổi hiện tại",
281 "current_wallet": "Ví hiện tại",
282 "custom": "Tùy chỉnh",
@@ -449,14 +450,12 @@
450 "expires": "Hết hạn",
451 "expiresOn": "Hết hạn vào",
452 "expiry_and_validity": "Thời hạn và hiệu lực",
452 - "csv_nothing_to_export": "Nothing to export",
453 "export_backup": "Xuất bản sao lưu",
454 "export_csv": "Export CSV",
455 "export_lightning_logs": "Xuất nhật ký Lightning",
456 "export_logs": "Xuất nhật ký",
457 "export_outputs": "Xuất đầu ra",
458 "export_payjoin_logs": "Xuất nhật ký Payjoin",
459 - "generating_csv": "Generating CSV...",
459 "extend_session": "Gia hạn phiên",
460 "external": "Bên ngoài",
461 "external_wallet": "Ví ngoài",
@@ -493,6 +492,7 @@
492 "gas_price": "Giá gas",
493 "general": "Chung",
494 "generate_name": "Tạo tên",
495 + "generating_csv": "Generating CSV...",
496 "generating_gift_card": "Đang tạo thẻ quà tặng",
497 "generating_transaction": "Đang tạo giao dịch",
498 "get_a": "Nhận ",
@@ -734,6 +734,22 @@
734 "payments": "Thanh toán",
735 "pending": " (đang chờ)",
736 "percentageOf": "của ${amount}",
737 + "picker_chip_all": "Tất cả",
738 + "picker_no_matches": "Không có kết quả phù hợp",
739 + "picker_section_all_assets": "Tất cả tài sản (A-Z)",
740 + "picker_section_all_currencies": "Tất cả các loại tiền tệ",
741 + "picker_section_crypto": "tiền điện tử",
742 + "picker_section_cryptocurrencies": "Tiền điện tử",
743 + "picker_section_gas_token": "Mã thông báo khí",
744 + "picker_section_more_cryptocurrencies": "Thêm tiền điện tử",
745 + "picker_section_popular": "Phổ biến",
746 + "picker_section_recents": "Gần đây",
747 + "picker_section_selected": "Đã chọn",
748 + "picker_section_stablecoins": "Stablecoin",
749 + "picker_section_tokenized_stocks": "Cổ phiếu được mã hóa (xStocks)",
750 + "picker_section_tokens_standard": "Mã thông báo (${standard})",
751 + "picker_see_all": "Xem tất cả",
752 + "picker_show_less": "Hiển thị ít hơn",
753 "pin_at_top": "Ghim ${token} lên đầu",
754 "pin_is_incorrect": "PIN không đúng",
755 "pin_number": "Mã PIN",
@@ -923,12 +939,16 @@
939 "select_a_wallet": "Chọn một ví",
940 "select_address_to_copy": "Chọn địa chỉ để sao chép",
941 "select_all": "Chọn tất cả",
942 + "select_asset": "Chọn nội dung",
943 "select_backup_file": "Chọn tệp sao lưu",
944 "select_buy_provider_notice": "Chọn nhà cung cấp mua ở trên. Bạn có thể bỏ qua màn hình này bằng cách đặt nhà cung cấp mua mặc định trong phần cài đặt ứng dụng.",
945 "select_destination": "Vui lòng chọn vị trí lưu tệp sao lưu.",
946 + "select_fiat_currency_title": "Chọn tiền tệ",
947 "select_hw_account_below": "Vui lòng chọn tài khoản cần khôi phục bên dưới:",
948 "select_manufacturer_title": "Chọn nhà sản xuất",
949 "select_network": "Chọn mạng",
950 + "select_network_subtitle": "Tài sản này có mặt trong nhiều mạng. Chọn cái bạn muốn sử dụng",
951 + "select_network_title": "Chọn mạng",
952 "select_other_wallet": "Chọn ví khác",
953 "select_receiver": "Chọn người nhận",
954 "select_sell_provider_notice": "Chọn nhà cung cấp bán ở trên. Bạn có thể bỏ qua màn hình này bằng cách đặt nhà cung cấp bán mặc định trong cài đặt ứng dụng.",
res/values/strings_yo.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "Ń ṣẹ̀dá àpamọ́wọ́ tuntun",
278 "creating_new_wallet_error": "Aṣiṣe: ${description}",
279 "creation_date": "Ọjọ́ ìdásílẹ̀",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "Swap lọwọlọwọ",
282 "current_wallet": "Apamọwọ lọwọlọwọ",
283 "custom": "Àdàkọ",
@@ -451,14 +452,12 @@
452 "expires": "Yóò parí",
453 "expiresOn": "Yóò parí ní",
454 "expiry_and_validity": "Ọjọ́ ìparí àti ìmúlò",
454 - "csv_nothing_to_export": "Nothing to export",
455 "export_backup": "Gbé ẹ̀dà àfipamọ́ jáde",
456 "export_csv": "Export CSV",
457 "export_lightning_logs": "Gbe àwọn àkọọlẹ Lightning jáde",
458 "export_logs": "Gbe àwọn ìwé-àkọsílẹ̀ jáde",
459 "export_outputs": "Gbe àwọn output jáde",
460 "export_payjoin_logs": "Gbejade àwọn ìkọ̀ọ́lẹ̀ Payjoin",
461 - "generating_csv": "Generating CSV...",
461 "extend_session": "Fa igba iṣẹ́ pọ̀ síi",
462 "external": "Ita",
463 "external_wallet": "Apamọwọ ita",
@@ -495,6 +494,7 @@
494 "gas_price": "Iye gaasi",
495 "general": "Gbogbogbo",
496 "generate_name": "Ṣẹda Orúkọ",
497 + "generating_csv": "Generating CSV...",
498 "generating_gift_card": "Ń ṣe Ẹ̀bùn Káàdì",
499 "generating_transaction": "Ṣíṣe ìṣòwò",
500 "get_a": "Gba ",
@@ -737,6 +737,22 @@
737 "payments": "Awọn ìsanwó",
738 "pending": " (ń dúró)",
739 "percentageOf": "ti ${amount}",
740 + "picker_chip_all": "Gbogbo",
741 + "picker_no_matches": "Ko si ibaamu",
742 + "picker_section_all_assets": "Gbogbo Awọn dukia (A-Z)",
743 + "picker_section_all_currencies": "Gbogbo Owo",
744 + "picker_section_crypto": "Crypto",
745 + "picker_section_cryptocurrencies": "Awọn owo iworo",
746 + "picker_section_gas_token": "Gaasi Àmi",
747 + "picker_section_more_cryptocurrencies": "Diẹ Cryptocurrencies",
748 + "picker_section_popular": "Gbajumo",
749 + "picker_section_recents": "Awọn aipẹ",
750 + "picker_section_selected": "Ti yan",
751 + "picker_section_stablecoins": "Stablecoins",
752 + "picker_section_tokenized_stocks": "Awọn akojopo Tokini (xStocks)",
753 + "picker_section_tokens_standard": "Àmi (${standard})",
754 + "picker_see_all": "Wo gbogbo",
755 + "picker_show_less": "Ṣe afihan kere si",
756 "pin_at_top": "Fi ${token} mọ́ òkè",
757 "pin_is_incorrect": "PIN kò tọ́",
758 "pin_number": "Nọ́mbà PIN",
@@ -926,12 +942,16 @@
942 "select_a_wallet": "Yan apamọwọ kan",
943 "select_address_to_copy": "Yan Adirẹsi láti Daakọ",
944 "select_all": "Yan gbogbo",
945 + "select_asset": "Yan dukia",
946 "select_backup_file": "Yan faili afẹ́yinti",
947 "select_buy_provider_notice": "Yan olupese rira loke. O le foju iboju yii kọja nipa ṣiṣeto olupese rira aiyipada rẹ ninu awọn eto app.",
948 "select_destination": "Jọwọ yan ibi ìpamọ́ fún fáìlì afẹ́yinti.",
949 + "select_fiat_currency_title": "Yan Owo",
950 "select_hw_account_below": "Jọwọ yan àkántì tí o fẹ́ mú padà ní isalẹ:",
951 "select_manufacturer_title": "Yan Olupese",
952 "select_network": "Yan Nẹ́tíwọ́ọ̀kì",
953 + "select_network_subtitle": "Ohun-ini yii wa ni awọn nẹtiwọọki pupọ. Yan eyi ti o fẹ lati lo",
954 + "select_network_title": "Yan Nẹtiwọọki",
955 "select_other_wallet": "Yan Apamọwọ mìíràn",
956 "select_receiver": "Yan Olùgbà",
957 "select_sell_provider_notice": "Yan olupese tita kan loke. O le foju iboju yii kọja nipa tito olupese tita aiyipada rẹ ninu awọn eto app.",
res/values/strings_zh.arb
+22 -2
@@ -277,6 +277,7 @@
277 "creating_new_wallet": "正在创建新钱包",
278 "creating_new_wallet_error": "错误:${description}",
279 "creation_date": "创建日期",
280 + "csv_nothing_to_export": "Nothing to export",
281 "current_swap": "当前兑换",
282 "current_wallet": "当前钱包",
283 "custom": "自定义",
@@ -450,14 +451,12 @@
451 "expires": "到期",
452 "expiresOn": "到期于",
453 "expiry_and_validity": "有效期和有效性",
453 - "csv_nothing_to_export": "Nothing to export",
454 "export_backup": "导出备份",
455 "export_csv": "Export CSV",
456 "export_lightning_logs": "导出 Lightning 日志",
457 "export_logs": "导出日志",
458 "export_outputs": "导出输出",
459 "export_payjoin_logs": "导出 Payjoin 日志",
460 - "generating_csv": "Generating CSV...",
460 "extend_session": "延长会话",
461 "external": "外部",
462 "external_wallet": "外部钱包",
@@ -494,6 +493,7 @@
493 "gas_price": "Gas 费",
494 "general": "通用",
495 "generate_name": "生成名称",
496 + "generating_csv": "Generating CSV...",
497 "generating_gift_card": "正在生成礼品卡",
498 "generating_transaction": "正在生成交易",
499 "get_a": "获取一个",
@@ -736,6 +736,22 @@
736 "payments": "支付",
737 "pending": "(待处理)",
738 "percentageOf": "${amount} 的",
739 + "picker_chip_all": "全部",
740 + "picker_no_matches": "没有匹配项",
741 + "picker_section_all_assets": "所有资产(A-Z)",
742 + "picker_section_all_currencies": "所有货币",
743 + "picker_section_crypto": "加密货币",
744 + "picker_section_cryptocurrencies": "加密货币",
745 + "picker_section_gas_token": "天然气代币",
746 + "picker_section_more_cryptocurrencies": "更多加密货币",
747 + "picker_section_popular": "受欢迎的",
748 + "picker_section_recents": "最近的内容",
749 + "picker_section_selected": "已选择",
750 + "picker_section_stablecoins": "稳定币",
751 + "picker_section_tokenized_stocks": "代币化股票 (xStocks)",
752 + "picker_section_tokens_standard": "代币(${standard})",
753 + "picker_see_all": "查看全部",
754 + "picker_show_less": "显示较少",
755 "pin_at_top": "将 ${token} 置顶",
756 "pin_is_incorrect": "PIN 不正确",
757 "pin_number": "PIN 码",
@@ -925,12 +941,16 @@
941 "select_a_wallet": "选择钱包",
942 "select_address_to_copy": "选择要复制的地址",
943 "select_all": "全选",
944 + "select_asset": "选择资产",
945 "select_backup_file": "选择备份文件",
946 "select_buy_provider_notice": "请在上方选择一个买入服务提供商。您可以在应用设置中设置默认买入服务提供商,以跳过此屏幕。",
947 "select_destination": "请选择备份文件的保存位置。",
948 + "select_fiat_currency_title": "选择货币",
949 "select_hw_account_below": "请在下方选择要恢复的账户:",
950 "select_manufacturer_title": "选择制造商",
951 "select_network": "选择网络",
952 + "select_network_subtitle": "该资产存在于多个网络中。选择您要使用的",
953 + "select_network_title": "选择网络",
954 "select_other_wallet": "选择其他钱包",
955 "select_receiver": "选择收款方",
956 "select_sell_provider_notice": "请选择上方的出售服务提供商。您可以在应用设置中设置默认的出售服务提供商,以跳过此屏幕。",
res/values/strings_zh_tw.arb
+5
@@ -631,6 +631,11 @@
631 "payments": "支付",
632 "pending": " (待處理)",
633 "percentageOf": "的 ${amount}",
634 + "picker_section_crypto": "加密貨幣",
635 + "picker_section_more_cryptocurrencies": "更多加密貨幣",
636 + "picker_section_tokens_standard": "代幣(${standard})",
637 + "picker_see_all": "查看全部",
638 + "picker_show_less": "顯示較少",
639 "pin_at_top": "將 ${token} 釘選至頂端",
640 "pin_is_incorrect": "PIN 不正確",
641 "pin_number": "PIN 碼",