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

View File

@@ -0,0 +1,30 @@
import { createSlice } from "@reduxjs/toolkit"
export interface StatusState {
connected: boolean,
updated: boolean,
downloading: boolean,
}
const initialState: StatusState = {
connected: false,
updated: false,
downloading: false,
}
export const statusSlice = createSlice({
name: 'status',
initialState,
reducers: {
connected: (state) => { state.connected = true },
disconnected: (state) => { state.connected = false },
updated: (state) => { state.updated = true },
alreadyUpdated: (state) => { state.updated = false },
downloading: (state) => { state.downloading = true },
finished: (state) => { state.downloading = false },
}
})
export const { connected, disconnected, updated, alreadyUpdated, downloading, finished } = statusSlice.actions
export default statusSlice.reducer