import { createReducer } from '@reduxjs/toolkit' import { updateMatchesDarkMode, SerializedToken, updateUserDarkMode, } from './actions' const currentTimestamp = () => new Date().getTime() export interface UserState { // the timestamp of the last updateVersion action lastUpdateVersionTimestamp?: number userDarkMode: boolean | null // the user's choice for dark mode or light mode matchesDarkMode: boolean // whether the dark mode media query matches timestamp: number tokens: { [chainId: number]: { [address: string]: SerializedToken } } } export const initialState: UserState = { userDarkMode: null, matchesDarkMode: false, timestamp: currentTimestamp(), tokens: {}, } export default createReducer(initialState, (builder) => builder .addCase(updateUserDarkMode, (state, action) => { state.userDarkMode = action.payload.userDarkMode state.timestamp = currentTimestamp() }) .addCase(updateMatchesDarkMode, (state, action) => { state.matchesDarkMode = action.payload.matchesDarkMode state.timestamp = currentTimestamp() }) )