reorganize

This commit is contained in:
jeffvli
2025-11-02 19:04:29 -08:00
parent 0c7cec9f4f
commit 0e384a6302
8 changed files with 11 additions and 9 deletions
@@ -3,7 +3,7 @@ import type { RefObject } from 'react';
import { useImperativeHandle, useRef, useState } from 'react'; import { useImperativeHandle, useRef, useState } from 'react';
import ReactPlayer from 'react-player'; import ReactPlayer from 'react-player';
import { AudioPlayer } from '/@/renderer/components/audio-player/types'; import { AudioPlayer } from '/@/renderer/features/player/audio-player/types';
import { PlayerStatus } from '/@/shared/types/types'; import { PlayerStatus } from '/@/shared/types/types';
export interface OnProgressProps { export interface OnProgressProps {
@@ -3,7 +3,7 @@ import { useEffect } from 'react';
import { import {
createPlayerEvents, createPlayerEvents,
PlayerEventsCallbacks, PlayerEventsCallbacks,
} from '/@/renderer/components/audio-player/listener/player-events'; } from '/@/renderer/features/player/audio-player/listener/player-events';
export function usePlayerEvents(callbacks: PlayerEventsCallbacks, deps: React.DependencyList) { export function usePlayerEvents(callbacks: PlayerEventsCallbacks, deps: React.DependencyList) {
useEffect(() => { useEffect(() => {
@@ -6,7 +6,7 @@ import { OnProgressProps } from 'react-player/base';
import { WebPlayerEngine, WebPlayerEngineHandle } from './engine/web-player-engine'; import { WebPlayerEngine, WebPlayerEngineHandle } from './engine/web-player-engine';
import { usePlayerEvents } from '/@/renderer/components/audio-player/listener/use-player-events'; import { usePlayerEvents } from '/@/renderer/features/player/audio-player/listener/use-player-events';
import { import {
usePlayerActions, usePlayerActions,
usePlayerData, usePlayerData,
@@ -19,7 +19,7 @@ import { PlayerStatus, PlayerStyle } from '/@/shared/types/types';
const PLAY_PAUSE_FADE_DURATION = 300; const PLAY_PAUSE_FADE_DURATION = 300;
const PLAY_PAUSE_FADE_INTERVAL = 10; const PLAY_PAUSE_FADE_INTERVAL = 10;
export function AudiolingWebPlayer() { export function WebPlayer() {
const playerRef = useRef<WebPlayerEngineHandle>(null); const playerRef = useRef<WebPlayerEngineHandle>(null);
const { player, player1, player2 } = usePlayerData(); const { player, player1, player2 } = usePlayerData();
const { mediaAutoNext, setProgress } = usePlayerActions(); const { mediaAutoNext, setProgress } = usePlayerActions();
@@ -178,21 +178,24 @@ export function AudiolingWebPlayer() {
usePlayerEvents( usePlayerEvents(
{ {
onPlayerSeekToTimestamp: (timestamp) => { onPlayerSeekToTimestamp: (properties) => {
const timestamp = properties.timestamp;
if (player.playerNum === 1) { if (player.playerNum === 1) {
playerRef.current?.player1()?.ref?.seekTo(timestamp); playerRef.current?.player1()?.ref?.seekTo(timestamp);
} else { } else {
playerRef.current?.player2()?.ref?.seekTo(timestamp); playerRef.current?.player2()?.ref?.seekTo(timestamp);
} }
}, },
onPlayerStatus: async (status) => { onPlayerStatus: async (properties) => {
const status = properties.status;
if (status === PlayerStatus.PAUSED) { if (status === PlayerStatus.PAUSED) {
fadeAndSetStatus(volume, 0, PLAY_PAUSE_FADE_DURATION, PlayerStatus.PAUSED); fadeAndSetStatus(volume, 0, PLAY_PAUSE_FADE_DURATION, PlayerStatus.PAUSED);
} else if (status === PlayerStatus.PLAYING) { } else if (status === PlayerStatus.PLAYING) {
fadeAndSetStatus(0, volume, PLAY_PAUSE_FADE_DURATION, PlayerStatus.PLAYING); fadeAndSetStatus(0, volume, PLAY_PAUSE_FADE_DURATION, PlayerStatus.PLAYING);
} }
}, },
onPlayerVolume: (volume) => { onPlayerVolume: (properties) => {
const volume = properties.volume;
playerRef.current?.setVolume(volume); playerRef.current?.setVolume(volume);
}, },
}, },
@@ -1,8 +1,7 @@
import { createContext, useCallback, useMemo } from 'react'; import { createContext, useCallback, useMemo } from 'react';
import { Song } from 'src/main/features/core/lyrics/netease';
import { AddToQueueType } from '/@/renderer/store'; import { AddToQueueType } from '/@/renderer/store';
import { LibraryItem, QueueSong } from '/@/shared/types/domain-types'; import { LibraryItem, QueueSong, Song } from '/@/shared/types/domain-types';
interface PlayerContext { interface PlayerContext {
addToQueueByData: (data: Song[], type: AddToQueueType) => void; addToQueueByData: (data: Song[], type: AddToQueueType) => void;