|
@@ -4,6 +4,7 @@ import { StateInspector } from 'reinspect';
|
|
|
import { stateSet } from '../actions';
|
|
import { stateSet } from '../actions';
|
|
|
import { DispatchContext, StateContext } from '../context/state';
|
|
import { DispatchContext, StateContext } from '../context/state';
|
|
|
import { useMaster } from '../hooks/master';
|
|
import { useMaster } from '../hooks/master';
|
|
|
|
|
+import { usePlayQueue } from '../hooks/queue';
|
|
|
import { useKeepalive } from '../hooks/socket';
|
|
import { useKeepalive } from '../hooks/socket';
|
|
|
import { useCurrentlyPlayingSongInfo } from '../hooks/status';
|
|
import { useCurrentlyPlayingSongInfo } from '../hooks/status';
|
|
|
import { isMaster } from '../selectors';
|
|
import { isMaster } from '../selectors';
|
|
@@ -36,6 +37,13 @@ export const App: React.FC<Props> = ({ socket }) => {
|
|
|
[dispatch],
|
|
[dispatch],
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
|
|
+ const { onNext } = usePlayQueue();
|
|
|
|
|
+ const onEnded = useCallback(() => {
|
|
|
|
|
+ if (state.player.songId) {
|
|
|
|
|
+ onNext(state.player.songId);
|
|
|
|
|
+ }
|
|
|
|
|
+ }, [onNext, state.player.songId]);
|
|
|
|
|
+
|
|
|
return (
|
|
return (
|
|
|
<>
|
|
<>
|
|
|
{isMaster(state) && !!state.player.songId && (
|
|
{isMaster(state) && !!state.player.songId && (
|
|
@@ -45,6 +53,7 @@ export const App: React.FC<Props> = ({ socket }) => {
|
|
|
seekTime={state.player.seekTime}
|
|
seekTime={state.player.seekTime}
|
|
|
onTimeUpdate={onTimeUpdate}
|
|
onTimeUpdate={onTimeUpdate}
|
|
|
timeUpdateFPS={1}
|
|
timeUpdateFPS={1}
|
|
|
|
|
+ onEnded={onEnded}
|
|
|
/>
|
|
/>
|
|
|
)}
|
|
)}
|
|
|
<StateInspector name="ui">
|
|
<StateInspector name="ui">
|