constants added

parent edbab906
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
\ No newline at end of file
...@@ -137,19 +137,27 @@ app.patch('/updateuser/:id', (req, res) => { ...@@ -137,19 +137,27 @@ app.patch('/updateuser/:id', (req, res) => {
} }
}) })
app.get('/cartItems/:userid', (req, res) => { app.get('/cartItems/:userid', async(req, res) => {
const userid = req.params.userid const userid = req.params.userid
const usernameRegex = /^[a-zA-Z0-9_]{1,10}$/; const usernameRegex = /^[a-zA-Z0-9_]{1,10}$/;
if (usernameRegex.test(userid)) { if (usernameRegex.test(userid)) {
db.collection('cartitems').findOne({ userId: userid }) try {
.then(result => { const result = await db.collection('cartitems').findOne({ userId: userid });
if (result != null) { if (result != null) {
res.status(200).send(result); res.status(200).send(result);
} else { } else {
res.status(404).json({ error: 'UserCart not found' }); // Create a new cartItems collection
const userName = userid; // Assuming userName is the same as userId
const newCollection = {
userId: userName,
cartItems: []
};
await db.collection('cartitems').insertOne(newCollection);
res.status(200).send(newCollection);
}
} catch (error) {
res.status(401).send(error);
} }
})
.catch(error => res.status(500).send(error))
} else { } else {
res.status(400).json({ error: 'Invalid UserId' }) res.status(400).json({ error: 'Invalid UserId' })
} }
......
...@@ -37,7 +37,7 @@ const Cart = memo(() => { ...@@ -37,7 +37,7 @@ const Cart = memo(() => {
} }
const totalPay = useMemo(() => { const totalPay = useMemo(() => {
return cartItems.reduce((acc, curr) => { return cartItems.reduce((acc, curr) => {
return acc = acc + (parseInt(curr.price) * parseInt(curr.qty)); return acc = acc + (Number(curr.price) * Number(curr.qty));
}, 0) }, 0)
}, [cartItems]) }, [cartItems])
...@@ -74,15 +74,15 @@ const Cart = memo(() => { ...@@ -74,15 +74,15 @@ const Cart = memo(() => {
{ {
cartItems.length > 0 && cartItems.map((item) => <tr key={item.id}> cartItems.length > 0 && cartItems.map((item) => <tr key={item.id}>
<td><img src={item.image} width={50} height={50} /></td> <td><img src={item.image} width={50} height={50} /></td>
<td>{item.price}</td> <td>{Number(item.price)}</td>
<td> <td>
<span className='d-flex justify-content-start align-items-center'> <span className='d-flex justify-content-start align-items-center'>
<button onClick={() => { dispatch(decrementQuantity(item)) }} className='btn btn-tranparent fw-bolder d-flex justify-content-center align-items-center' style={{ height: "15px", width: "15px" }}>-</button> <button onClick={() => { dispatch(decrementQuantity(item)) }} className='btn btn-tranparent fw-bolder d-flex justify-content-center align-items-center' style={{ height: "15px", width: "15px" }}>-</button>
<span> {item.qty} </span> <span> {Number(item.qty)} </span>
<button onClick={() => { dispatch(incrementQuantity(item)) }} className='btn btn-tranparent fw-bolder d-flex justify-content-center align-items-center' style={{ height: "10px", width: "8px" }}>+</button> <button onClick={() => { dispatch(incrementQuantity(item)) }} className='btn btn-tranparent fw-bolder d-flex justify-content-center align-items-center' style={{ height: "10px", width: "8px" }}>+</button>
</span> </span>
</td> </td>
<td>$ {(item.price * item.qty).toFixed()}</td> <td>$ {(Number(item.price) * Number(item.qty)).toFixed()}</td>
<td><button onClick={() => dispatch(removeFromCart(item))} className='bi bi-trash text-danger bg-transparent border-0'></button></td> <td><button onClick={() => dispatch(removeFromCart(item))} className='bi bi-trash text-danger bg-transparent border-0'></button></td>
</tr>) </tr>)
} }
......
...@@ -7,6 +7,7 @@ import { useSelector, useDispatch } from 'react-redux' ...@@ -7,6 +7,7 @@ import { useSelector, useDispatch } from 'react-redux'
import { fetchUsers } from '../../reduxstore/usersSlice'; import { fetchUsers } from '../../reduxstore/usersSlice';
import { RootState } from '../../reduxstore/store'; import { RootState } from '../../reduxstore/store';
import { loginUser } from '../../reduxstore/userDetailsslice'; import { loginUser } from '../../reduxstore/userDetailsslice';
import { base_url } from '../../utils/constants';
const Login: React.FC = memo(() => { const Login: React.FC = memo(() => {
...@@ -35,12 +36,12 @@ const Login: React.FC = memo(() => { ...@@ -35,12 +36,12 @@ const Login: React.FC = memo(() => {
const handleSubmit = async (e: any) => { const handleSubmit = async (e: any) => {
e.preventDefault() e.preventDefault()
await axios.post('http://localhost:4000/login', values) await axios.post(`${base_url}/login`, values)
.then((res) => { .then((res) => {
dispatch(loginUser(res.data.user)) dispatch(loginUser(res.data?.user))
navigate("/products") navigate("/products")
}) })
.catch((err) => setError(err.response.data.message)) .catch((err) => setError(err.response.data?.message))
} }
......
...@@ -5,6 +5,7 @@ import './Register.css'; ...@@ -5,6 +5,7 @@ import './Register.css';
import { useSelector, useDispatch } from 'react-redux' import { useSelector, useDispatch } from 'react-redux'
import { fetchUsers } from '../../reduxstore/usersSlice'; import { fetchUsers } from '../../reduxstore/usersSlice';
import { RootState } from '../../reduxstore/store'; import { RootState } from '../../reduxstore/store';
import { base_url } from '../../utils/constants';
const Register = () => { const Register = () => {
const navigate = useNavigate() const navigate = useNavigate()
...@@ -114,7 +115,7 @@ const Register = () => { ...@@ -114,7 +115,7 @@ const Register = () => {
const handleSubmit = async (e: any) => { const handleSubmit = async (e: any) => {
e.preventDefault() e.preventDefault()
await axios.post('http://localhost:4000/registeruser', values) await axios.post(`${base_url}/registeruser`, values)
.then((res) => { .then((res) => {
navigate("/login") navigate("/login")
}) })
......
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit'; import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
import axios from 'axios'; import axios from 'axios';
import { base_url } from '../utils/constants';
type cartStateType = { type cartStateType = {
...@@ -19,14 +20,13 @@ const initialState: cartStateType = { ...@@ -19,14 +20,13 @@ const initialState: cartStateType = {
}; };
export const fetchCartItems: any = createAsyncThunk('cart/fetchCartItems', async (userid) => { export const fetchCartItems: any = createAsyncThunk('cart/fetchCartItems', async (userid) => {
return await axios.get(`http://localhost:4000/cartItems/${userid}`) return await axios.get(`${base_url}/cartItems/${userid}`)
.then(response => response.data.cartItems); .then(response => response.data.cartItems);
}); });
export const updateCartItems: any = createAsyncThunk('updatecart/updateCartItems', async ({ userId, updateCartItems }: CartItemType) => { export const updateCartItems: any = createAsyncThunk('updatecart/updateCartItems', async ({ userId, updateCartItems }: CartItemType) => {
return await axios.patch(`http://localhost:4000/updateCartItems/${userId}`, updateCartItems) return await axios.patch(`${base_url}/updateCartItems/${userId}`, updateCartItems)
.then(response => { .then(response => {
// console.log(response.data);
return response.data return response.data
}); });
}); });
...@@ -41,7 +41,7 @@ const cartSlice = createSlice({ ...@@ -41,7 +41,7 @@ const cartSlice = createSlice({
const newItem = action.payload; const newItem = action.payload;
if (prevCartItems.find((item) => item.id === newItem.id)) { if (prevCartItems.find((item) => item.id === newItem.id)) {
const index = prevCartItems.indexOf(prevCartItems.find((item) => item.id === newItem.id)); const index = prevCartItems.indexOf(prevCartItems.find((item) => item.id === newItem.id));
let updatedItem = { ...prevCartItems[index], qty: prevCartItems[index].qty + 1 }; let updatedItem = { ...prevCartItems[index], qty: prevCartItems[index].qty + Number(1) };
prevCartItems[index] = updatedItem; prevCartItems[index] = updatedItem;
state.cartItems = [...prevCartItems]; state.cartItems = [...prevCartItems];
} else { } else {
......
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit'; import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
import axios from 'axios'; import axios from 'axios';
import { base_url } from '../utils/constants';
type productsStateType = { type productsStateType = {
loading: boolean; loading: boolean;
...@@ -14,7 +15,7 @@ const initialState: productsStateType = { ...@@ -14,7 +15,7 @@ const initialState: productsStateType = {
}; };
export const fetchProducts:any= createAsyncThunk('products/fetchProducts', async () => { export const fetchProducts:any= createAsyncThunk('products/fetchProducts', async () => {
return await axios.get('http://localhost:4000/products') return await axios.get(`${base_url}/products`)
.then(response => response.data); .then(response => response.data);
}); });
......
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit'; import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
import axios from 'axios'; import axios from 'axios';
import { base_url } from '../utils/constants';
type usersStateType = { type usersStateType = {
loading: boolean; loading: boolean;
...@@ -14,7 +15,7 @@ const initialState: usersStateType = { ...@@ -14,7 +15,7 @@ const initialState: usersStateType = {
}; };
export const fetchUsers:any= createAsyncThunk('users/fetchUsers', async () => { export const fetchUsers:any= createAsyncThunk('users/fetchUsers', async () => {
return await axios.get('http://localhost:4000/users') return await axios.get(`${base_url}/users`)
.then(response => response.data); .then(response => response.data);
}); });
......
// export const base_url = 'http://localhost:4000'
export const base_url = 'https://shopperserver.netlify.app/.netlify/functions/api'
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment