mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-16 21:50:35 +02:00
fix Toggle Queue hotkey when using detached queue (#1522)
This commit is contained in:
@@ -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 = () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user