Files
ingtrakapp/lib/utils/connect_bank.dart
2026-09-06 21:13:30 +02:00

60 lines
1.4 KiB
Dart

/// Shared UI helpers for bank connect actions.
library;
import 'package:flutter/material.dart';
import '../providers/bank_provider.dart';
import '../screens/bank_auth_screen.dart';
Future<void> runConnectBank(BuildContext context, BankController bank) async {
final start = await bank.beginConnect();
if (!context.mounted) return;
if (start == null) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(bank.error ?? 'Could not start bank connect')),
);
return;
}
final result = await Navigator.of(context).push<BankAuthResult>(
MaterialPageRoute(
builder: (_) => BankAuthScreen(
authUrl: start.authUrl,
pendingState: start.state,
),
),
);
if (!context.mounted) return;
if (result == null) return;
if (result.error != null && result.error!.isNotEmpty) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Bank auth failed: ${result.error}')),
);
return;
}
if (!result.hasCode) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Bank redirect missing code')),
);
return;
}
final linked = await bank.completeWithCode(
code: result.code!,
state: result.state,
);
if (!context.mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
linked ? 'Bank linked' : (bank.error ?? 'Could not complete connect'),
),
),
);
}