LCOV - code coverage report
Current view: top level - lib/pages/integration - integration_page.dart Coverage Total Hit
Test: lcov.info Lines: 3.6 % 28 1
Test Date: 2026-11-14 15:08:11 Functions: - 0 0

            Line data    Source code
       1              : // Copyright 2026 The terCAD team. All rights reserved.
       2              : // Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file.
       3              : 
       4              : import 'package:app_finance/_classes/controller/deep_link/deep_link_handler.dart';
       5              : import 'package:app_finance/_classes/herald/app_locale.dart';
       6              : import 'package:app_finance/_configs/theme_helper.dart';
       7              : import 'package:app_finance/_ext/build_context_ext.dart';
       8              : import 'package:app_finance/pages/_interfaces/abstract_page_state.dart';
       9              : import 'package:app_finance/pages/integration/widgets/enablebanking_widget.dart';
      10              : import 'package:app_finance/pages/integration/widgets/fints_widget.dart';
      11              : import 'package:app_finance/pages/integration/widgets/simplefin_widget.dart';
      12              : import 'package:material_ui/material_ui.dart';
      13              : 
      14              : typedef IntegrationItem = ({String id, String title, IconData icon, WidgetBuilder builder});
      15              : 
      16              : class IntegrationPage extends StatefulWidget {
      17            1 :   const IntegrationPage({super.key});
      18              : 
      19            0 :   @override
      20            0 :   IntegrationPageState createState() => IntegrationPageState();
      21              : }
      22              : 
      23              : class IntegrationPageState extends AbstractPageState<IntegrationPage> {
      24            0 :   static List<IntegrationItem> getIntegrations() => [
      25              :         (
      26              :           id: 'fints',
      27            0 :           title: AppLocale.labels.finTsHeadline,
      28              :           icon: Icons.account_balance,
      29            0 :           builder: (_) => const FinTsWidget(),
      30              :         ),
      31              :         (
      32              :           id: 'simplefin',
      33            0 :           title: AppLocale.labels.simpleFinHeadline,
      34              :           icon: Icons.account_balance_wallet,
      35            0 :           builder: (_) => const SimpleFinWidget(),
      36              :         ),
      37              :         (
      38              :           id: 'enablebanking',
      39            0 :           title: AppLocale.labels.enableBankingHeadline,
      40              :           icon: Icons.euro,
      41            0 :           builder: (_) => const EnableBankingWidget(),
      42              :         ),
      43              :       ];
      44              : 
      45            0 :   @override
      46            0 :   String getTitle() => AppLocale.labels.integrationHeadline;
      47              : 
      48            0 :   @override
      49              :   String getButtonName() => '';
      50              : 
      51            0 :   @override
      52              :   Widget buildButton(BuildContext context, BoxConstraints constraints) => ThemeHelper.emptyBox;
      53              : 
      54            0 :   @override
      55              :   Widget buildContent(BuildContext context, BoxConstraints constraints) {
      56            0 :     final indent = ThemeHelper.getIndent();
      57            0 :     return ListView(
      58            0 :       padding: EdgeInsets.all(indent),
      59            0 :       children: [
      60            0 :         for (final item in getIntegrations())
      61            0 :           Card(
      62            0 :             key: ValueKey('integration_${item.id}'),
      63              :             clipBehavior: Clip.antiAlias,
      64            0 :             child: ExpansionTile(
      65            0 :               leading: Icon(item.icon),
      66            0 :               title: Text(item.title, style: context.textTheme.titleMedium),
      67              :               maintainState: true,
      68              :               // A bank's callback (deep link) is completed by its section
      69            0 :               initiallyExpanded: item.id == 'enablebanking' && DeepLinkHandler.enableBankingCallback.value != null,
      70            0 :               childrenPadding: EdgeInsets.fromLTRB(indent * 2, 0, indent * 2, indent * 2),
      71              :               expandedCrossAxisAlignment: CrossAxisAlignment.stretch,
      72            0 :               children: [Builder(builder: item.builder)],
      73              :             ),
      74              :           ),
      75              :       ],
      76              :     );
      77              :   }
      78              : }
        

Generated by: LCOV version 2.0-1