diff --git a/src/pages/PrivateCreator.jsx b/src/pages/PrivateCreator.jsx
index f20ba87..381cdf9 100644
--- a/src/pages/PrivateCreator.jsx
+++ b/src/pages/PrivateCreator.jsx
@@ -3,12 +3,22 @@ import SearchBar from '../components/SearchBar';
import { Button } from 'react-bootstrap';
import DatabaseFilter from '../components/DatabaseFilter';
import PrivateCreatorList from '../components/PrivateCreatorList';
+import { searchPrivateCreators } from '../store/slices/creatorsSlice';
+import { useDispatch } from 'react-redux';
export default function PrivateCreator({ path }) {
+ const [searchValue, setSearchValue] = useState('');
+ const dispatch = useDispatch();
+
+ const handleSearch = (e) => {
+ e.preventDefault();
+ dispatch(searchPrivateCreators({ q: searchValue, mode: 'or', page: 1, page_size: 10 }));
+ };
+
return (
-
+ setSearchValue(e.target.value)} />
diff --git a/src/store/slices/creatorsSlice.js b/src/store/slices/creatorsSlice.js
index bfa71d8..8d12cf4 100644
--- a/src/store/slices/creatorsSlice.js
+++ b/src/store/slices/creatorsSlice.js
@@ -1,5 +1,6 @@
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
import api from '@/services/api';
+import { setNotificationBarMessage } from './notificationBarSlice';
const mockVideos = [
{
@@ -221,7 +222,7 @@ export const fetchCreators = createAsyncThunk(
async ({ page = 1 }, { getState, rejectWithValue }) => {
try {
const state = getState();
- const { pricing, views_range, ...filter } = state.filters;
+ const filter = state.filters;
const { code, data, message, pagination } = await api.post(
`/daren_detail/public/creators/filter/?page=${page}`,
@@ -243,7 +244,7 @@ export const fetchPrivateCreators = createAsyncThunk(
async ({ page = 1 }, { getState, rejectWithValue, dispatch }) => {
try {
const state = getState();
- const { pricing, views_range, ...filter } = state.filters;
+ const filter = state.filters;
const { code, data, message, pagination } = await api.post(
`/daren_detail/private/pools/creators/filter/?page=${page}`,
@@ -260,6 +261,54 @@ export const fetchPrivateCreators = createAsyncThunk(
}
);
+/**
+ * 搜索公有达人库达人
+ * @param {Object} params
+ * @param {string} params.q 搜索关键词
+ * @param {string} params.mode 搜索类型 OR 和 AND 固定or
+ * @param {number} params.page 页码
+ * @param {number} params.page_size 每页条数
+ */
+export const searchCreators = createAsyncThunk(
+ 'creators/searchPublicCreators',
+ async (params, { rejectWithValue, dispatch }) => {
+ try {
+ const response = await api.get(`/daren_detail/creators/search/`, { params });
+ if (response.code === 200) {
+ return response;
+ } else {
+ throw new Error(response.message);
+ }
+ } catch (error) {
+ return rejectWithValue(error.message);
+ }
+ }
+);
+
+/**
+ * 搜索私有达人库达人
+ * @param {Object} params
+ * @param {string} params.q 搜索关键词
+ * @param {string} params.mode 搜索类型 OR 和 AND 固定or
+ * @param {number} params.page 页码
+ * @param {number} params.page_size 每页条数
+ */
+export const searchPrivateCreators = createAsyncThunk(
+ 'creators/searchPrivateCreators',
+ async (params, { rejectWithValue, dispatch }) => {
+ try {
+ const response = await api.get(`/daren_detail/private/creators/search/`, { params });
+ if (response.code === 200) {
+ return response;
+ } else {
+ throw new Error(response.message);
+ }
+ } catch (error) {
+ return rejectWithValue(error.message);
+ }
+ }
+);
+
export const fetchCreatorDetail = createAsyncThunk(
'creators/fetchCreatorDetail',
async ({ creatorId }, { dispatch, rejectWithValue }) => {
@@ -474,6 +523,32 @@ const creatorsSlice = createSlice({
})
.addCase(fetchCreatorVideos.fulfilled, (state, action) => {
state.selectedCreator.videosData = action.payload.data;
+ })
+ .addCase(searchCreators.pending, (state) => {
+ state.status = 'loading';
+ })
+ .addCase(searchPrivateCreators.pending, (state) => {
+ state.status = 'loading';
+ })
+ .addCase(searchCreators.fulfilled, (state, action) => {
+ state.publicCreators = action.payload.data;
+ state.status = 'succeeded';
+ state.error = null;
+ })
+ .addCase(searchPrivateCreators.fulfilled, (state, action) => {
+ state.privateCreators = action.payload.data;
+ state.status = 'succeeded';
+ state.error = null;
+ })
+ .addCase(searchCreators.rejected, (state, action) => {
+ state.status = 'failed';
+ state.error = action.payload;
+ console.log('searchCreators.rejected', action);
+
+ })
+ .addCase(searchPrivateCreators.rejected, (state, action) => {
+ state.status = 'failed';
+ state.error = action.payload;
});
},
});