mirror of
https://github.com/Funkoala14/CreatorCenter_OOIN.git
synced 2025-06-07 22:58:14 +08:00
99 lines
2.9 KiB
JavaScript
99 lines
2.9 KiB
JavaScript
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
|
|
import api from '@/services/api';
|
|
import { setNotificationBarMessage } from './notificationBarSlice';
|
|
|
|
const mockCreators = [
|
|
{
|
|
id: 1,
|
|
sessions: 1,
|
|
creator: 12,
|
|
shoppableCreators: 12,
|
|
avgFollowers: 12,
|
|
avgGMV: 12,
|
|
avgVideoViews: 12,
|
|
date: '2021-01-01',
|
|
},
|
|
{
|
|
id: 2,
|
|
sessions: 2,
|
|
creator: 12,
|
|
shoppableCreators: 12,
|
|
avgFollowers: 12,
|
|
avgGMV: 12,
|
|
avgVideoViews: 12,
|
|
date: '2021-01-01',
|
|
},
|
|
];
|
|
export const fetchDiscovery = createAsyncThunk(
|
|
'discovery/fetchDiscovery',
|
|
async (searchParams, { rejectWithValue }) => {
|
|
try {
|
|
const response = await api.post('/creators/search/', searchParams);
|
|
if (response.code === 200) {
|
|
return response.data;
|
|
}
|
|
throw new Error(response.message);
|
|
} catch (error) {
|
|
dispatch(setNotificationBarMessage({ message: error.message, type: 'error' }));
|
|
return rejectWithValue(error.message);
|
|
}
|
|
}
|
|
);
|
|
|
|
export const fetchDiscoveryByMode = createAsyncThunk(
|
|
'discovery/fetchDiscoveryByMode',
|
|
async (params, { rejectWithValue }) => {
|
|
try {
|
|
const response = await api.post('/discovery/creators/search_tags/', params);
|
|
if (response.code === 200) {
|
|
return response.data;
|
|
}
|
|
throw new Error(response.message);
|
|
} catch (error) {
|
|
dispatch(setNotificationBarMessage({ message: error.message, type: 'error' }));
|
|
return rejectWithValue(error.message);
|
|
}
|
|
}
|
|
);
|
|
|
|
const initialState = {
|
|
creators: [],
|
|
status: 'idle',
|
|
error: null,
|
|
};
|
|
|
|
const discoverySlice = createSlice({
|
|
name: 'discovery',
|
|
initialState,
|
|
reducers: {},
|
|
extraReducers: (builder) => {
|
|
builder
|
|
.addCase(fetchDiscovery.pending, (state) => {
|
|
state.status = 'loading';
|
|
})
|
|
.addCase(fetchDiscovery.fulfilled, (state, action) => {
|
|
state.status = 'succeeded';
|
|
state.creators = action.payload;
|
|
})
|
|
.addCase(fetchDiscovery.rejected, (state, action) => {
|
|
state.status = 'failed';
|
|
state.error = action.error.message;
|
|
})
|
|
.addCase(fetchDiscoveryByMode.pending, (state) => {
|
|
state.status = 'loading';
|
|
})
|
|
.addCase(fetchDiscoveryByMode.fulfilled, (state, action) => {
|
|
state.status = 'succeeded';
|
|
state.creators = action.payload;
|
|
})
|
|
.addCase(fetchDiscoveryByMode.rejected, (state, action) => {
|
|
state.status = 'failed';
|
|
state.error = action.error.message;
|
|
});
|
|
},
|
|
});
|
|
|
|
export const {} = discoverySlice.actions;
|
|
|
|
export default discoverySlice.reducer;
|