feat: EveryPublish Web 管理端重构与全平台发布接入
- 新增 React + TDesign 管理端(sau_web_react),替代历史 Vue 前端 - 后端接入 11 平台登录/发布(视频+图文),check_cookie 扩展全平台 - 异步发布任务 + 实时进度监控 + 发布日志 - Open API 开放体系(API Key 鉴权 + 7 个开放接口 + API 文档页) - 账号单/批量校验与批量删除 - 全局配置(登录方式 + 发布静默模式) - 统一浏览器为系统 Chrome,品牌文案统一为 EveryPublish
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import { createSlice, createAsyncThunk, PayloadAction } from '@reduxjs/toolkit';
|
||||
import { RootState } from '../store';
|
||||
import { getMaterials as fetchMaterials, IMaterial } from 'services/material';
|
||||
|
||||
const namespace = 'material';
|
||||
|
||||
interface IMaterialState {
|
||||
loading: boolean;
|
||||
materials: IMaterial[];
|
||||
}
|
||||
|
||||
const initialState: IMaterialState = {
|
||||
loading: false,
|
||||
materials: [],
|
||||
};
|
||||
|
||||
export const loadMaterials = createAsyncThunk(namespace + '/loadMaterials', async () => {
|
||||
return await fetchMaterials();
|
||||
});
|
||||
|
||||
const materialSlice = createSlice({
|
||||
name: namespace,
|
||||
initialState,
|
||||
reducers: {
|
||||
setMaterials: (state, action: PayloadAction<IMaterial[]>) => {
|
||||
state.materials = action.payload;
|
||||
},
|
||||
},
|
||||
extraReducers: (builder) => {
|
||||
builder
|
||||
.addCase(loadMaterials.pending, (state) => {
|
||||
state.loading = true;
|
||||
})
|
||||
.addCase(loadMaterials.fulfilled, (state, action) => {
|
||||
state.loading = false;
|
||||
state.materials = action.payload;
|
||||
})
|
||||
.addCase(loadMaterials.rejected, (state) => {
|
||||
state.loading = false;
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
export const { setMaterials } = materialSlice.actions;
|
||||
export const selectMaterials = (state: RootState) => state.material.materials;
|
||||
export const selectMaterialLoading = (state: RootState) => state.material.loading;
|
||||
export default materialSlice.reducer;
|
||||
Reference in New Issue
Block a user