mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-09 20:29:36 +02:00
remove the Priority queue type
This commit is contained in:
@@ -631,9 +631,6 @@
|
|||||||
"queue_moveToBottom": "move selected to top",
|
"queue_moveToBottom": "move selected to top",
|
||||||
"queue_moveToTop": "move selected to bottom",
|
"queue_moveToTop": "move selected to bottom",
|
||||||
"queue_remove": "remove selected",
|
"queue_remove": "remove selected",
|
||||||
"queueType": "queue type",
|
|
||||||
"queueType_default": "default",
|
|
||||||
"queueType_priority": "priority",
|
|
||||||
"repeat": "repeat",
|
"repeat": "repeat",
|
||||||
"repeat_all": "repeat all",
|
"repeat_all": "repeat all",
|
||||||
"repeat_off": "repeat disabled",
|
"repeat_off": "repeat disabled",
|
||||||
|
|||||||
@@ -19,13 +19,7 @@ import {
|
|||||||
import { LogCategory, logFn } from '/@/renderer/utils/logger';
|
import { LogCategory, logFn } from '/@/renderer/utils/logger';
|
||||||
import { logMsg } from '/@/renderer/utils/logger-message';
|
import { logMsg } from '/@/renderer/utils/logger-message';
|
||||||
import { LyricSource, ServerType } from '/@/shared/types/domain-types';
|
import { LyricSource, ServerType } from '/@/shared/types/domain-types';
|
||||||
import {
|
import { FontType, Platform, PlayerStyle, PlayerType } from '/@/shared/types/types';
|
||||||
FontType,
|
|
||||||
Platform,
|
|
||||||
PlayerQueueType,
|
|
||||||
PlayerStyle,
|
|
||||||
PlayerType,
|
|
||||||
} from '/@/shared/types/types';
|
|
||||||
|
|
||||||
const utils = isElectron() ? window.api.utils : null;
|
const utils = isElectron() ? window.api.utils : null;
|
||||||
let appTrackerInFlight = false;
|
let appTrackerInFlight = false;
|
||||||
@@ -64,7 +58,6 @@ type AppTrackerProperties = PlayerProperties &
|
|||||||
|
|
||||||
type PlayerProperties = {
|
type PlayerProperties = {
|
||||||
'player.mediaSession': boolean;
|
'player.mediaSession': boolean;
|
||||||
'player.queueType': PlayerQueueType;
|
|
||||||
'player.style': PlayerStyle;
|
'player.style': PlayerStyle;
|
||||||
'player.transcoding': boolean;
|
'player.transcoding': boolean;
|
||||||
'player.type': PlayerType;
|
'player.type': PlayerType;
|
||||||
@@ -117,7 +110,6 @@ type SettingsProperties = {
|
|||||||
const getPlayerProperties = (): Pick<
|
const getPlayerProperties = (): Pick<
|
||||||
AppTrackerProperties,
|
AppTrackerProperties,
|
||||||
| 'player.mediaSession'
|
| 'player.mediaSession'
|
||||||
| 'player.queueType'
|
|
||||||
| 'player.style'
|
| 'player.style'
|
||||||
| 'player.transcoding'
|
| 'player.transcoding'
|
||||||
| 'player.type'
|
| 'player.type'
|
||||||
@@ -128,7 +120,6 @@ const getPlayerProperties = (): Pick<
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
'player.mediaSession': ignoreWeb(playbackSettings.mediaSession),
|
'player.mediaSession': ignoreWeb(playbackSettings.mediaSession),
|
||||||
'player.queueType': player.player.queueType,
|
|
||||||
'player.style': player.player.transitionType,
|
'player.style': player.player.transitionType,
|
||||||
'player.transcoding': playbackSettings.transcode.enabled,
|
'player.transcoding': playbackSettings.transcode.enabled,
|
||||||
'player.type': ignoreWeb(playbackSettings.type),
|
'player.type': ignoreWeb(playbackSettings.type),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { forwardRef, ReactElement, useEffect, useMemo, useRef, useState } from 'react';
|
import { forwardRef, useEffect, useMemo, useRef, useState } from 'react';
|
||||||
|
|
||||||
import styles from './play-queue.module.css';
|
import styles from './play-queue.module.css';
|
||||||
|
|
||||||
@@ -23,20 +23,18 @@ import {
|
|||||||
useFollowCurrentSong,
|
useFollowCurrentSong,
|
||||||
useListSettings,
|
useListSettings,
|
||||||
usePlayerActions,
|
usePlayerActions,
|
||||||
usePlayerQueueType,
|
|
||||||
usePlayerSong,
|
usePlayerSong,
|
||||||
usePlayerStore,
|
usePlayerStore,
|
||||||
} from '/@/renderer/store';
|
} from '/@/renderer/store';
|
||||||
import { Flex } from '/@/shared/components/flex/flex';
|
import { Flex } from '/@/shared/components/flex/flex';
|
||||||
import { LoadingOverlay } from '/@/shared/components/loading-overlay/loading-overlay';
|
import { LoadingOverlay } from '/@/shared/components/loading-overlay/loading-overlay';
|
||||||
import { Text } from '/@/shared/components/text/text';
|
|
||||||
import { useDebouncedValue } from '/@/shared/hooks/use-debounced-value';
|
import { useDebouncedValue } from '/@/shared/hooks/use-debounced-value';
|
||||||
import { useFocusWithin } from '/@/shared/hooks/use-focus-within';
|
import { useFocusWithin } from '/@/shared/hooks/use-focus-within';
|
||||||
import { useHotkeys } from '/@/shared/hooks/use-hotkeys';
|
import { useHotkeys } from '/@/shared/hooks/use-hotkeys';
|
||||||
import { useMergedRef } from '/@/shared/hooks/use-merged-ref';
|
import { useMergedRef } from '/@/shared/hooks/use-merged-ref';
|
||||||
import { Folder, LibraryItem, QueueSong, Song } from '/@/shared/types/domain-types';
|
import { Folder, LibraryItem, QueueSong, Song } from '/@/shared/types/domain-types';
|
||||||
import { DragTarget } from '/@/shared/types/drag-and-drop';
|
import { DragTarget } from '/@/shared/types/drag-and-drop';
|
||||||
import { ItemListKey, Play, PlayerQueueType } from '/@/shared/types/types';
|
import { ItemListKey, Play } from '/@/shared/types/types';
|
||||||
|
|
||||||
type QueueProps = {
|
type QueueProps = {
|
||||||
enableScrollShadow?: boolean;
|
enableScrollShadow?: boolean;
|
||||||
@@ -52,7 +50,6 @@ export const PlayQueue = forwardRef<ItemListHandle, QueueProps>(
|
|||||||
const tableRef = useRef<ItemListHandle>(null);
|
const tableRef = useRef<ItemListHandle>(null);
|
||||||
const mergedRef = useMergedRef(ref, tableRef);
|
const mergedRef = useMergedRef(ref, tableRef);
|
||||||
const { getQueue } = usePlayerActions();
|
const { getQueue } = usePlayerActions();
|
||||||
const queueType = usePlayerQueueType();
|
|
||||||
const followCurrentSong = useFollowCurrentSong();
|
const followCurrentSong = useFollowCurrentSong();
|
||||||
|
|
||||||
const [debouncedSearchTerm] = useDebouncedValue(searchTerm, 200);
|
const [debouncedSearchTerm] = useDebouncedValue(searchTerm, 200);
|
||||||
@@ -66,36 +63,7 @@ export const PlayQueue = forwardRef<ItemListHandle, QueueProps>(
|
|||||||
|
|
||||||
setData(queue.items);
|
setData(queue.items);
|
||||||
|
|
||||||
if (
|
setGroups([]);
|
||||||
queueType === PlayerQueueType.PRIORITY &&
|
|
||||||
queue.groups &&
|
|
||||||
queue.groups.length > 0
|
|
||||||
) {
|
|
||||||
const transformedGroups: TableGroupHeader[] = queue.groups.map((group) => ({
|
|
||||||
itemCount: group.count,
|
|
||||||
render: (): ReactElement => {
|
|
||||||
return (
|
|
||||||
<div className={styles.groupRow}>
|
|
||||||
<Text
|
|
||||||
fw={600}
|
|
||||||
overflow="visible"
|
|
||||||
size="md"
|
|
||||||
style={{
|
|
||||||
textWrap: 'nowrap',
|
|
||||||
whiteSpace: 'nowrap',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{group.name}
|
|
||||||
</Text>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
rowHeight: 40,
|
|
||||||
}));
|
|
||||||
setGroups(transformedGroups);
|
|
||||||
} else {
|
|
||||||
setGroups([]);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const unsub = subscribePlayerQueue(() => {
|
const unsub = subscribePlayerQueue(() => {
|
||||||
@@ -159,7 +127,7 @@ export const PlayQueue = forwardRef<ItemListHandle, QueueProps>(
|
|||||||
unsubCurrentTrack();
|
unsubCurrentTrack();
|
||||||
eventEmitter.off('AUTODJ_QUEUE_ADDED', handleAutoDJQueueAdded);
|
eventEmitter.off('AUTODJ_QUEUE_ADDED', handleAutoDJQueueAdded);
|
||||||
};
|
};
|
||||||
}, [getQueue, queueType, tableRef, followCurrentSong]);
|
}, [getQueue, tableRef, followCurrentSong]);
|
||||||
|
|
||||||
const filteredData: QueueSong[] = useMemo(() => {
|
const filteredData: QueueSong[] = useMemo(() => {
|
||||||
if (debouncedSearchTerm) {
|
if (debouncedSearchTerm) {
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import {
|
|||||||
usePlayerActions,
|
usePlayerActions,
|
||||||
usePlayerData,
|
usePlayerData,
|
||||||
usePlayerProperties,
|
usePlayerProperties,
|
||||||
usePlayerQueueType,
|
|
||||||
usePlayerSpeed,
|
usePlayerSpeed,
|
||||||
usePlayerStatus,
|
usePlayerStatus,
|
||||||
} from '/@/renderer/store';
|
} from '/@/renderer/store';
|
||||||
@@ -27,13 +26,7 @@ import { Select } from '/@/shared/components/select/select';
|
|||||||
import { Slider } from '/@/shared/components/slider/slider';
|
import { Slider } from '/@/shared/components/slider/slider';
|
||||||
import { Switch } from '/@/shared/components/switch/switch';
|
import { Switch } from '/@/shared/components/switch/switch';
|
||||||
import { toast } from '/@/shared/components/toast/toast';
|
import { toast } from '/@/shared/components/toast/toast';
|
||||||
import {
|
import { CrossfadeStyle, PlayerStatus, PlayerStyle, PlayerType } from '/@/shared/types/types';
|
||||||
CrossfadeStyle,
|
|
||||||
PlayerQueueType,
|
|
||||||
PlayerStatus,
|
|
||||||
PlayerStyle,
|
|
||||||
PlayerType,
|
|
||||||
} from '/@/shared/types/types';
|
|
||||||
|
|
||||||
const ipc = isElectron() ? window.api.ipc : null;
|
const ipc = isElectron() ? window.api.ipc : null;
|
||||||
const mpvPlayer = isElectron() ? window.api.mpvPlayer : null;
|
const mpvPlayer = isElectron() ? window.api.mpvPlayer : null;
|
||||||
@@ -60,11 +53,10 @@ export const PlayerConfig = () => {
|
|||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const { currentSong } = usePlayerData();
|
const { currentSong } = usePlayerData();
|
||||||
const speed = usePlayerSpeed();
|
const speed = usePlayerSpeed();
|
||||||
const queueType = usePlayerQueueType();
|
|
||||||
const status = usePlayerStatus();
|
const status = usePlayerStatus();
|
||||||
const playbackType = usePlaybackType();
|
const playbackType = usePlaybackType();
|
||||||
const { crossfadeDuration, crossfadeStyle, transitionType } = usePlayerProperties();
|
const { crossfadeDuration, crossfadeStyle, transitionType } = usePlayerProperties();
|
||||||
const { setCrossfadeDuration, setCrossfadeStyle, setQueueType, setSpeed, setTransitionType } =
|
const { setCrossfadeDuration, setCrossfadeStyle, setSpeed, setTransitionType } =
|
||||||
usePlayerActions();
|
usePlayerActions();
|
||||||
const preservePitch = useSettingsStore((state) => state.playback.preservePitch);
|
const preservePitch = useSettingsStore((state) => state.playback.preservePitch);
|
||||||
const showLyricsInSidebar = useShowLyricsInSidebar();
|
const showLyricsInSidebar = useShowLyricsInSidebar();
|
||||||
@@ -130,34 +122,6 @@ export const PlayerConfig = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const allOptions = [
|
const allOptions = [
|
||||||
{
|
|
||||||
component: (
|
|
||||||
<SegmentedControl
|
|
||||||
data={[
|
|
||||||
{
|
|
||||||
label: t('player.queueType_default', { postProcess: 'titleCase' }),
|
|
||||||
value: PlayerQueueType.DEFAULT,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: t('player.queueType_priority', { postProcess: 'titleCase' }),
|
|
||||||
value: PlayerQueueType.PRIORITY,
|
|
||||||
},
|
|
||||||
]}
|
|
||||||
onChange={(value) => setQueueType(value as PlayerQueueType)}
|
|
||||||
size="sm"
|
|
||||||
value={queueType}
|
|
||||||
w="100%"
|
|
||||||
/>
|
|
||||||
),
|
|
||||||
id: 'queueType',
|
|
||||||
label: t('player.queueType', { postProcess: 'titleCase' }),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
component: null,
|
|
||||||
id: 'divider-0',
|
|
||||||
isDivider: true,
|
|
||||||
label: '',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
component: (
|
component: (
|
||||||
<Select
|
<Select
|
||||||
@@ -412,7 +376,6 @@ export const PlayerConfig = () => {
|
|||||||
return allOptions;
|
return allOptions;
|
||||||
}, [
|
}, [
|
||||||
t,
|
t,
|
||||||
queueType,
|
|
||||||
playbackSettings,
|
playbackSettings,
|
||||||
status,
|
status,
|
||||||
audioDevices,
|
audioDevices,
|
||||||
@@ -424,7 +387,6 @@ export const PlayerConfig = () => {
|
|||||||
setSpeed,
|
setSpeed,
|
||||||
preservePitch,
|
preservePitch,
|
||||||
currentSong?.bpm,
|
currentSong?.bpm,
|
||||||
setQueueType,
|
|
||||||
setSettings,
|
setSettings,
|
||||||
setTransitionType,
|
setTransitionType,
|
||||||
setCrossfadeStyle,
|
setCrossfadeStyle,
|
||||||
|
|||||||
+296
-1055
File diff suppressed because it is too large
Load Diff
@@ -68,7 +68,6 @@ export interface PlayerData {
|
|||||||
|
|
||||||
export interface QueueData {
|
export interface QueueData {
|
||||||
default: string[];
|
default: string[];
|
||||||
priority: string[];
|
|
||||||
shuffled: number[];
|
shuffled: number[];
|
||||||
songs: Record<string, QueueSong>;
|
songs: Record<string, QueueSong>;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user