Skip to content

Commit b8ad4e5

Browse files
committed
fix web and podcast crash
1 parent 0ed8cc0 commit b8ad4e5

File tree

9 files changed

+45
-40
lines changed

9 files changed

+45
-40
lines changed

lib/api/library_items/audio_file.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ part 'audio_file.g.dart';
99
@freezed
1010
class AudioFile with _$AudioFile {
1111
const factory AudioFile({
12-
@JsonKey(name: "index") required int index,
12+
@JsonKey(name: "index") int? index,
1313
@JsonKey(name: "ino") required String ino,
1414
@JsonKey(name: "metadata") required LibraryFileMetadata metadata,
1515
@JsonKey(name: "addedAt") required int addedAt,

lib/api/library_items/audio_file.freezed.dart

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/api/library_items/audio_file.g.dart

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/api/library_items/audio_track.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class AudioTrack with _$AudioTrack {
99
const AudioTrack._();
1010

1111
const factory AudioTrack({
12-
@JsonKey(name: "index") required int index,
12+
@JsonKey(name: "index") int? index,
1313
@JsonKey(name: "startOffset") required double startOffset,
1414
@JsonKey(name: "duration") required double duration,
1515
@JsonKey(name: "title") required String title,

lib/api/library_items/audio_track.freezed.dart

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/api/library_items/audio_track.g.dart

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/provider/downloader_provider.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:async';
22
import 'dart:convert';
33
import 'dart:io';
4+
import 'dart:math' as math;
45

56
import 'package:abs_flutter/api/library_items/audio_file.dart';
67
import 'package:abs_flutter/api/library_items/episode.dart';
@@ -215,16 +216,18 @@ class DownloadProvider extends ChangeNotifier {
215216

216217
final List<AudioFile> audioFiles = item.media!.bookMedia!.audioFiles!;
217218
final List<DownloadFile> files = [];
219+
int fallbackIndex = 1;
218220
for (AudioFile file in audioFiles) {
219221
files.add(DownloadFile(
220-
index: file.index,
222+
index: file.index ?? fallbackIndex,
221223
ino: file.ino,
222224
filename: file.metadata.filename,
223225
size: file.metadata.size,
224226
status: TaskStatus.enqueued,
225227
duration: file.duration,
226228
format: file.metadata.ext,
227229
));
230+
fallbackIndex++;
228231
}
229232

230233
final downloadInfo = DownloadInfo(
@@ -324,8 +327,9 @@ class DownloadProvider extends ChangeNotifier {
324327
.firstWhere((library) => library.id == libraryItem.libraryId)
325328
.name!,
326329
files: [
330+
// TODO: ABS does not assigns a index to uploaded podcast episodes. Random
327331
DownloadFile(
328-
index: item.audioFile!.index,
332+
index: item.audioFile!.index ?? math.Random().nextInt(10000),
329333
filename: item.audioFile!.metadata.filename,
330334
size: item.audioFile!.metadata.size,
331335
status: TaskStatus.enqueued,

pubspec.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -801,10 +801,10 @@ packages:
801801
dependency: "direct main"
802802
description:
803803
name: just_audio
804-
sha256: f978d5b4ccea08f267dae0232ec5405c1b05d3f3cd63f82097ea46c015d5c09e
804+
sha256: "50ed9f0ba88012eabdef7519ba6040bdbcf6c6667ebd77736fb25c196c98c0f3"
805805
url: "https://pub.dev"
806806
source: hosted
807-
version: "0.9.46"
807+
version: "0.9.44"
808808
just_audio_media_kit:
809809
dependency: "direct main"
810810
description:
@@ -817,18 +817,18 @@ packages:
817817
dependency: transitive
818818
description:
819819
name: just_audio_platform_interface
820-
sha256: "271b93b484c6f494ecd72a107fffbdb26b425f170c665b9777a0a24a726f2f24"
820+
sha256: "4cd94536af0219fa306205a58e78d67e02b0555283c1c094ee41e402a14a5c4a"
821821
url: "https://pub.dev"
822822
source: hosted
823-
version: "4.4.0"
823+
version: "4.5.0"
824824
just_audio_web:
825-
dependency: transitive
825+
dependency: "direct dev"
826826
description:
827827
name: just_audio_web
828-
sha256: "58915be64509a7683c44bf11cd1a23c15a48de104927bee116e3c63c8eeea0d4"
828+
sha256: "9a98035b8b24b40749507687520ec5ab404e291d2b0937823ff45d92cb18d448"
829829
url: "https://pub.dev"
830830
source: hosted
831-
version: "0.4.14"
831+
version: "0.4.13"
832832
just_audio_windows:
833833
dependency: "direct main"
834834
description:

pubspec.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ dependencies:
3030
cached_network_image: ^3.3.1
3131
flutter_staggered_grid_view: ^0.7.0
3232
connectivity_plus: ^6.0.3
33-
just_audio: ^0.9.46
33+
just_audio: 0.9.44 # The method 'setSinkId' isn't defined for the class 'HTMLAudioElement'. for 0.9.45+
3434
audio_service: ^0.18.15
3535
package_info_plus: ^8.0.1
3636
just_audio_windows: ^0.2.2
@@ -85,6 +85,7 @@ dev_dependencies:
8585
msix: ^3.16.7
8686
icons_launcher: ^3.0.0
8787
intl_utils: ^2.8.10
88+
just_audio_web: 0.4.13
8889

8990
dependency_overrides:
9091
meta: ^1.14.0

0 commit comments

Comments
 (0)