memos/web/src/store/reducer/global.ts
Christopher 4641e89c17
feat(system): support for disabling public memos (#1003)
* feat(system): support for disabling public memos

* fix(web/editor): set visibility to private on disabled public memos

* feat(server/memo): find/check if public memos are disabled

* fix(server/memo): handle error for finding system error

* fix(server/memo): unmarshal visiblity when getting system settings

* chore(web): move side effect imports to end

* Update memo.go

---------

Co-authored-by: boojack <stevenlgtm@gmail.com>
2023-02-13 16:07:31 +00:00

60 lines
1.3 KiB
TypeScript

import { createSlice, PayloadAction } from "@reduxjs/toolkit";
interface State {
locale: Locale;
appearance: Appearance;
systemStatus: SystemStatus;
}
const globalSlice = createSlice({
name: "global",
initialState: {
locale: "en",
appearance: "system",
systemStatus: {
host: undefined,
profile: {
mode: "dev",
version: "",
},
dbSize: 0,
allowSignUp: false,
disablePublicMemos: false,
additionalStyle: "",
additionalScript: "",
customizedProfile: {
name: "memos",
logoUrl: "/logo.png",
description: "",
locale: "en",
appearance: "system",
externalUrl: "",
},
},
} as State,
reducers: {
setGlobalState: (state, action: PayloadAction<Partial<State>>) => {
return {
...state,
...action.payload,
};
},
setLocale: (state, action: PayloadAction<Locale>) => {
return {
...state,
locale: action.payload,
};
},
setAppearance: (state, action: PayloadAction<Appearance>) => {
return {
...state,
appearance: action.payload,
};
},
},
});
export const { setGlobalState, setLocale, setAppearance } = globalSlice.actions;
export default globalSlice.reducer;