Skip to content

Commit

Permalink
feat: error state & styling in transcription progress modal
Browse files Browse the repository at this point in the history
  • Loading branch information
matthiasn committed Apr 26, 2024
1 parent aabc174 commit 7bcf986
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 7 deletions.
12 changes: 12 additions & 0 deletions lib/services/asr_service.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'dart:async';
import 'dart:collection';
import 'dart:io';

import 'package:collection/collection.dart';
import 'package:ffmpeg_kit_flutter/ffmpeg_kit.dart';
Expand Down Expand Up @@ -86,6 +87,16 @@ class AsrService {
Future<void> _transcribe({required JournalAudio entry}) async {
running = true;
final audioFilePath = await AudioUtils.getFullAudioPath(entry);
final audioFileExists = File(audioFilePath).existsSync();

if (!audioFileExists) {
await Future<void>.delayed(const Duration(seconds: 1));
progressController.add(
('File does not exist.', TranscriptionStatus.error),
);
running = false;
return;
}

getIt<LoggingDb>().captureEvent(
'transcribing $audioFilePath',
Expand Down Expand Up @@ -188,4 +199,5 @@ enum TranscriptionStatus {
initializing,
inProgress,
done,
error,
}
22 changes: 16 additions & 6 deletions lib/widgets/audio/transcription_progress_modal.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,30 @@ class TranscriptionProgressModalContent extends StatelessWidget {
return StreamBuilder<(String, TranscriptionStatus)>(
stream: asrService.progressController.stream,
builder: (context, snapshot) {
debugPrint('$snapshot');
final text = snapshot.data?.$1 ?? '';
final status = snapshot.data?.$2;
final hasError = status == TranscriptionStatus.error;

if (status == TranscriptionStatus.done) {
Future<void>.delayed(const Duration(seconds: 3))
.then((value) => Navigator.of(context).pop());
}

return ConstrainedBox(
constraints: const BoxConstraints(minHeight: 100),
child: Padding(
padding: const EdgeInsets.all(32),
child: MarkdownBody(data: text),
if (hasError) {
Future<void>.delayed(const Duration(seconds: 5))
.then((value) => Navigator.of(context).pop());
}

return Padding(
padding: const EdgeInsets.all(32),
child: MarkdownBody(
data: text,
styleSheet: MarkdownStyleSheet(
p: TextStyle(
color: hasError ? Theme.of(context).colorScheme.error : null,
),
),
),
);
},
Expand Down Expand Up @@ -78,7 +89,6 @@ class TranscriptionProgressModal {
},
maxDialogWidth: WoltModalConfig.maxDialogWidth,
minDialogWidth: WoltModalConfig.minDialogWidth,
minPageHeight: WoltModalConfig.minPageHeight,
maxPageHeight: WoltModalConfig.maxPageHeight,
);
}
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: lotti
description: Achieve your goals and keep your data private with Lotti.
publish_to: 'none'
version: 0.9.452+2475
version: 0.9.453+2476

msix_config:
display_name: LottiApp
Expand Down

0 comments on commit 7bcf986

Please sign in to comment.