MUI update

This commit is contained in:
2022-05-06 00:49:23 +02:00
parent 053bb884d4
commit 018b208835
18 changed files with 1726 additions and 680 deletions

View File

@@ -0,0 +1,50 @@
import { createSlice, PayloadAction } from "@reduxjs/toolkit"
import { CliArguments } from "../../classes"
import { I18nBuilder } from "../../i18n"
export type LanguageUnion = "english" | "chinese" | "russian" | "italian" | "spanish" | "korean"
export type ThemeUnion = "light" | "dark"
export interface SettingsState {
serverAddr: string,
language: LanguageUnion,
theme: ThemeUnion,
cliArgs: CliArguments,
i18n: I18nBuilder
}
const initialState: SettingsState = {
serverAddr: localStorage.getItem("server-addr") || "localhost",
language: (localStorage.getItem("language") || "english") as LanguageUnion,
theme: (localStorage.getItem("theme") || "light") as ThemeUnion,
cliArgs: localStorage.getItem("cli-args") ? new CliArguments().fromString(localStorage.getItem("cli-args")) : new CliArguments(false, true),
i18n: new I18nBuilder((localStorage.getItem("language") || "english")),
}
export const settingsSlice = createSlice({
name: "settings",
initialState,
reducers: {
setServerAddr: (state, action: PayloadAction<string>) => {
state.serverAddr = action.payload
localStorage.setItem("server-addr", action.payload)
},
setLanguage: (state, action: PayloadAction<LanguageUnion>) => {
state.language = action.payload
state.i18n.setLanguage(action.payload)
localStorage.setItem("language", action.payload)
},
setCliArgs: (state, action: PayloadAction<CliArguments>) => {
state.cliArgs = action.payload
localStorage.setItem("cli-args", action.payload.toString())
},
setTheme: (state, action: PayloadAction<ThemeUnion>) => {
state.theme = action.payload
localStorage.setItem("theme", action.payload)
},
}
})
export const { setLanguage, setCliArgs, setTheme, setServerAddr } = settingsSlice.actions
export default settingsSlice.reducer