mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2026-06-10 04:39:18 +08:00
97a0f04808
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
|
|
import { RootState } from '../../app/store';
|
|
import { GlobalConf } from '../../utils/type';
|
|
import { globalConfUrl } from '../../utils/urls';
|
|
|
|
const initialState = {
|
|
loaded: false,
|
|
platformConf: {},
|
|
siteConf: {},
|
|
} as GlobalConf;
|
|
|
|
export const loadGlobalConf = createAsyncThunk(
|
|
'globalConf/load',
|
|
async () => {
|
|
const res = await fetch(globalConfUrl);
|
|
return (await res.json()) as GlobalConf;
|
|
},
|
|
);
|
|
|
|
export const globalConfSlice = createSlice({
|
|
name: 'globalConf',
|
|
initialState,
|
|
reducers: {},
|
|
extraReducers(builder) {
|
|
builder
|
|
.addCase(loadGlobalConf.fulfilled, (state, payload) => {
|
|
state.platformConf = payload.payload.platformConf;
|
|
state.siteConf = payload.payload.siteConf;
|
|
state.loaded = true;
|
|
});
|
|
},
|
|
});
|
|
|
|
export default globalConfSlice.reducer;
|
|
|
|
export const selectGlobalConfLoaded = (state: RootState) => state.globalConf.loaded;
|
|
export const selectPlatformConf = (state: RootState) => state.globalConf.platformConf;
|
|
export const selectSiteConf = (state: RootState) => state.globalConf.siteConf;
|