refactor: update AttireRepositoryImpl to use constructor injection, reorganize profile sections by moving documents and adding certificates, and introduce new UI icons.
This commit is contained in:
@@ -14,6 +14,9 @@ import 'presentation/pages/attire_capture_page.dart';
|
||||
import 'presentation/pages/attire_page.dart';
|
||||
|
||||
class StaffAttireModule extends Module {
|
||||
@override
|
||||
List<Module> get imports => <Module>[CoreModule()];
|
||||
|
||||
@override
|
||||
void binds(Injector i) {
|
||||
/// third party services
|
||||
@@ -25,7 +28,13 @@ class StaffAttireModule extends Module {
|
||||
);
|
||||
|
||||
// Repository
|
||||
i.addLazySingleton<AttireRepository>(AttireRepositoryImpl.new);
|
||||
i.addLazySingleton<AttireRepository>(
|
||||
() => AttireRepositoryImpl(
|
||||
uploadService: i.get<FileUploadService>(),
|
||||
signedUrlService: i.get<SignedUrlService>(),
|
||||
verificationService: i.get<VerificationService>(),
|
||||
),
|
||||
);
|
||||
|
||||
// Use Cases
|
||||
i.addLazySingleton(GetAttireOptionsUseCase.new);
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter_modular/flutter_modular.dart';
|
||||
import 'package:krow_core/core.dart';
|
||||
import 'package:krow_data_connect/krow_data_connect.dart'
|
||||
hide AttireVerificationStatus;
|
||||
@@ -12,12 +11,22 @@ import '../../domain/repositories/attire_repository.dart';
|
||||
/// Delegates data access to [StaffConnectorRepository].
|
||||
class AttireRepositoryImpl implements AttireRepository {
|
||||
/// Creates an [AttireRepositoryImpl].
|
||||
AttireRepositoryImpl({StaffConnectorRepository? connector})
|
||||
: _connector =
|
||||
connector ?? DataConnectService.instance.getStaffRepository();
|
||||
AttireRepositoryImpl({
|
||||
required FileUploadService uploadService,
|
||||
required SignedUrlService signedUrlService,
|
||||
required VerificationService verificationService,
|
||||
StaffConnectorRepository? connector,
|
||||
}) : _connector =
|
||||
connector ?? DataConnectService.instance.getStaffRepository(),
|
||||
_uploadService = uploadService,
|
||||
_signedUrlService = signedUrlService,
|
||||
_verificationService = verificationService;
|
||||
|
||||
/// The Staff Connector repository.
|
||||
final StaffConnectorRepository _connector;
|
||||
final FileUploadService _uploadService;
|
||||
final SignedUrlService _signedUrlService;
|
||||
final VerificationService _verificationService;
|
||||
|
||||
@override
|
||||
Future<List<AttireItem>> getAttireOptions() async {
|
||||
@@ -37,8 +46,7 @@ class AttireRepositoryImpl implements AttireRepository {
|
||||
@override
|
||||
Future<AttireItem> uploadPhoto(String itemId, String filePath) async {
|
||||
// 1. Upload file to Core API
|
||||
final FileUploadService uploadService = Modular.get<FileUploadService>();
|
||||
final FileUploadResponse uploadRes = await uploadService.uploadFile(
|
||||
final FileUploadResponse uploadRes = await _uploadService.uploadFile(
|
||||
filePath: filePath,
|
||||
fileName: filePath.split('/').last,
|
||||
);
|
||||
@@ -46,14 +54,11 @@ class AttireRepositoryImpl implements AttireRepository {
|
||||
final String fileUri = uploadRes.fileUri;
|
||||
|
||||
// 2. Create signed URL for the uploaded file
|
||||
final SignedUrlService signedUrlService = Modular.get<SignedUrlService>();
|
||||
final SignedUrlResponse signedUrlRes = await signedUrlService
|
||||
final SignedUrlResponse signedUrlRes = await _signedUrlService
|
||||
.createSignedUrl(fileUri: fileUri);
|
||||
final String photoUrl = signedUrlRes.signedUrl;
|
||||
|
||||
// 3. Initiate verification job
|
||||
final VerificationService verificationService =
|
||||
Modular.get<VerificationService>();
|
||||
final Staff staff = await _connector.getStaffProfile();
|
||||
|
||||
// Get item details for verification rules
|
||||
@@ -64,7 +69,7 @@ class AttireRepositoryImpl implements AttireRepository {
|
||||
final String dressCode =
|
||||
'${targetItem.description ?? ''} ${targetItem.label}'.trim();
|
||||
|
||||
final VerificationResponse verifyRes = await verificationService
|
||||
final VerificationResponse verifyRes = await _verificationService
|
||||
.createVerification(
|
||||
type: 'attire',
|
||||
subjectType: 'worker',
|
||||
@@ -81,7 +86,7 @@ class AttireRepositoryImpl implements AttireRepository {
|
||||
bool isFinished = false;
|
||||
while (!isFinished && attempts < 5) {
|
||||
await Future<void>.delayed(const Duration(seconds: 2));
|
||||
final VerificationResponse statusRes = await verificationService
|
||||
final VerificationResponse statusRes = await _verificationService
|
||||
.getStatus(verificationId);
|
||||
currentStatus = statusRes.status;
|
||||
if (currentStatus != VerificationStatus.pending &&
|
||||
|
||||
Reference in New Issue
Block a user