fix Toggle Queue hotkey when using detached queue (#1522)

This commit is contained in:
jeffvli
2026-01-17 02:43:11 -08:00
parent afd91d2ae3
commit b4b0c6cedd
2 changed files with 39 additions and 6 deletions
@@ -10,19 +10,36 @@ import { Stack } from '/@/shared/components/stack/stack';
import { useDisclosure } from '/@/shared/hooks/use-disclosure'; import { useDisclosure } from '/@/shared/hooks/use-disclosure';
import { ItemListKey } from '/@/shared/types/types'; import { ItemListKey } from '/@/shared/types/types';
export const PopoverPlayQueue = () => { interface PopoverPlayQueueProps {
onClose?: () => void;
onToggle?: () => void;
opened?: boolean;
}
export const PopoverPlayQueue = ({
onClose,
onToggle,
opened: controlledOpened,
}: PopoverPlayQueueProps = {}) => {
const queueRef = useRef<ItemListHandle | null>(null); const queueRef = useRef<ItemListHandle | null>(null);
const [search, setSearch] = useState<string | undefined>(undefined); const [search, setSearch] = useState<string | undefined>(undefined);
const [opened, handlers] = useDisclosure(false); const [internalOpened, internalHandlers] = useDisclosure(false);
const opened = controlledOpened !== undefined ? controlledOpened : internalOpened;
const handleClose = onClose ? onClose : internalHandlers.close;
const handleToggle = onToggle ? onToggle : internalHandlers.toggle;
return ( return (
<Popover <Popover
arrowSize={24} arrowSize={24}
offset={12} offset={12}
onClose={() => handlers.close()} onClose={handleClose}
opened={opened} opened={opened}
position="top" position="top"
transitionProps={{
transition: 'fade',
}}
withArrow withArrow
> >
<Popover.Target> <Popover.Target>
@@ -31,7 +48,7 @@ export const PopoverPlayQueue = () => {
iconProps={{ iconProps={{
size: 'lg', size: 'lg',
}} }}
onClick={() => handlers.toggle()} onClick={handleToggle}
size="sm" size="sm"
tooltip={{ tooltip={{
label: t('player.viewQueue', { postProcess: 'titleCase' }), label: t('player.viewQueue', { postProcess: 'titleCase' }),
@@ -119,8 +119,18 @@ const QueueButton = () => {
const { bindings } = useHotkeySettings(); const { bindings } = useHotkeySettings();
const [popoverOpened, setPopoverOpened] = useState(false);
const handleToggleQueue = () => { const handleToggleQueue = () => {
setSideBar({ rightExpanded: !isSidebarRightExpanded }); if (sideQueueType === 'sideQueue') {
setSideBar({ rightExpanded: !isSidebarRightExpanded });
} else {
setPopoverOpened((prev) => !prev);
}
};
const handlePopoverClose = () => {
setPopoverOpened(false);
}; };
useHotkeys([ useHotkeys([
@@ -153,7 +163,13 @@ const QueueButton = () => {
); );
} }
return <PopoverPlayQueue />; return (
<PopoverPlayQueue
onClose={handlePopoverClose}
onToggle={handleToggleQueue}
opened={popoverOpened}
/>
);
}; };
const LyricsButton = () => { const LyricsButton = () => {