feat: add payment card grouping and analysis
This commit is contained in:
@@ -6,6 +6,9 @@ import '../widgets/sms_scan/scan_progress_widget.dart';
|
||||
import '../widgets/sms_scan/subscription_card_widget.dart';
|
||||
import '../widgets/common/snackbar/app_snackbar.dart';
|
||||
import '../l10n/app_localizations.dart';
|
||||
import '../widgets/payment_card/payment_card_form_sheet.dart';
|
||||
import '../routes/app_routes.dart';
|
||||
import '../models/payment_card_suggestion.dart';
|
||||
|
||||
class SmsScanScreen extends StatefulWidget {
|
||||
const SmsScanScreen({super.key});
|
||||
@@ -96,8 +99,23 @@ class _SmsScanScreenState extends State<SmsScanScreen> {
|
||||
websiteUrlController: _controller.websiteUrlController,
|
||||
selectedCategoryId: _controller.selectedCategoryId,
|
||||
onCategoryChanged: _controller.setSelectedCategoryId,
|
||||
selectedPaymentCardId: _controller.selectedPaymentCardId,
|
||||
onPaymentCardChanged: _controller.setSelectedPaymentCardId,
|
||||
onAddCard: () async {
|
||||
final newCardId = await PaymentCardFormSheet.show(context);
|
||||
if (newCardId != null) {
|
||||
_controller.setSelectedPaymentCardId(newCardId);
|
||||
}
|
||||
},
|
||||
onManageCards: () {
|
||||
Navigator.of(context).pushNamed(AppRoutes.paymentCardManagement);
|
||||
},
|
||||
onAdd: _handleAddSubscription,
|
||||
onSkip: _handleSkipSubscription,
|
||||
detectedCardSuggestion: _controller.currentSuggestion,
|
||||
showDetectedCardShortcut: _controller.shouldSuggestCardCreation,
|
||||
onAddDetectedCard: (suggestion) =>
|
||||
_handleDetectedCardCreation(suggestion),
|
||||
),
|
||||
],
|
||||
);
|
||||
@@ -114,6 +132,18 @@ class _SmsScanScreenState extends State<SmsScanScreen> {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) => _scrollToTop());
|
||||
}
|
||||
|
||||
Future<void> _handleDetectedCardCreation(
|
||||
PaymentCardSuggestion suggestion) async {
|
||||
final newCardId = await PaymentCardFormSheet.show(
|
||||
context,
|
||||
initialIssuerName: suggestion.issuerName,
|
||||
initialLast4: suggestion.last4,
|
||||
);
|
||||
if (newCardId != null) {
|
||||
_controller.setSelectedPaymentCardId(newCardId);
|
||||
}
|
||||
}
|
||||
|
||||
void _scrollToTop() {
|
||||
if (!_scrollController.hasClients) return;
|
||||
_scrollController.animateTo(
|
||||
|
||||
Reference in New Issue
Block a user