memos/web/src/store/reducer/editor.ts
boojack a07d5d38d6
feat: memo relation part1 (#1677)
* feat: memo relation part1

* chore: update
2023-05-18 21:29:28 +08:00

47 lines
1.1 KiB
TypeScript

import { createSlice, PayloadAction } from "@reduxjs/toolkit";
interface State {
memoVisibility: Visibility;
resourceList: Resource[];
relationList: MemoRelation[];
editMemoId?: MemoId;
}
const editorSlice = createSlice({
name: "editor",
initialState: {
memoVisibility: "PRIVATE",
resourceList: [],
relationList: [],
} as State,
reducers: {
setEditMemoId: (state, action: PayloadAction<Option<MemoId>>) => {
return {
...state,
editMemoId: action.payload,
};
},
setMemoVisibility: (state, action: PayloadAction<Visibility>) => {
return {
...state,
memoVisibility: action.payload,
};
},
setResourceList: (state, action: PayloadAction<Resource[]>) => {
return {
...state,
resourceList: action.payload,
};
},
setRelationList: (state, action: PayloadAction<MemoRelation[]>) => {
return {
...state,
relationList: action.payload,
};
},
},
});
export const { setEditMemoId, setMemoVisibility, setResourceList, setRelationList } = editorSlice.actions;
export default editorSlice.reducer;