Browse Source

添加 术语池子

visuddhinanda 2 years ago
parent
commit
1a5e10c3e9
1 changed files with 19 additions and 1 deletions
  1. 19 1
      dashboard/src/reducers/term-change.ts

+ 19 - 1
dashboard/src/reducers/term-change.ts

@@ -5,6 +5,7 @@ import type { RootState } from "../store";
 
 interface IState {
   word?: ITermDataResponse;
+  termCache?: ITermDataResponse[];
 }
 
 const initialState: IState = {};
@@ -15,13 +16,30 @@ export const slice = createSlice({
   reducers: {
     refresh: (state, action: PayloadAction<ITermDataResponse>) => {
       state.word = action.payload;
+      upgrade(action.payload);
+    },
+    upgrade: (state, action: PayloadAction<ITermDataResponse>) => {
+      if (state.termCache) {
+        if (
+          state.termCache.find(
+            (value) => value.word === action.payload.word
+          ) === undefined
+        ) {
+          state.termCache.push(action.payload);
+        }
+      } else {
+        state.termCache = [action.payload];
+      }
     },
   },
 });
 
-export const { refresh } = slice.actions;
+export const { refresh, upgrade } = slice.actions;
 
 export const changedTerm = (state: RootState): ITermDataResponse | undefined =>
   state.termChange.word;
 
+export const termCache = (state: RootState): ITermDataResponse[] | undefined =>
+  state.termChange.termCache;
+
 export default slice.reducer;