mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-06 03:46:10 +08:00
36 lines
950 B
TypeScript
36 lines
950 B
TypeScript
import {CaseReducer, createAsyncThunk, createSlice, PayloadAction} from "@reduxjs/toolkit";
|
|
import {getGlobalConf as getGlobalConfApi} from "src/api/config";
|
|
import {GlobalConf} from "src/utils/type";
|
|
import {RootState} from ".";
|
|
|
|
|
|
const initialState: GlobalConf = {
|
|
platformConf: {},
|
|
loaded: false
|
|
}
|
|
|
|
const setGlobalConf: CaseReducer<GlobalConf, PayloadAction<GlobalConf>> = (_, action) => {
|
|
return {...action.payload, loaded: true}
|
|
}
|
|
|
|
export const getGlobalConf = createAsyncThunk(
|
|
"globalConf/set",
|
|
getGlobalConfApi,
|
|
{
|
|
condition: (_, { getState }) => !(getState() as RootState).globalConf.loaded
|
|
}
|
|
);
|
|
|
|
export const globalConfSlice = createSlice({
|
|
name: "globalConf",
|
|
initialState,
|
|
reducers: {},
|
|
extraReducers: (builder) => {
|
|
builder.addCase(getGlobalConf.fulfilled, setGlobalConf)
|
|
}
|
|
})
|
|
|
|
export const platformConfSelector = (state: RootState) => state.globalConf.platformConf
|
|
|
|
export default globalConfSlice.reducer
|