feat: STEM Virtual Lab, English TTS companion, dynamic textbooks and zero-demo video fallback
This commit is contained in:
@@ -85,6 +85,7 @@ class LessonPlaybackData {
|
||||
final String storageType;
|
||||
final List<LessonVersionModel> availableVersions;
|
||||
final List<SocraticCheckpointModel> checkpoints;
|
||||
final int? lastPositionSeconds;
|
||||
|
||||
const LessonPlaybackData({
|
||||
required this.lessonId,
|
||||
@@ -94,6 +95,7 @@ class LessonPlaybackData {
|
||||
this.storageType = 'api_upload',
|
||||
this.availableVersions = const [],
|
||||
this.checkpoints = const [],
|
||||
this.lastPositionSeconds,
|
||||
});
|
||||
|
||||
factory LessonPlaybackData.fromJson(Map<String, dynamic> json) {
|
||||
@@ -124,6 +126,8 @@ class LessonPlaybackData {
|
||||
playback['hls_url']?.toString() ?? playback['stream_url']?.toString() ?? playback['video_url']?.toString() ?? '',
|
||||
);
|
||||
|
||||
final lastPos = (json['last_position_seconds'] ?? playback['last_position_seconds'] ?? json['progress']?['position_seconds']) as num?;
|
||||
|
||||
return LessonPlaybackData(
|
||||
lessonId: (lesson['id'] as num?)?.toInt() ?? 0,
|
||||
title: lesson['title']?.toString() ?? 'الدرس التفاعلي',
|
||||
@@ -132,6 +136,7 @@ class LessonPlaybackData {
|
||||
storageType: playback['storage_type']?.toString() ?? 'api_upload',
|
||||
availableVersions: versions,
|
||||
checkpoints: points,
|
||||
lastPositionSeconds: lastPos?.toInt(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user