Use array of UUIDs + Amount for cart data

This is very unstable, but works on the power of will and hope
This commit is contained in:
Michał Gdula 2024-05-01 18:55:51 +01:00
parent b7bc7da366
commit 04f7d40e52
4 changed files with 73 additions and 27 deletions

View file

@ -12,14 +12,37 @@ try {
function createCartStore() {
const cart = writable(local);
function addToCart(item: any) {
cart.update((cart) => [...cart, item]);
function addToCart(uuid: string, amount: number) {
let found = false;
get(cart).forEach((item) => {
if (item.uuid === uuid) {
item.amount += amount;
found = true;
}
});
if (!found) {
cart.update((cart) => [...cart, {uuid:uuid,amount:amount}]);
}
// Remove items that have an amount of 0 or lower
cart.update((cart) => cart.filter((item) => item.amount > 0))
}
function getLength() {
return get(cart).length;
}
function getByUUID(uuid: string) {
get(cart).forEach((item) => {
if (item.uuid === uuid) {
return item;
}
})
return {};
}
function removeByUUID(uuid: string) {
cart.update((cart) => cart.filter((item) => item.uuid !== uuid))
}
@ -28,6 +51,7 @@ function createCartStore() {
...cart,
addToCart,
getLength,
getByUUID,
removeByUUID,
}
}

View file

@ -18,7 +18,7 @@ export async function getAnnouncements() {
image: "/BannerExampleImage.jpg",
};
cache.announcement_banner = data;
await fakeDelay(5000)
await fakeDelay(200)
return data;
}
@ -30,7 +30,7 @@ export async function getPopularToday() {
const data = Items;
cache.popular_today = data;
await fakeDelay(2000)
await fakeDelay(200)
return data;
}
@ -62,9 +62,9 @@ export async function getItemByUUID(uuid) {
if (item.uuid === uuid) {
data = item;
}
})
});
await fakeDelay(1000)
await fakeDelay(200)
if (!data) {
throw new Error("Resource could not be found");
@ -74,8 +74,29 @@ export async function getItemByUUID(uuid) {
}
export async function getItemsByUUID(items) {
let data = [];
Items.forEach((itemInDatabase) => {
items.forEach((itemInRequest) => {
if (itemInDatabase.uuid === itemInRequest) {
data.push(itemInDatabase);
}
});
});
await fakeDelay(200)
if (data.length < 0) {
throw new Error("Resource could not be found");
}
return data;
}
export async function postContactEmail(name, email, message) {
await fakeDelay(1000)
await fakeDelay(200)
if (!name) {
throw new Error("Namey missing");