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
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final mediaQuery = MediaQuery.of(context);
|
final mediaQuery = MediaQuery.of(context);
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
|
||||||
final controller = useAutoScrollController();
|
final controller = useAutoScrollController();
|
||||||
final searchText = useState('');
|
final searchText = useState('');
|
||||||
|
|
||||||
@ -241,7 +240,7 @@ class PlayerQueue extends HookConsumerWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
playlistNotifier.stop();
|
onStop();
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@ -251,9 +250,7 @@ class PlayerQueue extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
const SliverGap(10),
|
const SliverGap(10),
|
||||||
SliverReorderableList(
|
SliverReorderableList(
|
||||||
onReorder: (oldIndex, newIndex) {
|
onReorder: onReorder,
|
||||||
playlistNotifier.moveTrack(oldIndex, newIndex);
|
|
||||||
},
|
|
||||||
itemCount: filteredTracks.length,
|
itemCount: filteredTracks.length,
|
||||||
onReorderStart: (index) {
|
onReorderStart: (index) {
|
||||||
HapticFeedback.selectionClick();
|
HapticFeedback.selectionClick();
|
||||||
@ -277,7 +274,7 @@ class PlayerQueue extends HookConsumerWidget {
|
|||||||
if (playlist.activeTrack?.id == track.id) {
|
if (playlist.activeTrack?.id == track.id) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await playlistNotifier.jumpToTrack(track);
|
await onJump(track);
|
||||||
},
|
},
|
||||||
leadingActions: [
|
leadingActions: [
|
||||||
if (!isSearching.value &&
|
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/services/audio_player/loop_mode.dart';
|
||||||
import 'package:spotube/utils/service_utils.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 {
|
class ConnectControlPage extends HookConsumerWidget {
|
||||||
const ConnectControlPage({super.key});
|
const ConnectControlPage({super.key});
|
||||||
|
|
||||||
@ -50,27 +77,6 @@ class ConnectControlPage extends HookConsumerWidget {
|
|||||||
minimumSize: const Size(28, 28),
|
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) {
|
ref.listen(connectClientsProvider, (prev, next) {
|
||||||
if (next.asData?.value.resolvedService == null) {
|
if (next.asData?.value.resolvedService == null) {
|
||||||
context.pop();
|
context.pop();
|
||||||
@ -292,7 +298,7 @@ class ConnectControlPage extends HookConsumerWidget {
|
|||||||
showModalBottomSheet(
|
showModalBottomSheet(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return playerQueue;
|
return const RemotePlayerQueue();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -304,8 +310,8 @@ class ConnectControlPage extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
if (constrains.lgAndUp) ...[
|
if (constrains.lgAndUp) ...[
|
||||||
const VerticalDivider(thickness: 1),
|
const VerticalDivider(thickness: 1),
|
||||||
Expanded(
|
const Expanded(
|
||||||
child: playerQueue,
|
child: RemotePlayerQueue(),
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
|||||||
@ -64,10 +64,10 @@ class ConnectClientsNotifier extends AsyncNotifier<ConnectClientsState> {
|
|||||||
.where((s) => s.name != event.service!.name)
|
.where((s) => s.name != event.service!.name)
|
||||||
.toList(),
|
.toList(),
|
||||||
discovery: state.value!.discovery,
|
discovery: state.value!.discovery,
|
||||||
resolvedService:
|
resolvedService: state.value?.resolvedService != null &&
|
||||||
event.service?.name == state.value!.resolvedService!.name
|
event.service?.name == state.value?.resolvedService?.name
|
||||||
? null
|
? null
|
||||||
: state.value!.resolvedService,
|
: state.value!.resolvedService,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user