From e2cdf0d8fa219af01a6a172f01718c6f5ac1c263 Mon Sep 17 00:00:00 2001 From: Achintha Isuru Date: Sat, 24 Jan 2026 23:11:05 -0500 Subject: [PATCH] feat: Refactor BankAccountRepository implementation and update module bindings for improved dependency injection --- .../bank_account_repository_impl.dart | 23 ++++++++--------- .../lib/src/staff_bank_account_module.dart | 25 +++++++++++++------ .../finances/staff_bank_account/pubspec.yaml | 2 ++ 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/lib/src/data/repositories/bank_account_repository_impl.dart b/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/lib/src/data/repositories/bank_account_repository_impl.dart index a939d6e6..e45681c8 100644 --- a/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/lib/src/data/repositories/bank_account_repository_impl.dart +++ b/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/lib/src/data/repositories/bank_account_repository_impl.dart @@ -1,29 +1,26 @@ -// ignore_for_file: implementation_imports import 'package:firebase_auth/firebase_auth.dart' as auth; import 'package:firebase_data_connect/firebase_data_connect.dart'; import 'package:krow_data_connect/krow_data_connect.dart'; import 'package:krow_domain/krow_domain.dart'; -import 'package:krow_data_connect/src/dataconnect_generated/generated.dart'; import '../../domain/repositories/bank_account_repository.dart'; /// Implementation of [BankAccountRepository]. class BankAccountRepositoryImpl implements BankAccountRepository { - final ExampleConnector _connector; - final auth.FirebaseAuth _auth; + const BankAccountRepositoryImpl({ + required this.dataConnect, + required this.firebaseAuth, + }); - BankAccountRepositoryImpl({ - ExampleConnector? connector, - auth.FirebaseAuth? firebaseAuth, - }) : _connector = connector ?? ExampleConnector.instance, - _auth = firebaseAuth ?? auth.FirebaseAuth.instance; + final ExampleConnector dataConnect; + final auth.FirebaseAuth firebaseAuth; @override Future> getAccounts() async { - final auth.User? user = _auth.currentUser; + final auth.User? user = firebaseAuth.currentUser; if (user == null) throw Exception('User not authenticated'); - final QueryResult result = await _connector.getAccountsByOwnerId(ownerId: user.uid).execute(); + final QueryResult result = await dataConnect.getAccountsByOwnerId(ownerId: user.uid).execute(); return result.data.accounts.map((GetAccountsByOwnerIdAccounts account) { return BankAccount( @@ -41,10 +38,10 @@ class BankAccountRepositoryImpl implements BankAccountRepository { @override Future addAccount(BankAccount account) async { - final auth.User? user = _auth.currentUser; + final auth.User? user = firebaseAuth.currentUser; if (user == null) throw Exception('User not authenticated'); - await _connector.createAccount( + await dataConnect.createAccount( bank: account.bankName, type: _mapDomainType(account.type), last4: account.last4 ?? account.accountNumber.substring(account.accountNumber.length - 4), diff --git a/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/lib/src/staff_bank_account_module.dart b/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/lib/src/staff_bank_account_module.dart index ba99cb14..0dabc7ad 100644 --- a/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/lib/src/staff_bank_account_module.dart +++ b/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/lib/src/staff_bank_account_module.dart @@ -1,23 +1,34 @@ +import 'package:firebase_auth/firebase_auth.dart' as auth; import 'package:flutter_modular/flutter_modular.dart'; +import 'package:krow_data_connect/krow_data_connect.dart'; import 'package:staff_bank_account/src/data/repositories/bank_account_repository_impl.dart'; + +import 'domain/repositories/bank_account_repository.dart'; +import 'domain/usecases/add_bank_account_usecase.dart'; +import 'domain/usecases/get_bank_accounts_usecase.dart'; import 'presentation/blocs/bank_account_cubit.dart'; import 'presentation/pages/bank_account_page.dart'; -import 'domain/repositories/bank_account_repository.dart'; -import 'domain/usecases/get_bank_accounts_usecase.dart'; -import 'domain/usecases/add_bank_account_usecase.dart'; class StaffBankAccountModule extends Module { + @override + List get imports => [DataConnectModule()]; + @override void binds(Injector i) { // Repositories - i.add(BankAccountRepositoryImpl.new); + i.addLazySingleton( + () => BankAccountRepositoryImpl( + firebaseAuth: auth.FirebaseAuth.instance, + dataConnect: ExampleConnector.instance, + ), + ); // Use Cases - i.add(GetBankAccountsUseCase.new); - i.add(AddBankAccountUseCase.new); + i.addLazySingleton(GetBankAccountsUseCase.new); + i.addLazySingleton(AddBankAccountUseCase.new); // Blocs - i.addSingleton( + i.add( () => BankAccountCubit( getBankAccountsUseCase: i.get(), addBankAccountUseCase: i.get(), diff --git a/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/pubspec.yaml b/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/pubspec.yaml index 068cb813..4d6785ee 100644 --- a/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/pubspec.yaml +++ b/apps/mobile/packages/features/staff/profile_sections/finances/staff_bank_account/pubspec.yaml @@ -16,6 +16,8 @@ dependencies: flutter_modular: ^6.3.0 equatable: ^2.0.5 lucide_icons: ^0.257.0 + firebase_auth: ^6.1.4 + firebase_data_connect: ^0.2.2+2 # Architecture Packages design_system: