redux/actions /profile.js
Navnit Rai
Posted on September 22, 2024
import { server } from '../store'; // Importing server endpoint
import axios from 'axios'; // Importing axios for HTTP requests
// Action to update user profile
export const updateProfile = (name, email) => async dispatch => {
try {
dispatch({ type: 'updateProfileRequest' });
const { data } = await axios.put(
`${server}/updateprofile`,
{ name, email },
{
headers: { 'Content-type': 'application/json' },
withCredentials: true, // Include credentials for CORS requests
}
);
dispatch({ type: 'updateProfileSuccess', payload: data.message });
} catch (error) {
dispatch({
type: 'updateProfileFail',
payload: error.response.data.message, // Sending error message
});
}
};
// Action to update user profile picture
export const updateProfilePicture = formdata => async dispatch => {
try {
dispatch({ type: 'updateProfilePictureRequest' });
const { data } = await axios.put(
`${server}/updateprofilepicture`,
formdata,
{
headers: { 'Content-type': 'multipart/form-data' },
withCredentials: true,
}
);
dispatch({ type: 'updateProfilePictureSuccess', payload: data.message });
} catch (error) {
dispatch({
type: 'updateProfilePictureFail',
payload: error.response.data.message,
});
}
};
// Action to change user password
export const changePassword = (oldPassword, newPassword) => async dispatch => {
try {
dispatch({ type: 'changePasswordRequest' });
const { data } = await axios.put(
`${server}/changepassword`,
{ oldPassword, newPassword },
{
headers: { 'Content-type': 'application/json' },
withCredentials: true,
}
);
dispatch({ type: 'changePasswordSuccess', payload: data.message });
} catch (error) {
dispatch({
type: 'changePasswordFail',
payload: error.response.data.message,
});
}
};
// Action for forgetting password
export const forgetPassword = email => async dispatch => {
try {
dispatch({ type: 'forgetPasswordRequest' });
const { data } = await axios.post(
`${server}/forgetpassword`,
{ email },
{
headers: { 'Content-type': 'application/json' },
withCredentials: true,
}
);
dispatch({ type: 'forgetPasswordSuccess', payload: data.message });
} catch (error) {
dispatch({
type: 'forgetPasswordFail',
payload: error.response.data.message,
});
}
};
// Action to reset password
export const resetPassword = (token, password) => async dispatch => {
try {
dispatch({ type: 'resetPasswordRequest' });
const { data } = await axios.put(
`${server}/resetpassword/${token}`,
{ password },
{
headers: { 'Content-type': 'application/json' },
withCredentials: true,
}
);
dispatch({ type: 'resetPasswordSuccess', payload: data.message });
} catch (error) {
dispatch({
type: 'resetPasswordFail',
payload: error.response.data.message,
});
}
};
// Action to add a course to the playlist
export const addToPlaylist = id => async dispatch => {
try {
dispatch({ type: 'addToPlaylistRequest' });
const { data } = await axios.post(
`${server}/addtoplaylist`,
{ id },
{
headers: { 'Content-type': 'application/json' },
withCredentials: true,
}
);
dispatch({ type: 'addToPlaylistSuccess', payload: data.message });
} catch (error) {
dispatch({
type: 'addToPlaylistFail',
payload: error.response.data.message,
});
}
};
// Action to remove a course from the playlist
export const removeFromPlaylist = id => async dispatch => {
try {
dispatch({ type: 'removeFromPlaylistRequest' });
const { data } = await axios.delete(
`${server}/removefromplaylist?id=${id}`,
{ withCredentials: true }
);
dispatch({ type: 'removeFromPlaylistSuccess', payload: data.message });
} catch (error) {
dispatch({
type: 'removeFromPlaylistFail',
payload: error.response.data.message,
});
}
};
💖 💪 🙅 🚩
Navnit Rai
Posted on September 22, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
githubcopilot AI Innovations at Microsoft Ignite 2024 What You Need to Know (Part 2)
November 29, 2024