mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 16:05:18 +00:00
fix: cached currently playing track infinite loading
This commit is contained in:
parent
957c085e12
commit
94017189c6
@ -15,6 +15,7 @@ import 'package:spotube/provider/proxy_playlist/proxy_playlist.dart';
|
|||||||
import 'package:spotube/provider/user_preferences_provider.dart';
|
import 'package:spotube/provider/user_preferences_provider.dart';
|
||||||
import 'package:spotube/services/audio_player/audio_player.dart';
|
import 'package:spotube/services/audio_player/audio_player.dart';
|
||||||
import 'package:spotube/services/audio_services/audio_services.dart';
|
import 'package:spotube/services/audio_services/audio_services.dart';
|
||||||
|
import 'package:spotube/services/youtube.dart';
|
||||||
import 'package:spotube/utils/persisted_state_notifier.dart';
|
import 'package:spotube/utils/persisted_state_notifier.dart';
|
||||||
import 'package:spotube/utils/type_conversion_utils.dart';
|
import 'package:spotube/utils/type_conversion_utils.dart';
|
||||||
|
|
||||||
@ -215,12 +216,15 @@ class ProxyPlaylistNotifier extends PersistedStateNotifier<ProxyPlaylist>
|
|||||||
int initialIndex = 0,
|
int initialIndex = 0,
|
||||||
bool autoPlay = false,
|
bool autoPlay = false,
|
||||||
}) async {
|
}) async {
|
||||||
|
try {
|
||||||
tracks = blacklist.filter(tracks).toList() as List<Track>;
|
tracks = blacklist.filter(tracks).toList() as List<Track>;
|
||||||
final addableTrack = await SpotubeTrack.fetchFromTrack(
|
final addableTrack = await SpotubeTrack.fetchFromTrack(
|
||||||
tracks.elementAt(initialIndex),
|
tracks.elementAt(initialIndex),
|
||||||
preferences,
|
preferences,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
print('addableTrack: $addableTrack');
|
||||||
|
|
||||||
state = state.copyWith(
|
state = state.copyWith(
|
||||||
tracks: mergeTracks([addableTrack], tracks),
|
tracks: mergeTracks([addableTrack], tracks),
|
||||||
active: initialIndex,
|
active: initialIndex,
|
||||||
@ -238,6 +242,9 @@ class ProxyPlaylistNotifier extends PersistedStateNotifier<ProxyPlaylist>
|
|||||||
tracks.elementAt(initialIndex),
|
tracks.elementAt(initialIndex),
|
||||||
addableTrack,
|
addableTrack,
|
||||||
);
|
);
|
||||||
|
} catch (e) {
|
||||||
|
print('Error: $e');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> jumpTo(int index) async {
|
Future<void> jumpTo(int index) async {
|
||||||
@ -404,15 +411,17 @@ class ProxyPlaylistNotifier extends PersistedStateNotifier<ProxyPlaylist>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
onInit() {
|
onInit() async {
|
||||||
if (state.tracks.isEmpty) return null;
|
if (state.tracks.isEmpty) return null;
|
||||||
|
|
||||||
return load(
|
if (await PipedSpotube.initialized) {
|
||||||
|
await load(
|
||||||
state.tracks,
|
state.tracks,
|
||||||
initialIndex: state.active ?? 0,
|
initialIndex: state.active ?? 0,
|
||||||
autoPlay: false,
|
autoPlay: false,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
FutureOr<ProxyPlaylist> fromJson(Map<String, dynamic> json) {
|
FutureOr<ProxyPlaylist> fromJson(Map<String, dynamic> json) {
|
||||||
|
@ -1,8 +1,13 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:piped_client/piped_client.dart';
|
import 'package:piped_client/piped_client.dart';
|
||||||
|
|
||||||
PipedClient _defaultClient = PipedClient();
|
PipedClient _defaultClient = PipedClient();
|
||||||
|
|
||||||
class PipedSpotube {
|
class PipedSpotube {
|
||||||
|
static final Completer<bool> _initialized = Completer();
|
||||||
|
static Future<bool> get initialized => _initialized.future;
|
||||||
|
|
||||||
/// Checks for a working instance of piped.video
|
/// Checks for a working instance of piped.video
|
||||||
///
|
///
|
||||||
/// To distribute the load, in each startup it randomizes public instances
|
/// To distribute the load, in each startup it randomizes public instances
|
||||||
@ -15,6 +20,7 @@ class PipedSpotube {
|
|||||||
try {
|
try {
|
||||||
await client.streams("dQw4w9WgXcQ");
|
await client.streams("dQw4w9WgXcQ");
|
||||||
_defaultClient = client;
|
_defaultClient = client;
|
||||||
|
_initialized.complete(true);
|
||||||
break;
|
break;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user