Merge pull request 'Set up RUB, USDT and USDC accounts automatically' (#73) from wallet-72 into main

This commit was merged in pull request #73.
This commit is contained in:
tech committed 2026-10-23 11:10:45 +00:00
commit 3b551f1565
21 files changed
+687 -62

No files matched your search

+4 -1
View File
@@ -161,7 +161,10 @@
"wRecent": "Recent activity",
"wSeeAll": "See all",
"wEmptyActivity": "Your next move starts here. Your transactions will appear below.",
"wEmptyAccounts": "No currency accounts have been set up for you yet. Contact support to request account setup.",
"wEmptyAccounts": "We couldn’t finish setting up your currency accounts. Try again to continue.",
"wAccountsLoading": "Getting your RUB, USDT and USDC accounts ready…",
"wAccountsFailed": "We couldn’t load your currency accounts. Try again to continue.",
"wAccountsRetry": "Try again",
"wRefresh": "Refresh",
"wSource": "From account",
"wDestination": "To account",
+4 -1
View File
@@ -161,7 +161,10 @@
"wRecent": "Последние операции",
"wSeeAll": "Смотреть все",
"wEmptyActivity": "Ваш следующий шаг начинается здесь. Здесь появятся ваши операции.",
"wEmptyAccounts": "У вас ещё нет валютных счетов. Обратитесь в поддержку за помощью с их открытием.",
"wEmptyAccounts": "Не удалось завершить настройку валютных счетов. Повторите попытку, чтобы продолжить.",
"wAccountsLoading": "Подготавливаем ваши счета в RUB, USDT и USDC…",
"wAccountsFailed": "Не удалось загрузить валютные счета. Повторите попытку, чтобы продолжить.",
"wAccountsRetry": "Повторить попытку",
"wRefresh": "Обновить",
"wSource": "Со счёта",
"wDestination": "На счёт",
+22 -3
View File
@@ -65,15 +65,34 @@ class AccountsPage extends StatelessWidget {
),
const SizedBox(height: 28),
if (p.loading) const LinearProgressIndicator(),
if (p.failed)
if ((p.loading || (!p.failed && p.data == null)) &&
accounts.isEmpty)
Semantics(liveRegion: true, child: Text(l.wAccountsLoading)),
if (p.failed && accounts.isNotEmpty)
Padding(
padding: const EdgeInsets.symmetric(vertical: 16),
child: Text(l.wUnavailable, style: TextStyle(color: c.error)),
),
if (!p.loading && accounts.isEmpty) Text(l.wEmptyAccounts),
if (!p.loading &&
accounts.isEmpty &&
(p.failed || p.data != null)) ...[
Semantics(
liveRegion: true,
child: Text(p.failed ? l.wAccountsFailed : l.wEmptyAccounts),
),
Align(
alignment: Alignment.centerLeft,
child: TextButton(
onPressed: p.refresh,
child: Text(l.wAccountsRetry),
),
),
],
if (accountId != null &&
p.account(accountId) == null &&
!p.loading)
!p.loading &&
!p.failed &&
p.data != null)
Text(l.wNotFound),
if (selected != null) ...[
const SizedBox(height: 24),
+16 -4
View File
@@ -256,11 +256,23 @@ class TransferPageState extends State<TransferPage> {
),
] else ...[
if (accounts.isEmpty) ...[
Text(wallet.loading ? l.wWorking : l.wEmptyAccounts),
TextButton(
onPressed: wallet.loading ? null : wallet.refresh,
child: Text(l.wRefresh),
Semantics(
liveRegion: true,
child: Text(
wallet.loading ||
(!wallet.failed && wallet.data == null)
? l.wAccountsLoading
: wallet.failed
? l.wAccountsFailed
: l.wEmptyAccounts,
),
),
if (!wallet.loading &&
(wallet.failed || wallet.data != null))
TextButton(
onPressed: wallet.refresh,
child: Text(l.wAccountsRetry),
),
] else ...[
DropdownButtonFormField<String>(
key: ValueKey('source-${p.source}'),