Build exchange workspace and shared transaction services (#28)

This commit is contained in:
Stephan D committed 2026-09-12 12:01:36 +02:00
1 parent 52b7135eda
commit c496da8a55
48 files changed
+4757 -120

No files matched your search

+3 -5
View File
@@ -50,7 +50,6 @@ class LimitsPanel extends StatelessWidget {
if (data.simulated)
Text(l.kycLimitsDemo, style: t.textTheme.bodySmall),
const SizedBox(height: 12),
Text(l.kycUsageHelp, style: t.textTheme.bodySmall),
if (data.rows.isEmpty) Text(l.kycLimitsEmpty),
for (final row in data.rows) ...[
const Divider(height: 32),
@@ -69,11 +68,10 @@ class LimitsPanel extends StatelessWidget {
row.currentMinor,
row.currency,
),
_amount(context, l.kycUsed, row.usedMinor, row.currency),
_amount(
context,
l.kycReserved,
row.reservedMinor,
l.wUsage,
row.usedMinor + row.reservedMinor,
row.currency,
),
_amount(
@@ -98,7 +96,7 @@ class LimitsPanel extends StatelessWidget {
minHeight: 8,
borderRadius: BorderRadius.circular(4),
semanticsLabel:
'${row.period == LimitPeriod.day ? l.kycDay : l.kycMonth}: ${l.kycOccupied}',
'${row.period == LimitPeriod.day ? l.kycDay : l.kycMonth}: ${l.wUsage}',
),
if (row.remainingMinor <= 0) ...[
const SizedBox(height: 8),
+8 -11
View File
@@ -8,9 +8,6 @@ import 'package:sxchnge_analytics/sxchnge_analytics.dart';
import 'package:sxchnge_kyc/sxchnge_kyc.dart';
import '../auth/brand_panel.dart';
import '../routing/routes.dart';
import '../widgets/locale.dart';
import 'copy.dart';
import 'form.dart';
import 'limits.dart';
@@ -100,7 +97,13 @@ class IdentityPageState extends State<IdentityPage> {
Future<void> _leave({bool account = false}) async {
if (!await allowExit() || !mounted) return;
_identity.exit();
if (account) context.goNamed(AppRoutes.login);
if (account) {
if (context.canPop()) {
context.pop();
} else {
context.go('/limits');
}
}
}
@override
@@ -136,12 +139,6 @@ class IdentityPageState extends State<IdentityPage> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Wrap(
alignment: WrapAlignment.spaceBetween,
crossAxisAlignment: WrapCrossAlignment.center,
spacing: 16,
children: [BrandWordmark(), LocaleSelector()],
),
const SizedBox(height: 36),
Semantics(
header: true,
@@ -225,7 +222,7 @@ class IdentityPageState extends State<IdentityPage> {
onPressed: p.busy
? null
: () => _leave(account: true),
child: Text(l.kycClose),
child: Text(l.wLimits),
),
],
),