mirror of
https://github.com/KRTirtho/spotube.git
synced 2026-05-08 16:24:36 +00:00
fix: remote queue not working
This commit is contained in:
parent
7385088144
commit
9ca0e8bef2
@ -53,8 +53,7 @@ class PlayerQueue extends HookConsumerWidget {
|
||||
@override
|
||||
Widget build(BuildContext context, ref) {
|
||||
final mediaQuery = MediaQuery.of(context);
|
||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
||||
|
||||
final controller = useAutoScrollController();
|
||||
final searchText = useState('');
|
||||
|
||||
@ -241,7 +240,7 @@ class PlayerQueue extends HookConsumerWidget {
|
||||
],
|
||||
),
|
||||
onPressed: () {
|
||||
playlistNotifier.stop();
|
||||
onStop();
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
),
|
||||
@ -251,9 +250,7 @@ class PlayerQueue extends HookConsumerWidget {
|
||||
),
|
||||
const SliverGap(10),
|
||||
SliverReorderableList(
|
||||
onReorder: (oldIndex, newIndex) {
|
||||
playlistNotifier.moveTrack(oldIndex, newIndex);
|
||||
},
|
||||
onReorder: onReorder,
|
||||
itemCount: filteredTracks.length,
|
||||
onReorderStart: (index) {
|
||||
HapticFeedback.selectionClick();
|
||||
@ -277,7 +274,7 @@ class PlayerQueue extends HookConsumerWidget {
|
||||
if (playlist.activeTrack?.id == track.id) {
|
||||
return;
|
||||
}
|
||||
await playlistNotifier.jumpToTrack(track);
|
||||
await onJump(track);
|
||||
},
|
||||
leadingActions: [
|
||||
if (!isSearching.value &&
|
||||
|
||||
@ -18,6 +18,33 @@ import 'package:spotube/provider/connect/connect.dart';
|
||||
import 'package:spotube/services/audio_player/loop_mode.dart';
|
||||
import 'package:spotube/utils/service_utils.dart';
|
||||
|
||||
class RemotePlayerQueue extends ConsumerWidget {
|
||||
const RemotePlayerQueue({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, ref) {
|
||||
final connectNotifier = ref.watch(connectProvider.notifier);
|
||||
final playlist = ref.watch(queueProvider);
|
||||
return PlayerQueue(
|
||||
playlist: playlist,
|
||||
floating: true,
|
||||
onJump: (track) async {
|
||||
final index = playlist.tracks.toList().indexOf(track);
|
||||
connectNotifier.jumpTo(index);
|
||||
},
|
||||
onRemove: (track) async {
|
||||
await connectNotifier.removeTrack(track);
|
||||
},
|
||||
onStop: () async => connectNotifier.stop(),
|
||||
onReorder: (oldIndex, newIndex) async {
|
||||
await connectNotifier.reorder(
|
||||
(oldIndex: oldIndex, newIndex: newIndex),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class ConnectControlPage extends HookConsumerWidget {
|
||||
const ConnectControlPage({super.key});
|
||||
|
||||
@ -50,27 +77,6 @@ class ConnectControlPage extends HookConsumerWidget {
|
||||
minimumSize: const Size(28, 28),
|
||||
);
|
||||
|
||||
final playerQueue = Consumer(builder: (context, ref, _) {
|
||||
final playlist = ref.watch(queueProvider);
|
||||
return PlayerQueue(
|
||||
playlist: playlist,
|
||||
floating: true,
|
||||
onJump: (track) async {
|
||||
final index = playlist.tracks.toList().indexOf(track);
|
||||
connectNotifier.jumpTo(index);
|
||||
},
|
||||
onRemove: (track) async {
|
||||
await connectNotifier.removeTrack(track);
|
||||
},
|
||||
onStop: () async => connectNotifier.stop(),
|
||||
onReorder: (oldIndex, newIndex) async {
|
||||
await connectNotifier.reorder(
|
||||
(oldIndex: oldIndex, newIndex: newIndex),
|
||||
);
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
ref.listen(connectClientsProvider, (prev, next) {
|
||||
if (next.asData?.value.resolvedService == null) {
|
||||
context.pop();
|
||||
@ -292,7 +298,7 @@ class ConnectControlPage extends HookConsumerWidget {
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return playerQueue;
|
||||
return const RemotePlayerQueue();
|
||||
},
|
||||
);
|
||||
},
|
||||
@ -304,8 +310,8 @@ class ConnectControlPage extends HookConsumerWidget {
|
||||
),
|
||||
if (constrains.lgAndUp) ...[
|
||||
const VerticalDivider(thickness: 1),
|
||||
Expanded(
|
||||
child: playerQueue,
|
||||
const Expanded(
|
||||
child: RemotePlayerQueue(),
|
||||
),
|
||||
]
|
||||
],
|
||||
|
||||
@ -64,10 +64,10 @@ class ConnectClientsNotifier extends AsyncNotifier<ConnectClientsState> {
|
||||
.where((s) => s.name != event.service!.name)
|
||||
.toList(),
|
||||
discovery: state.value!.discovery,
|
||||
resolvedService:
|
||||
event.service?.name == state.value!.resolvedService!.name
|
||||
? null
|
||||
: state.value!.resolvedService,
|
||||
resolvedService: state.value?.resolvedService != null &&
|
||||
event.service?.name == state.value?.resolvedService?.name
|
||||
? null
|
||||
: state.value!.resolvedService,
|
||||
),
|
||||
);
|
||||
break;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user