- Create an Account
+ Create An Account
-
-
@@ -72,3 +127,6 @@ const Register = () => {
};
export default Register;
+
+
+
diff --git a/src/pages/ViewNotes.jsx b/src/pages/ViewNotes.jsx
index 0b7eaca..e85f40c 100644
--- a/src/pages/ViewNotes.jsx
+++ b/src/pages/ViewNotes.jsx
@@ -11,7 +11,8 @@ const ViewNotes = () => {
useEffect(() => {
dispatch(fetchNotes());
- }, [dispatch]);
+
+ }, []);
const handleDelete = async (id) => {
if (!window.confirm("Are you sure you want to delete this note?")) {
diff --git a/src/store/slices/authSlice.js b/src/store/slices/authSlice.js
index 35778d0..125bcac 100644
--- a/src/store/slices/authSlice.js
+++ b/src/store/slices/authSlice.js
@@ -2,6 +2,7 @@ import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";
import axios from "axios";
import { BASE_URL } from "../BaseUrl";
+
// Configure axios to include credentials
axios.defaults.withCredentials = true;
@@ -13,9 +14,17 @@ export const checkAuthStatus = createAsyncThunk(
// 1. Make a GET request to /auth/check
// 2. Return the response data
// 3. Handle errors appropriately
+ // try {
+
+ try {
+ const response = await axios.get(`${BASE_URL}/auth/check`);
+ return response.data;
+ } catch (error) {
+ return rejectWithValue(error.response.data);
+ }
+
}
);
-
// TODO: Implement login thunk
export const login = createAsyncThunk(
"auth/login",
@@ -24,6 +33,12 @@ export const login = createAsyncThunk(
// 1. Make a POST request to /auth/login with credentials
// 2. Return the response data
// 3. Handle errors appropriately
+ try {
+ const response = await axios.post(`${BASE_URL}/auth/login`, credentials)
+ return response.data.user;
+ } catch (error) {
+ return rejectWithValue(error.response.data);
+ }
}
);
@@ -35,6 +50,13 @@ export const register = createAsyncThunk(
// 1. Make a POST request to /auth/register with userData
// 2. Return the response data
// 3. Handle errors appropriately
+ try {
+ const response = await axios.post(`${BASE_URL}/auth/register`, userData)
+ return response.data.user;
+ } catch (error) {
+ return rejectWithValue(error.response.data);
+ }
+
}
);
@@ -45,13 +67,20 @@ export const logout = createAsyncThunk(
// TODO: Implement logout functionality
// 1. Make a POST request to /auth/logout
// 2. Handle errors appropriately
+ try {
+ const response = await axios.post(`${BASE_URL}/auth/logout`)
+
+ } catch (error) {
+
+ return rejectWithValue(error.response.data);
+ }
}
);
const initialState = {
user: null,
isAuthenticated: false,
- loading: true,
+ status: "idle",
error: null,
};
@@ -66,9 +95,58 @@ const authSlice = createSlice({
extraReducers: (builder) => {
builder;
// TODO: Add cases for checkAuthStatus
+ builder.addCase(checkAuthStatus.pending, (state) => {
+ state.status = "loading";
+ })
+ builder.addCase(checkAuthStatus.fulfilled, (state, action) => {
+ state.status = "succeeded";
+ state.isAuthenticated = true;
+ state.user = action.payload;
+ state.error = null;
+ })
+ builder.addCase(checkAuthStatus.rejected, (state) => {
+ state.status = "idle";
+ state.isAuthenticated = false;
+ state.user = null;
+ })
// TODO: Add cases for login
+ builder.addCase(login.pending, (state) => {
+ state.status = "loading";
+ state.error = null;
+ })
+ builder.addCase(login.fulfilled, (state, action) => {
+ state.status = "succeeded";
+ state.isAuthenticated = true;
+ state.user = action.payload;
+ state.error = null;
+ })
+ builder.addCase(login.rejected, (state, action) => {
+ state.status = "failed";
+ state.error = action.error.message;
+ })
// TODO: Add cases for register
+ builder.addCase(register.pending, (state) => {
+ state.status = "loading";
+ state.error = null;
+ })
+ builder.addCase(register.fulfilled, (state, action) => {
+ state.status = "succeeded";
+ state.isAuthenticated = false;
+ state.user = action.payload;
+ state.error = null;
+ })
+ builder.addCase(register.rejected, (state, action) => {
+ state.status = "failed";
+ state.error = action.error.message;
+ })
// TODO: Add cases for logout
+ builder.addCase(logout.fulfilled, (state) => {
+ state.status = "idle";
+ state.isAuthenticated = false;
+ state.user = null;
+ state.error = null;
+ });
+
},
});