Files
jellyfin-audio-player/src/store/settings/index.ts
2024-01-28 23:26:57 +01:00

70 lines
2.1 KiB
TypeScript

import { createReducer } from '@reduxjs/toolkit';
import { setReceivedErrorReportingAlert, setBitrate, setJellyfinCredentials, setOnboardingStatus, setEnablePlaybackReporting, setColorScheme, setDateTime, setEnableSleepTime, setRemainingSleepTime } from './actions';
import { ColorScheme } from './types';
interface State {
jellyfin?: {
uri: string;
user_id: string;
access_token: string;
device_id: string;
}
bitrate: number;
isOnboardingComplete: boolean;
hasReceivedErrorReportingAlert: boolean;
enablePlaybackReporting: boolean;
colorScheme: ColorScheme;
dateTime?: Date;
enableSleepTime: boolean
}
const initialState: State = {
bitrate: 140000000,
isOnboardingComplete: false,
hasReceivedErrorReportingAlert: false,
enablePlaybackReporting: true,
colorScheme: ColorScheme.System,
dateTime: new Date(),
enableSleepTime: false
};
const settings = createReducer(initialState, builder => {
builder.addCase(setJellyfinCredentials, (state, action) => ({
...state,
jellyfin: action.payload,
}));
builder.addCase(setBitrate, (state, action) => ({
...state,
bitrate: action.payload,
}));
builder.addCase(setOnboardingStatus, (state, action) => ({
...state,
isOnboardingComplete: action.payload,
}));
builder.addCase(setReceivedErrorReportingAlert, (state) => ({
...state,
hasReceivedErrorReportingAlert: true,
}));
builder.addCase(setEnablePlaybackReporting, (state, action) => ({
...state,
enablePlaybackReporting: action.payload,
}));
builder.addCase(setColorScheme, (state, action) => ({
...state,
colorScheme: action.payload,
}));
builder.addCase(setDateTime, (state, action) => ({
...state,
dateTime: action.payload,
}));
builder.addCase(setEnableSleepTime, (state, action) => ({
...state,
enableSleepTime: action.payload,
}));
builder.addCase(setRemainingSleepTime, (state, action) => ({
...state,
remainingSleepTime: action.payload,
}));
});
export default settings;