mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-15 00:25:17 +00:00
fix(player): queue button not showing when not logged in
This commit is contained in:
parent
bcfbecc40a
commit
6c2d65587b
@ -22,10 +22,12 @@ import 'package:spotube/utils/type_conversion_utils.dart';
|
|||||||
class PlayerActions extends HookConsumerWidget {
|
class PlayerActions extends HookConsumerWidget {
|
||||||
final MainAxisAlignment mainAxisAlignment;
|
final MainAxisAlignment mainAxisAlignment;
|
||||||
final bool floatingQueue;
|
final bool floatingQueue;
|
||||||
|
final bool showQueue;
|
||||||
final List<Widget>? extraActions;
|
final List<Widget>? extraActions;
|
||||||
PlayerActions({
|
PlayerActions({
|
||||||
this.mainAxisAlignment = MainAxisAlignment.center,
|
this.mainAxisAlignment = MainAxisAlignment.center,
|
||||||
this.floatingQueue = true,
|
this.floatingQueue = true,
|
||||||
|
this.showQueue = true,
|
||||||
this.extraActions,
|
this.extraActions,
|
||||||
Key? key,
|
Key? key,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
@ -72,6 +74,7 @@ class PlayerActions extends HookConsumerWidget {
|
|||||||
return Row(
|
return Row(
|
||||||
mainAxisAlignment: mainAxisAlignment,
|
mainAxisAlignment: mainAxisAlignment,
|
||||||
children: [
|
children: [
|
||||||
|
if (showQueue)
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: const Icon(SpotubeIcons.queue),
|
icon: const Icon(SpotubeIcons.queue),
|
||||||
tooltip: context.l10n.queue,
|
tooltip: context.l10n.queue,
|
||||||
|
@ -10,6 +10,7 @@ import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart'
|
|||||||
import 'package:spotube/components/shared/waypoint.dart';
|
import 'package:spotube/components/shared/waypoint.dart';
|
||||||
import 'package:spotube/extensions/context.dart';
|
import 'package:spotube/extensions/context.dart';
|
||||||
import 'package:spotube/models/logger.dart';
|
import 'package:spotube/models/logger.dart';
|
||||||
|
import 'package:spotube/provider/authentication_provider.dart';
|
||||||
import 'package:spotube/services/queries/queries.dart';
|
import 'package:spotube/services/queries/queries.dart';
|
||||||
import 'package:spotube/utils/type_conversion_utils.dart';
|
import 'package:spotube/utils/type_conversion_utils.dart';
|
||||||
|
|
||||||
@ -94,6 +95,7 @@ class PersonalizedPage extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
final auth = ref.watch(AuthenticationNotifier.provider);
|
||||||
final featuredPlaylistsQuery = useQueries.playlist.featured(ref);
|
final featuredPlaylistsQuery = useQueries.playlist.featured(ref);
|
||||||
final playlists = useMemoized(
|
final playlists = useMemoized(
|
||||||
() => featuredPlaylistsQuery.pages
|
() => featuredPlaylistsQuery.pages
|
||||||
@ -132,6 +134,7 @@ class PersonalizedPage extends HookConsumerWidget {
|
|||||||
hasNextPage: featuredPlaylistsQuery.hasNextPage,
|
hasNextPage: featuredPlaylistsQuery.hasNextPage,
|
||||||
onFetchMore: featuredPlaylistsQuery.fetchNext,
|
onFetchMore: featuredPlaylistsQuery.fetchNext,
|
||||||
),
|
),
|
||||||
|
if (auth != null)
|
||||||
PersonalizedItemCard(
|
PersonalizedItemCard(
|
||||||
albums: albums,
|
albums: albums,
|
||||||
title: context.l10n.new_releases,
|
title: context.l10n.new_releases,
|
||||||
|
@ -9,6 +9,7 @@ import 'package:spotube/collections/assets.gen.dart';
|
|||||||
import 'package:spotube/collections/spotube_icons.dart';
|
import 'package:spotube/collections/spotube_icons.dart';
|
||||||
import 'package:spotube/components/player/player_actions.dart';
|
import 'package:spotube/components/player/player_actions.dart';
|
||||||
import 'package:spotube/components/player/player_controls.dart';
|
import 'package:spotube/components/player/player_controls.dart';
|
||||||
|
import 'package:spotube/components/player/player_queue.dart';
|
||||||
import 'package:spotube/components/player/volume_slider.dart';
|
import 'package:spotube/components/player/volume_slider.dart';
|
||||||
import 'package:spotube/components/shared/animated_gradient.dart';
|
import 'package:spotube/components/shared/animated_gradient.dart';
|
||||||
import 'package:spotube/components/shared/dialogs/track_details_dialog.dart';
|
import 'package:spotube/components/shared/dialogs/track_details_dialog.dart';
|
||||||
@ -77,6 +78,24 @@ class PlayerView extends HookConsumerWidget {
|
|||||||
foregroundColor: titleTextColor,
|
foregroundColor: titleTextColor,
|
||||||
toolbarOpacity: 1,
|
toolbarOpacity: 1,
|
||||||
leading: const BackButton(),
|
leading: const BackButton(),
|
||||||
|
actions: [
|
||||||
|
IconButton(
|
||||||
|
icon: const Icon(SpotubeIcons.info, size: 18),
|
||||||
|
tooltip: context.l10n.details,
|
||||||
|
style: IconButton.styleFrom(foregroundColor: bodyTextColor),
|
||||||
|
onPressed: currentTrack == null
|
||||||
|
? null
|
||||||
|
: () {
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
builder: (context) {
|
||||||
|
return TrackDetailsDialog(
|
||||||
|
track: currentTrack,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
)
|
||||||
|
],
|
||||||
),
|
),
|
||||||
extendBodyBehindAppBar: true,
|
extendBodyBehindAppBar: true,
|
||||||
body: SizedBox(
|
body: SizedBox(
|
||||||
@ -183,38 +202,53 @@ class PlayerView extends HookConsumerWidget {
|
|||||||
const SizedBox(height: 25),
|
const SizedBox(height: 25),
|
||||||
PlayerActions(
|
PlayerActions(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
floatingQueue: false,
|
showQueue: false,
|
||||||
),
|
),
|
||||||
const SizedBox(height: 10),
|
const SizedBox(height: 10),
|
||||||
if (auth != null)
|
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
children: [
|
children: [
|
||||||
const SizedBox(width: 10),
|
const SizedBox(width: 10),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: OutlinedButton.icon(
|
child: OutlinedButton.icon(
|
||||||
icon: const Icon(SpotubeIcons.info),
|
icon: const Icon(SpotubeIcons.queue),
|
||||||
label: Text(context.l10n.details),
|
label: Text(context.l10n.queue),
|
||||||
style: OutlinedButton.styleFrom(
|
style: OutlinedButton.styleFrom(
|
||||||
foregroundColor: bodyTextColor,
|
foregroundColor: bodyTextColor,
|
||||||
side: BorderSide(
|
side: BorderSide(
|
||||||
color: bodyTextColor ?? Colors.white,
|
color: bodyTextColor ?? Colors.white,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
onPressed: currentTrack == null
|
onPressed: currentTrack != null
|
||||||
? null
|
? () {
|
||||||
: () {
|
showModalBottomSheet(
|
||||||
showDialog(
|
|
||||||
context: context,
|
context: context,
|
||||||
|
isDismissible: true,
|
||||||
|
enableDrag: true,
|
||||||
|
isScrollControlled: true,
|
||||||
|
backgroundColor: Colors.black12,
|
||||||
|
barrierColor: Colors.black12,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.circular(10),
|
||||||
|
),
|
||||||
|
constraints: BoxConstraints(
|
||||||
|
maxHeight:
|
||||||
|
MediaQuery.of(context)
|
||||||
|
.size
|
||||||
|
.height *
|
||||||
|
.7,
|
||||||
|
),
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return TrackDetailsDialog(
|
return PlayerQueue(
|
||||||
track: currentTrack,
|
floating: false);
|
||||||
);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
: null),
|
||||||
),
|
),
|
||||||
),
|
if (auth != null) const SizedBox(width: 10),
|
||||||
const SizedBox(width: 10),
|
if (auth != null)
|
||||||
Expanded(
|
Expanded(
|
||||||
child: OutlinedButton.icon(
|
child: OutlinedButton.icon(
|
||||||
label: Text(context.l10n.lyrics),
|
label: Text(context.l10n.lyrics),
|
||||||
|
Loading…
Reference in New Issue
Block a user