feat: Implement audio file upload for rapid order transcription and refine the rapid order verification page titles.
This commit is contained in:
@@ -35,6 +35,7 @@ class ClientCreateOrderModule extends Module {
|
||||
() => ClientCreateOrderRepositoryImpl(
|
||||
service: i.get<dc.DataConnectService>(),
|
||||
rapidOrderService: i.get<RapidOrderService>(),
|
||||
fileUploadService: i.get<FileUploadService>(),
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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) =>
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user