chore: Refactor imports and update architecture package structure

Reorganized and clarified dependency sections in multiple pubspec.yaml files, grouping architecture and feature packages. Updated import statements in AuthRepositoryImpl for direct usage of types. Added missing dependencies to client authentication. Removed obsolete documentation and summary files from design_system and client home packages.
This commit is contained in:
Achintha Isuru
2026-01-22 12:28:10 -05:00
parent 7d3b4da8d4
commit 1b8a6466b0
11 changed files with 60 additions and 218 deletions

View File

@@ -1,5 +1,5 @@
import 'package:firebase_auth/firebase_auth.dart' as firebase;
import 'package:krow_data_connect/krow_data_connect.dart' as dc;
import 'package:firebase_auth/firebase_auth.dart';
import 'package:krow_data_connect/krow_data_connect.dart';
import 'package:krow_domain/krow_domain.dart' as domain;
import '../../domain/repositories/auth_repository_interface.dart';
@@ -8,15 +8,15 @@ import '../../domain/repositories/auth_repository_interface.dart';
/// This implementation integrates with Firebase Authentication for user
/// identity management and Krow's Data Connect SDK for storing user profile data.
class AuthRepositoryImpl implements AuthRepositoryInterface {
final firebase.FirebaseAuth _firebaseAuth;
final dc.ExampleConnector _dataConnect;
final FirebaseAuth _firebaseAuth;
final ExampleConnector _dataConnect;
/// Creates an [AuthRepositoryImpl] with the real dependencies.
AuthRepositoryImpl({
required firebase.FirebaseAuth firebaseAuth,
required dc.ExampleConnector dataConnect,
}) : _firebaseAuth = firebaseAuth,
_dataConnect = dataConnect;
required FirebaseAuth firebaseAuth,
required ExampleConnector dataConnect,
}) : _firebaseAuth = firebaseAuth,
_dataConnect = dataConnect;
@override
Future<domain.User> signInWithEmail({
@@ -40,8 +40,7 @@ class AuthRepositoryImpl implements AuthRepositoryInterface {
);
//TO-DO: validate that user is business role and has business account
} on firebase.FirebaseAuthException catch (e) {
} on FirebaseAuthException catch (e) {
if (e.code == 'invalid-credential' || e.code == 'wrong-password') {
throw Exception('Incorrect email or password.');
} else {
@@ -72,23 +71,25 @@ class AuthRepositoryImpl implements AuthRepositoryInterface {
// Client-specific business logic:
// 1. Create a `Business` entity.
// 2. Create a `User` entity associated with the business.
final createBusinessResponse = await _dataConnect.createBusiness(
businessName: companyName,
userId: firebaseUser.uid,
rateGroup: dc.BusinessRateGroup.STANDARD,
status: dc.BusinessStatus.PENDING,
).execute();
final createBusinessResponse = await _dataConnect
.createBusiness(
businessName: companyName,
userId: firebaseUser.uid,
rateGroup: BusinessRateGroup.STANDARD,
status: BusinessStatus.PENDING,
)
.execute();
final businessData = createBusinessResponse.data?.business_insert;
if (businessData == null) {
await firebaseUser.delete(); // Rollback if business creation fails
throw Exception('Business creation failed after Firebase user registration.');
throw Exception(
'Business creation failed after Firebase user registration.',
);
}
final createUserResponse = await _dataConnect.createUser(
id: firebaseUser.uid,
role: dc.UserBaseRole.USER,
)
final createUserResponse = await _dataConnect
.createUser(id: firebaseUser.uid, role: UserBaseRole.USER)
.email(email)
.userRole('BUSINESS')
.execute();
@@ -97,15 +98,16 @@ class AuthRepositoryImpl implements AuthRepositoryInterface {
if (newUserData == null) {
await firebaseUser.delete(); // Rollback if user profile creation fails
// TO-DO: Also delete the created Business if this fails
throw Exception('User profile creation failed after Firebase user registration.');
throw Exception(
'User profile creation failed after Firebase user registration.',
);
}
return _getUserProfile(
firebaseUserId: firebaseUser.uid,
fallbackEmail: firebaseUser.email ?? email,
);
} on firebase.FirebaseAuthException catch (e) {
} on FirebaseAuthException catch (e) {
if (e.code == 'weak-password') {
throw Exception('The password provided is too weak.');
} else if (e.code == 'email-already-in-use') {
@@ -114,7 +116,9 @@ class AuthRepositoryImpl implements AuthRepositoryInterface {
throw Exception('Sign-up error: ${e.message}');
}
} catch (e) {
throw Exception('Failed to sign up and create user data: ${e.toString()}');
throw Exception(
'Failed to sign up and create user data: ${e.toString()}',
);
}
}
@@ -129,14 +133,18 @@ class AuthRepositoryImpl implements AuthRepositoryInterface {
@override
Future<domain.User> signInWithSocial({required String provider}) {
throw UnimplementedError('Social authentication with $provider is not yet implemented.');
throw UnimplementedError(
'Social authentication with $provider is not yet implemented.',
);
}
Future<domain.User> _getUserProfile({
required String firebaseUserId,
required String? fallbackEmail,
}) async {
final response = await _dataConnect.getUserById(id: firebaseUserId).execute();
final response = await _dataConnect
.getUserById(id: firebaseUserId)
.execute();
final user = response.data?.user;
if (user == null) {
throw Exception('Authenticated user profile not found in database.');
@@ -147,10 +155,6 @@ class AuthRepositoryImpl implements AuthRepositoryInterface {
throw Exception('User email is missing in profile data.');
}
return domain.User(
id: user.id,
email: email,
role: user.role.stringValue,
);
return domain.User(id: user.id, email: email, role: user.role.stringValue);
}
}

View File

@@ -20,9 +20,13 @@ dependencies:
# Architecture Packages
design_system:
path: ../../../../design_system
path: ../../../design_system
core_localization:
path: ../../../core_localization
krow_data_connect:
path: ../../../data_connect
krow_domain:
path: ../../../domain
dev_dependencies:
flutter_test: