feat: Implement audio file upload for rapid order transcription and refine the rapid order verification page titles.

This commit is contained in:
Achintha Isuru
2026-02-27 21:02:34 -05:00
parent a53dddf2e6
commit 95175536a0
4 changed files with 22 additions and 5 deletions

View File

@@ -35,6 +35,7 @@ class ClientCreateOrderModule extends Module {
() => ClientCreateOrderRepositoryImpl(
service: i.get<dc.DataConnectService>(),
rapidOrderService: i.get<RapidOrderService>(),
fileUploadService: i.get<FileUploadService>(),
),
);

View File

@@ -17,11 +17,14 @@ class ClientCreateOrderRepositoryImpl
ClientCreateOrderRepositoryImpl({
required dc.DataConnectService service,
required RapidOrderService rapidOrderService,
required FileUploadService fileUploadService,
}) : _service = service,
_rapidOrderService = rapidOrderService;
_rapidOrderService = rapidOrderService,
_fileUploadService = fileUploadService;
final dc.DataConnectService _service;
final RapidOrderService _rapidOrderService;
final FileUploadService _fileUploadService;
@override
Future<void> createOneTimeOrder(domain.OneTimeOrder order) async {
@@ -412,8 +415,18 @@ class ClientCreateOrderRepositoryImpl
@override
Future<String> transcribeRapidOrder(String audioPath) async {
// 1. Upload the audio file first
final String fileName = audioPath.split('/').last;
final FileUploadResponse uploadResponse = await _fileUploadService
.uploadFile(
filePath: audioPath,
fileName: fileName,
category: 'rapid-order-audio',
);
// 2. Transcribe using the remote URI
final RapidOrderTranscriptionResponse response = await _rapidOrderService
.transcribeAudio(audioFileUri: audioPath);
.transcribeAudio(audioFileUri: uploadResponse.fileUri);
return response.transcript;
}

View File

@@ -53,7 +53,8 @@ class OneTimeOrderPage extends StatelessWidget {
: null,
hubManagers: state.managers.map(_mapManager).toList(),
isValid: state.isValid,
title: state.isRapidDraft ? 'Rapid Order : Verify the order' : null,
title: state.isRapidDraft ? 'Rapid Order' : null,
subtitle: state.isRapidDraft ? 'Verify the order details' : null,
onEventNameChanged: (String val) =>
bloc.add(OneTimeOrderEventNameChanged(val)),
onVendorChanged: (Vendor val) =>

View File

@@ -39,6 +39,7 @@ class OneTimeOrderView extends StatelessWidget {
required this.onDone,
required this.onBack,
this.title,
this.subtitle,
super.key,
});
@@ -56,6 +57,7 @@ class OneTimeOrderView extends StatelessWidget {
final OrderManagerUiModel? selectedHubManager;
final bool isValid;
final String? title;
final String? subtitle;
final ValueChanged<String> onEventNameChanged;
final ValueChanged<Vendor> onVendorChanged;
@@ -102,7 +104,7 @@ class OneTimeOrderView extends StatelessWidget {
children: <Widget>[
OneTimeOrderHeader(
title: title ?? labels.title,
subtitle: labels.subtitle,
subtitle: subtitle ?? labels.subtitle,
onBack: onBack,
),
Expanded(
@@ -140,7 +142,7 @@ class OneTimeOrderView extends StatelessWidget {
children: <Widget>[
OneTimeOrderHeader(
title: title ?? labels.title,
subtitle: labels.subtitle,
subtitle: subtitle ?? labels.subtitle,
onBack: onBack,
),
Expanded(