fix: move sleep-timer to separate reducer

This commit is contained in:
Lei Nelissen
2024-01-28 23:52:53 +01:00
parent 0f126d40ad
commit 0f211b00b8
4 changed files with 32 additions and 18 deletions

View File

@@ -9,6 +9,7 @@ import music, { initialState as musicInitialState } from './music';
import downloads, { initialState as downloadsInitialState } from './downloads'; import downloads, { initialState as downloadsInitialState } from './downloads';
import { PersistState } from 'redux-persist/es/types'; import { PersistState } from 'redux-persist/es/types';
import { ColorScheme } from './settings/types'; import { ColorScheme } from './settings/types';
import sleepTimer from './sleep-timer';
const persistConfig: PersistConfig<Omit<AppState, '_persist'>> = { const persistConfig: PersistConfig<Omit<AppState, '_persist'>> = {
key: 'root', key: 'root',
@@ -59,9 +60,8 @@ const persistConfig: PersistConfig<Omit<AppState, '_persist'>> = {
4: (state: AppState) => { 4: (state: AppState) => {
return { return {
...state, ...state,
music: { sleepTimer: {
...state.music, date: null,
timerDate: Date
} }
}; };
}, },
@@ -72,6 +72,7 @@ const reducers = combineReducers({
settings, settings,
music: music.reducer, music: music.reducer,
downloads: downloads.reducer, downloads: downloads.reducer,
sleepTimer: sleepTimer.reducer,
}); });
const persistedReducer = persistReducer(persistConfig, reducers); const persistedReducer = persistReducer(persistConfig, reducers);

View File

@@ -1,4 +1,4 @@
import { createAction, createAsyncThunk, createEntityAdapter } from '@reduxjs/toolkit'; import { createAsyncThunk, createEntityAdapter } from '@reduxjs/toolkit';
import { Album, AlbumTrack, Playlist } from './types'; import { Album, AlbumTrack, Playlist } from './types';
import { AsyncThunkAPI } from '..'; import { AsyncThunkAPI } from '..';
import { retrieveAllAlbums, retrieveAlbumTracks, retrieveRecentAlbums, searchItem, retrieveAlbum, retrieveAllPlaylists, retrievePlaylistTracks } from '@/utility/JellyfinApi'; import { retrieveAllAlbums, retrieveAlbumTracks, retrieveRecentAlbums, searchItem, retrieveAlbum, retrieveAllPlaylists, retrievePlaylistTracks } from '@/utility/JellyfinApi';
@@ -112,5 +112,3 @@ export const fetchTracksByPlaylist = createAsyncThunk<AlbumTrack[], string, Asyn
return retrievePlaylistTracks(ItemId, credentials) as Promise<AlbumTrack[]>; return retrievePlaylistTracks(ItemId, credentials) as Promise<AlbumTrack[]>;
} }
); );
export const setTimerDate = createAction<Date|null>('SET_TIMER_DATE');

View File

@@ -8,8 +8,7 @@ import {
playlistAdapter, playlistAdapter,
fetchAllPlaylists, fetchAllPlaylists,
fetchTracksByPlaylist, fetchTracksByPlaylist,
fetchAlbum, fetchAlbum
setTimerDate
} from './actions'; } from './actions';
import { createSlice, Dictionary, EntityId } from '@reduxjs/toolkit'; import { createSlice, Dictionary, EntityId } from '@reduxjs/toolkit';
import { Album, AlbumTrack, Playlist } from './types'; import { Album, AlbumTrack, Playlist } from './types';
@@ -34,8 +33,7 @@ export interface State {
entities: Dictionary<Playlist>; entities: Dictionary<Playlist>;
ids: EntityId[]; ids: EntityId[];
lastRefreshed?: number, lastRefreshed?: number,
}, }
timerDate?: Date | null;
} }
export const initialState: State = { export const initialState: State = {
@@ -52,8 +50,7 @@ export const initialState: State = {
playlists: { playlists: {
...playlistAdapter.getInitialState(), ...playlistAdapter.getInitialState(),
isLoading: false, isLoading: false,
}, }
timerDate: null
}; };
const music = createSlice({ const music = createSlice({
@@ -156,11 +153,6 @@ const music = createSlice({
// Reset any caches we have when a new server is set // Reset any caches we have when a new server is set
builder.addCase(setJellyfinCredentials, () => initialState); builder.addCase(setJellyfinCredentials, () => initialState);
builder.addCase(setTimerDate, (state, action) => ({
...state,
timerDate: action.payload,
}));
} }
}); });

View File

@@ -0,0 +1,23 @@
import { PayloadAction, createSlice } from '@reduxjs/toolkit';
export interface State {
date: number | null;
}
export const initialState: State = {
date: null,
};
const sleepTimer = createSlice({
name: 'sleep-timer',
initialState,
reducers: {
setTimerDate(state, action: PayloadAction<Date | null>) {
state.date = action.payload?.getTime() || null;
}
},
});
export const { setTimerDate } = sleepTimer.actions;
export default sleepTimer;