fix: disable background_downloader due to android build failures

This commit is contained in:
Kingkor Roy Tirtho 2023-06-10 15:31:48 +06:00
parent 0a49b56566
commit 7d23beec5e
4 changed files with 84 additions and 91 deletions

View File

@ -65,7 +65,8 @@ class UserDownloads extends HookConsumerWidget {
.where((element) => element.taskId == track.id), .where((element) => element.taskId == track.id),
); );
final taskItSelf = useFuture( final taskItSelf = useFuture(
FileDownloader().database.recordForId(track.id!), Future.value(null),
// FileDownloader().database.recordForId(track.id!),
); );
final hasFailed = failedTaskStream.hasData || final hasFailed = failedTaskStream.hasData ||

View File

@ -1,7 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'package:background_downloader/background_downloader.dart'; // import 'package:background_downloader/background_downloader.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:http/http.dart'; import 'package:http/http.dart';
@ -19,8 +19,8 @@ import 'package:spotube/utils/type_conversion_utils.dart';
class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> { class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> {
final Ref ref; final Ref ref;
final StreamController<TaskProgressUpdate> activeDownloadProgress; final StreamController /* <TaskProgressUpdate> */ activeDownloadProgress;
final StreamController<Task> failedDownloads; final StreamController /* <Task> */ failedDownloads;
Track? _activeItem; Track? _activeItem;
FutureOr<bool> Function(Track)? onFileExists; FutureOr<bool> Function(Track)? onFileExists;
@ -29,78 +29,78 @@ class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> {
: activeDownloadProgress = StreamController.broadcast(), : activeDownloadProgress = StreamController.broadcast(),
failedDownloads = StreamController.broadcast(), failedDownloads = StreamController.broadcast(),
super([]) { super([]) {
FileDownloader().registerCallbacks( // FileDownloader().registerCallbacks(
group: FileDownloader.defaultGroup, // group: FileDownloader.defaultGroup,
taskNotificationTapCallback: (task, notificationType) { // taskNotificationTapCallback: (task, notificationType) {
router.go("/library"); // router.go("/library");
}, // },
taskStatusCallback: (update) async { // taskStatusCallback: (update) async {
if (update.status == TaskStatus.running) { // if (update.status == TaskStatus.running) {
_activeItem = // _activeItem =
state.firstWhereOrNull((track) => track.id == update.task.taskId); // state.firstWhereOrNull((track) => track.id == update.task.taskId);
state = state.toList(); // state = state.toList();
} // }
if (update.status == TaskStatus.failed || // if (update.status == TaskStatus.failed ||
update.status == TaskStatus.notFound) { // update.status == TaskStatus.notFound) {
failedDownloads.add(update.task); // failedDownloads.add(update.task);
} // }
if (update.status == TaskStatus.complete) { // if (update.status == TaskStatus.complete) {
final track = // final track =
state.firstWhere((element) => element.id == update.task.taskId); // state.firstWhere((element) => element.id == update.task.taskId);
// resetting the replace downloaded file state on queue completion // // resetting the replace downloaded file state on queue completion
if (state.last == track) { // if (state.last == track) {
ref.read(replaceDownloadedFileState.notifier).state = null; // ref.read(replaceDownloadedFileState.notifier).state = null;
} // }
state = state // state = state
.where((element) => element.id != update.task.taskId) // .where((element) => element.id != update.task.taskId)
.toList(); // .toList();
final imageUri = TypeConversionUtils.image_X_UrlString( // final imageUri = TypeConversionUtils.image_X_UrlString(
track.album?.images ?? [], // track.album?.images ?? [],
placeholder: ImagePlaceholder.online, // placeholder: ImagePlaceholder.online,
); // );
final response = await get(Uri.parse(imageUri)); // final response = await get(Uri.parse(imageUri));
final tempFile = File(await update.task.filePath()); // final tempFile = File(await update.task.filePath());
final file = tempFile.copySync(_getPathForTrack(track)); // final file = tempFile.copySync(_getPathForTrack(track));
await tempFile.delete(); // await tempFile.delete();
await MetadataGod.writeMetadata( // await MetadataGod.writeMetadata(
file: file.path, // file: file.path,
metadata: Metadata( // metadata: Metadata(
title: track.name, // title: track.name,
artist: track.artists?.map((a) => a.name).join(", "), // artist: track.artists?.map((a) => a.name).join(", "),
album: track.album?.name, // album: track.album?.name,
albumArtist: track.artists?.map((a) => a.name).join(", "), // albumArtist: track.artists?.map((a) => a.name).join(", "),
year: track.album?.releaseDate != null // year: track.album?.releaseDate != null
? int.tryParse(track.album!.releaseDate!) // ? int.tryParse(track.album!.releaseDate!)
: null, // : null,
trackNumber: track.trackNumber, // trackNumber: track.trackNumber,
discNumber: track.discNumber, // discNumber: track.discNumber,
durationMs: track.durationMs?.toDouble(), // durationMs: track.durationMs?.toDouble(),
fileSize: file.lengthSync(), // fileSize: file.lengthSync(),
trackTotal: track.album?.tracks?.length, // trackTotal: track.album?.tracks?.length,
picture: response.headers['content-type'] != null // picture: response.headers['content-type'] != null
? Picture( // ? Picture(
data: response.bodyBytes, // data: response.bodyBytes,
mimeType: response.headers['content-type']!, // mimeType: response.headers['content-type']!,
) // )
: null, // : null,
), // ),
); // );
} // }
}, // },
taskProgressCallback: (update) { // taskProgressCallback: (update) {
activeDownloadProgress.add(update); // activeDownloadProgress.add(update);
}, // },
); // );
FileDownloader().trackTasks(markDownloadedComplete: true); // FileDownloader().trackTasks(markDownloadedComplete: true);
} }
UserPreferences get preferences => ref.read(userPreferencesProvider); UserPreferences get preferences => ref.read(userPreferencesProvider);
@ -115,9 +115,9 @@ class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> {
"${track.name} - ${track.artists?.map((a) => a.name).join(", ")}.m4a", "${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)) { 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) { if (task != null) {
return task; return task;
} }
@ -133,16 +133,17 @@ class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> {
pipedClient, pipedClient,
); );
state = [...state, spotubeTrack]; state = [...state, spotubeTrack];
final task = DownloadTask( // final task = DownloadTask(
url: spotubeTrack.ytUri, // url: spotubeTrack.ytUri,
baseDirectory: BaseDirectory.applicationSupport, // baseDirectory: BaseDirectory.applicationSupport,
taskId: spotubeTrack.id!, // taskId: spotubeTrack.id!,
updates: Updates.statusAndProgress, // updates: Updates.statusAndProgress,
); // );
return task; // return task;
return null;
} }
Future<Task?> enqueue(Track track) async { Future /* <Task?> */ enqueue(Track track) async {
final replaceFileGlobal = ref.read(replaceDownloadedFileState); final replaceFileGlobal = ref.read(replaceDownloadedFileState);
final file = File(_getPathForTrack(track)); final file = File(_getPathForTrack(track));
if (file.existsSync() && if (file.existsSync() &&
@ -155,11 +156,11 @@ class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> {
final task = await _ensureSpotubeTrack(track); final task = await _ensureSpotubeTrack(track);
await FileDownloader().enqueue(task); // await FileDownloader().enqueue(task);
return 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) { final tasks = await Future.wait(tracks.mapIndexed((i, e) {
if (i != 0) { if (i != 0) {
/// One second delay between each download to avoid /// One second delay between each download to avoid
@ -173,16 +174,16 @@ class DownloadManagerProvider extends StateNotifier<List<SpotubeTrack>> {
ref.read(replaceDownloadedFileState.notifier).state = null; ref.read(replaceDownloadedFileState.notifier).state = null;
} }
return tasks.whereType<Task>().toList(); return tasks. /* whereType<Task>(). */ toList();
} }
Future<void> cancel(Track track) async { 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(); state = state.where((element) => element.id != track.id).toList();
} }
Future<void> cancelAll() async { Future<void> cancelAll() async {
(await FileDownloader().reset()); // (await FileDownloader().reset());
state = []; state = [];
} }
} }

View File

@ -153,14 +153,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.0" 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: badges:
dependency: "direct main" dependency: "direct main"
description: description:

View File

@ -103,7 +103,6 @@ dependencies:
media_kit_native_event_loop: ^1.0.4 media_kit_native_event_loop: ^1.0.4
dbus: ^0.7.8 dbus: ^0.7.8
motion_toast: ^2.6.8 motion_toast: ^2.6.8
background_downloader: ^7.3.1
dev_dependencies: dev_dependencies:
build_runner: ^2.3.2 build_runner: ^2.3.2