Untitled
unknown
plain_text
2 years ago
2.0 kB
13
Indexable
import { createSlice } from '@reduxjs/toolkit';
import { request } from '../utils/api-config';
import { updateIsAuthenticated } from './auth-slice';
import Cookies from 'js-cookie';
import { useNavigate }from 'react-router-dom';
const registrationSlice = createSlice({
name: 'registration',
initialState: {
user: null,
loading: false,
error: null,
},
reducers: {
registrationRequest: (state) => {
state.loading = true;
state.error = null;
},
registrationSuccess: (state, action) => {
state.loading = false;
state.user = action.payload;
Cookies.set('refreshToken', action.payload.refreshToken, { expires: 365 });
},
registrationFailure: (state, action) => {
state.loading = false;
state.error = action.payload;
},
clearUser: (state) => {
state.user = null;
},
},
});
export const {
registrationRequest,
registrationSuccess,
registrationFailure,
clearUser,
} = registrationSlice.actions;
export const registerUser = (userData) => async (dispatch) => {
try {
dispatch(registrationRequest());
const response = await request('/auth/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(userData),
});
console.log(response.user)
if(response && response.user) {
console.log("я тут")
dispatch(registrationSuccess(response.user));
dispatch(updateIsAuthenticated(true));
console.log("cюды дошла")
const navigate = useNavigate()
console.log("а теперь тут")
navigate('/');
} else {
dispatch(registrationFailure('Не получилось зарегистрироваться, пожалуйста, проверьте данные'));
}
} catch (error) {
dispatch(registrationFailure(`Error: ${error.message}`));
}
};
export default registrationSlice.reducer;
Editor is loading...