Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions frontend/src/App.css
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,13 @@ nav {
gap: 1.5rem; /* Adjust the space between cards */
padding: 1.5rem;
justify-items: center; /* Center cards within their grid cell */

.no-cards{
align-items: center;
align-self: center;
justify-self: center;
text-align: center;
}
}


Expand Down
6 changes: 3 additions & 3 deletions frontend/src/components/DashbordCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export default function DashbordCard(props:Readonly<DashbordCardProps>) {
// const [cartItems,setCartItems]=useState<string[]>(props.user.shoppingCart);
function postAddToCart (addedElementForPreRender:string) {
// adding the element early to render the button faster
props.setShoppingCart([... props.shoppingCart,addedElementForPreRender]);
props.setShoppingCart([...(props.shoppingCart || []),addedElementForPreRender]);
// console.table([props.user.id,props.id]);
axios.post("/api/changeCart",{
userId: props.user.id,
Expand All @@ -30,14 +30,14 @@ export default function DashbordCard(props:Readonly<DashbordCardProps>) {
}).catch(e => {
console.error(e);
// setting the value back in case it fails
props.setShoppingCart(props.shoppingCart.filter(id => id !== addedElementForPreRender));
props.setShoppingCart((props.shoppingCart || []).filter(id => id !== addedElementForPreRender));
})
}

return (
<div className={"card"}>
<Card id={props.id} image={props.image} name={props.name} price={props.price} provider={props.provider}/>
{props.shoppingCart.includes(props.id)?
{props.shoppingCart!=null && props.shoppingCart.includes(props.id)?
<button className={"addedToCart"}><FaCheck /> Added to cart</button>
:
<button onClick={() => postAddToCart(props.id)}><MdAddShoppingCart /> Add to cart</button>
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export function Navbar({user, setUser, discounts, setFilteredDiscounts,shoppingC
{user &&
<div onClick={navigateToUserPref} onKeyDown={handleKeyDown} role="button" tabIndex={0} className={"navbar-avatar-comp"}>
<img src={user.avatarUrl} alt={user.userName} className={"navbar-avatar"}/>
{shoppingCart.length > 0 &&
{shoppingCart!=null && shoppingCart.length > 0 &&
<span className={"item-number"}>
{shoppingCart.length}
</span>
Expand Down
11 changes: 7 additions & 4 deletions frontend/src/components/UserPref.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,16 @@ import UserPrefCard from "./UserPrefCard.tsx";
type UserPrefProps = {
user: userInfoType,
discounts: DiscountInfoType[],
shoppingCart: string[]
shoppingCart: string[],
setShoppingCart:(shoppingCart:string[])=>void
}

export default function UserPref({user, discounts, shoppingCart,setShoppingCart}: Readonly<UserPrefProps>) {
const nav = useNavigate();
const userSavedDiscounts = discounts.filter(discount => shoppingCart.includes(discount.id));
let userSavedDiscounts;
if(shoppingCart){
userSavedDiscounts = discounts.filter(discount => shoppingCart.includes(discount.id));
}

return (
<div>
Expand All @@ -24,7 +27,7 @@ export default function UserPref({user, discounts, shoppingCart,setShoppingCart}
<h2>Your saved discounts:</h2>
</div>
<div className={"card-grid"}>
{userSavedDiscounts.length > 0 ?
{userSavedDiscounts && userSavedDiscounts.length > 0 ?
userSavedDiscounts.map(
(discount: DiscountInfoType) => (
<UserPrefCard key={discount.id}
Expand All @@ -35,7 +38,7 @@ export default function UserPref({user, discounts, shoppingCart,setShoppingCart}
provider={discount.provider}
user={user}
shoppingCart={shoppingCart}
setShoppingCart={setShoppingCart}/>)) : <p>You have no saved discounts yet.</p>
setShoppingCart={setShoppingCart}/>)) : <p className={"no-cards"}>You have no saved discounts yet.</p>
}
</div>
</div>
Expand Down