Skip to content

Commit

Permalink
fix: disable background_downloader due to android build failures
Browse files Browse the repository at this point in the history
  • Loading branch information
KRTirtho committed Jun 10, 2023
1 parent 0a49b56 commit 7d23bee
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 100 deletions.
3 changes: 2 additions & 1 deletion lib/components/library/user_downloads.dart
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ class UserDownloads extends HookConsumerWidget {
.where((element) => element.taskId == track.id),
);
final taskItSelf = useFuture(
FileDownloader().database.recordForId(track.id!),
Future.value(null),
// FileDownloader().database.recordForId(track.id!),
);

final hasFailed = failedTaskStream.hasData ||
Expand Down
181 changes: 91 additions & 90 deletions lib/provider/download_manager_provider.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'dart:async';
import 'dart:io';

import 'package:background_downloader/background_downloader.dart';
// import 'package:background_downloader/background_downloader.dart';
import 'package:collection/collection.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:http/http.dart';
Expand All @@ -19,8 +19,8 @@ import 'package:spotube/utils/type_conversion_utils.dart';
class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> {
final Ref ref;

final StreamController<TaskProgressUpdate> activeDownloadProgress;
final StreamController<Task> failedDownloads;
final StreamController /* <TaskProgressUpdate> */ activeDownloadProgress;
final StreamController /* <Task> */ failedDownloads;
Track? _activeItem;

FutureOr<bool> Function(Track)? onFileExists;
Expand All @@ -29,78 +29,78 @@ class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> {
: activeDownloadProgress = StreamController.broadcast(),
failedDownloads = StreamController.broadcast(),
super([]) {
FileDownloader().registerCallbacks(
group: FileDownloader.defaultGroup,
taskNotificationTapCallback: (task, notificationType) {
router.go("/library");
},
taskStatusCallback: (update) async {
if (update.status == TaskStatus.running) {
_activeItem =
state.firstWhereOrNull((track) => track.id == update.task.taskId);
state = state.toList();
}

if (update.status == TaskStatus.failed ||
update.status == TaskStatus.notFound) {
failedDownloads.add(update.task);
}

if (update.status == TaskStatus.complete) {
final track =
state.firstWhere((element) => element.id == update.task.taskId);

// resetting the replace downloaded file state on queue completion
if (state.last == track) {
ref.read(replaceDownloadedFileState.notifier).state = null;
}

state = state
.where((element) => element.id != update.task.taskId)
.toList();

final imageUri = TypeConversionUtils.image_X_UrlString(
track.album?.images ?? [],
placeholder: ImagePlaceholder.online,
);
final response = await get(Uri.parse(imageUri));

final tempFile = File(await update.task.filePath());

final file = tempFile.copySync(_getPathForTrack(track));

await tempFile.delete();

await MetadataGod.writeMetadata(
file: file.path,
metadata: Metadata(
title: track.name,
artist: track.artists?.map((a) => a.name).join(", "),
album: track.album?.name,
albumArtist: track.artists?.map((a) => a.name).join(", "),
year: track.album?.releaseDate != null
? int.tryParse(track.album!.releaseDate!)
: null,
trackNumber: track.trackNumber,
discNumber: track.discNumber,
durationMs: track.durationMs?.toDouble(),
fileSize: file.lengthSync(),
trackTotal: track.album?.tracks?.length,
picture: response.headers['content-type'] != null
? Picture(
data: response.bodyBytes,
mimeType: response.headers['content-type']!,
)
: null,
),
);
}
},
taskProgressCallback: (update) {
activeDownloadProgress.add(update);
},
);
FileDownloader().trackTasks(markDownloadedComplete: true);
// FileDownloader().registerCallbacks(
// group: FileDownloader.defaultGroup,
// taskNotificationTapCallback: (task, notificationType) {
// router.go("/library");
// },
// taskStatusCallback: (update) async {
// if (update.status == TaskStatus.running) {
// _activeItem =
// state.firstWhereOrNull((track) => track.id == update.task.taskId);
// state = state.toList();
// }

// if (update.status == TaskStatus.failed ||
// update.status == TaskStatus.notFound) {
// failedDownloads.add(update.task);
// }

// if (update.status == TaskStatus.complete) {
// final track =
// state.firstWhere((element) => element.id == update.task.taskId);

// // resetting the replace downloaded file state on queue completion
// if (state.last == track) {
// ref.read(replaceDownloadedFileState.notifier).state = null;
// }

// state = state
// .where((element) => element.id != update.task.taskId)
// .toList();

// final imageUri = TypeConversionUtils.image_X_UrlString(
// track.album?.images ?? [],
// placeholder: ImagePlaceholder.online,
// );
// final response = await get(Uri.parse(imageUri));

// final tempFile = File(await update.task.filePath());

// final file = tempFile.copySync(_getPathForTrack(track));

// await tempFile.delete();

// await MetadataGod.writeMetadata(
// file: file.path,
// metadata: Metadata(
// title: track.name,
// artist: track.artists?.map((a) => a.name).join(", "),
// album: track.album?.name,
// albumArtist: track.artists?.map((a) => a.name).join(", "),
// year: track.album?.releaseDate != null
// ? int.tryParse(track.album!.releaseDate!)
// : null,
// trackNumber: track.trackNumber,
// discNumber: track.discNumber,
// durationMs: track.durationMs?.toDouble(),
// fileSize: file.lengthSync(),
// trackTotal: track.album?.tracks?.length,
// picture: response.headers['content-type'] != null
// ? Picture(
// data: response.bodyBytes,
// mimeType: response.headers['content-type']!,
// )
// : null,
// ),
// );
// }
// },
// taskProgressCallback: (update) {
// activeDownloadProgress.add(update);
// },
// );
// FileDownloader().trackTasks(markDownloadedComplete: true);
}

UserPreferences get preferences => ref.read(userPreferencesProvider);
Expand All @@ -115,9 +115,9 @@ class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> {
"${track.name} - ${track.artists?.map((a) => a.name).join(", ")}.m4a",
);

Future<Task> _ensureSpotubeTrack(Track track) async {
Future /* <Task> */ _ensureSpotubeTrack(Track track) async {
if (state.any((element) => element.id == track.id)) {
final task = await FileDownloader().taskForId(track.id!);
final task = null /* await FileDownloader().taskForId(track.id!) */;
if (task != null) {
return task;
}
Expand All @@ -133,16 +133,17 @@ class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> {
pipedClient,
);
state = [...state, spotubeTrack];
final task = DownloadTask(
url: spotubeTrack.ytUri,
baseDirectory: BaseDirectory.applicationSupport,
taskId: spotubeTrack.id!,
updates: Updates.statusAndProgress,
);
return task;
// final task = DownloadTask(
// url: spotubeTrack.ytUri,
// baseDirectory: BaseDirectory.applicationSupport,
// taskId: spotubeTrack.id!,
// updates: Updates.statusAndProgress,
// );
// return task;
return null;
}

Future<Task?> enqueue(Track track) async {
Future /* <Task?> */ enqueue(Track track) async {
final replaceFileGlobal = ref.read(replaceDownloadedFileState);
final file = File(_getPathForTrack(track));
if (file.existsSync() &&
Expand All @@ -155,11 +156,11 @@ class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> {

final task = await _ensureSpotubeTrack(track);

await FileDownloader().enqueue(task);
// await FileDownloader().enqueue(task);
return task;
}

Future<List<Task>> enqueueAll(List<Track> tracks) async {
Future<List /* <Task> */ > enqueueAll(List<Track> tracks) async {
final tasks = await Future.wait(tracks.mapIndexed((i, e) {
if (i != 0) {
/// One second delay between each download to avoid
Expand All @@ -173,16 +174,16 @@ class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> {
ref.read(replaceDownloadedFileState.notifier).state = null;
}

return tasks.whereType<Task>().toList();
return tasks. /* whereType<Task>(). */ toList();
}

Future<void> cancel(Track track) async {
await FileDownloader().cancelTaskWithId(track.id!);
// await FileDownloader().cancelTaskWithId(track.id!);
state = state.where((element) => element.id != track.id).toList();
}

Future<void> cancelAll() async {
(await FileDownloader().reset());
// (await FileDownloader().reset());
state = [];
}
}
Expand Down
8 changes: 0 additions & 8 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -153,14 +153,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.0.0"
background_downloader:
dependency: "direct main"
description:
name: background_downloader
sha256: "58318c7141ac30c559004a58ab2fdbdb5433e37227a926196b88525085af3d8e"
url: "https://pub.dev"
source: hosted
version: "7.3.1"
badges:
dependency: "direct main"
description:
Expand Down
1 change: 0 additions & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@ dependencies:
media_kit_native_event_loop: ^1.0.4
dbus: ^0.7.8
motion_toast: ^2.6.8
background_downloader: ^7.3.1

dev_dependencies:
build_runner: ^2.3.2
Expand Down

0 comments on commit 7d23bee

Please sign in to comment.