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(
|
() => ClientCreateOrderRepositoryImpl(
|
||||||
service: i.get<dc.DataConnectService>(),
|
service: i.get<dc.DataConnectService>(),
|
||||||
rapidOrderService: i.get<RapidOrderService>(),
|
rapidOrderService: i.get<RapidOrderService>(),
|
||||||
|
fileUploadService: i.get<FileUploadService>(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -17,11 +17,14 @@ class ClientCreateOrderRepositoryImpl
|
|||||||
ClientCreateOrderRepositoryImpl({
|
ClientCreateOrderRepositoryImpl({
|
||||||
required dc.DataConnectService service,
|
required dc.DataConnectService service,
|
||||||
required RapidOrderService rapidOrderService,
|
required RapidOrderService rapidOrderService,
|
||||||
|
required FileUploadService fileUploadService,
|
||||||
}) : _service = service,
|
}) : _service = service,
|
||||||
_rapidOrderService = rapidOrderService;
|
_rapidOrderService = rapidOrderService,
|
||||||
|
_fileUploadService = fileUploadService;
|
||||||
|
|
||||||
final dc.DataConnectService _service;
|
final dc.DataConnectService _service;
|
||||||
final RapidOrderService _rapidOrderService;
|
final RapidOrderService _rapidOrderService;
|
||||||
|
final FileUploadService _fileUploadService;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> createOneTimeOrder(domain.OneTimeOrder order) async {
|
Future<void> createOneTimeOrder(domain.OneTimeOrder order) async {
|
||||||
@@ -412,8 +415,18 @@ class ClientCreateOrderRepositoryImpl
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<String> transcribeRapidOrder(String audioPath) async {
|
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
|
final RapidOrderTranscriptionResponse response = await _rapidOrderService
|
||||||
.transcribeAudio(audioFileUri: audioPath);
|
.transcribeAudio(audioFileUri: uploadResponse.fileUri);
|
||||||
return response.transcript;
|
return response.transcript;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,8 @@ class OneTimeOrderPage extends StatelessWidget {
|
|||||||
: null,
|
: null,
|
||||||
hubManagers: state.managers.map(_mapManager).toList(),
|
hubManagers: state.managers.map(_mapManager).toList(),
|
||||||
isValid: state.isValid,
|
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) =>
|
onEventNameChanged: (String val) =>
|
||||||
bloc.add(OneTimeOrderEventNameChanged(val)),
|
bloc.add(OneTimeOrderEventNameChanged(val)),
|
||||||
onVendorChanged: (Vendor val) =>
|
onVendorChanged: (Vendor val) =>
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ class OneTimeOrderView extends StatelessWidget {
|
|||||||
required this.onDone,
|
required this.onDone,
|
||||||
required this.onBack,
|
required this.onBack,
|
||||||
this.title,
|
this.title,
|
||||||
|
this.subtitle,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -56,6 +57,7 @@ class OneTimeOrderView extends StatelessWidget {
|
|||||||
final OrderManagerUiModel? selectedHubManager;
|
final OrderManagerUiModel? selectedHubManager;
|
||||||
final bool isValid;
|
final bool isValid;
|
||||||
final String? title;
|
final String? title;
|
||||||
|
final String? subtitle;
|
||||||
|
|
||||||
final ValueChanged<String> onEventNameChanged;
|
final ValueChanged<String> onEventNameChanged;
|
||||||
final ValueChanged<Vendor> onVendorChanged;
|
final ValueChanged<Vendor> onVendorChanged;
|
||||||
@@ -102,7 +104,7 @@ class OneTimeOrderView extends StatelessWidget {
|
|||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
OneTimeOrderHeader(
|
OneTimeOrderHeader(
|
||||||
title: title ?? labels.title,
|
title: title ?? labels.title,
|
||||||
subtitle: labels.subtitle,
|
subtitle: subtitle ?? labels.subtitle,
|
||||||
onBack: onBack,
|
onBack: onBack,
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
@@ -140,7 +142,7 @@ class OneTimeOrderView extends StatelessWidget {
|
|||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
OneTimeOrderHeader(
|
OneTimeOrderHeader(
|
||||||
title: title ?? labels.title,
|
title: title ?? labels.title,
|
||||||
subtitle: labels.subtitle,
|
subtitle: subtitle ?? labels.subtitle,
|
||||||
onBack: onBack,
|
onBack: onBack,
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
|
|||||||
Reference in New Issue
Block a user