Skip to content

Commit

Permalink
fix: handle nullable timestamps in audio model and service (#1320)
Browse files Browse the repository at this point in the history
* fix: handle nullable timestamps in audio model and service

* fix: update audio progress indicator to handle zero values correctly
  • Loading branch information
Sembauke authored Feb 10, 2025
1 parent 91eaf5c commit 42c8530
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 29 deletions.
8 changes: 4 additions & 4 deletions mobile-app/lib/models/learn/challenge_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -273,8 +273,8 @@ class Blank {
class EnglishAudio {
final String fileName;
final String startTime;
final String startTimeStamp;
final String finishTimeStamp;
final String? startTimeStamp;
final String? finishTimeStamp;

const EnglishAudio({
required this.fileName,
Expand All @@ -287,8 +287,8 @@ class EnglishAudio {
return EnglishAudio(
fileName: data['filename'],
startTime: data['startTime'].toString(),
startTimeStamp: data['startTimestamp'].toString(),
finishTimeStamp: data['finishTimestamp'].toString(),
startTimeStamp: data['startTimestamp']?.toString(),
finishTimeStamp: data['finishTimestamp']?.toString(),
);
}
}
9 changes: 6 additions & 3 deletions mobile-app/lib/service/audio/audio_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -174,10 +174,11 @@ class AudioPlayerHandler extends BaseAudioHandler {
}
}

Duration parseTimeStamp(String timeStamp) {
if (timeStamp == '0') {
Duration parseTimeStamp(String? timeStamp) {
if (timeStamp == null || timeStamp == '0') {
return const Duration(milliseconds: 0);
}

return Duration(
milliseconds: (double.parse(timeStamp) * 1000).round(),
);
Expand Down Expand Up @@ -205,7 +206,9 @@ class AudioPlayerHandler extends BaseAudioHandler {
_audioPlayer.setAudioSource(
ClippingAudioSource(
start: parseTimeStamp(audio.startTimeStamp),
end: parseTimeStamp(audio.finishTimeStamp),
end: audio.finishTimeStamp == null
? null
: parseTimeStamp(audio.finishTimeStamp),
child: AudioSource.uri(
Uri.parse(
returnUrl(audio.fileName),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,25 +143,26 @@ class EnglishView extends StatelessWidget {
),
),
),
Container(
color: const Color(0xFF0a0a23),
margin: const EdgeInsets.all(8),
child: Row(
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Wrap(
children: model.getFillInBlankWidgets(
challenge,
context,
if (challenge.fillInTheBlank != null)
Container(
color: const Color(0xFF0a0a23),
margin: const EdgeInsets.all(8),
child: Row(
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Wrap(
children: model.getFillInBlankWidgets(
challenge,
context,
),
),
),
),
)
],
)
],
),
),
),
Row(
children: [
Expanded(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,14 +88,14 @@ class InnerAudioWidget extends StatelessWidget {
);

Duration? totalDuration = model.audioService.duration();

int handleTotal = totalDuration?.inMilliseconds ?? 0;
bool hasZeroValue = handleTotal == 0 || position.inMilliseconds == 0;
return Column(
children: [
if (totalDuration != null)
LinearProgressIndicator(
value: position.inMilliseconds / totalDuration.inMilliseconds,
minHeight: 8,
),
LinearProgressIndicator(
value: hasZeroValue ? 0 : position.inMilliseconds / handleTotal,
minHeight: 8,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Expand Down

0 comments on commit 42c8530

Please sign in to comment.