From 8f7075db28a62e7f0c38ae0e887d5fb1e3ebfe2a Mon Sep 17 00:00:00 2001 From: OllyNicholass Date: Tue, 15 Oct 2024 19:36:17 +0100 Subject: [PATCH 1/3] feat(#34): display message in place of add to basket for prior purchase --- .../products/[productId]/+page.server.ts | 35 +++++++ src/routes/products/[productId]/+page.svelte | 98 ++++++++++--------- src/routes/products/[productId]/+page.ts | 4 - 3 files changed, 86 insertions(+), 51 deletions(-) create mode 100644 src/routes/products/[productId]/+page.server.ts delete mode 100644 src/routes/products/[productId]/+page.ts diff --git a/src/routes/products/[productId]/+page.server.ts b/src/routes/products/[productId]/+page.server.ts new file mode 100644 index 0000000..d99e062 --- /dev/null +++ b/src/routes/products/[productId]/+page.server.ts @@ -0,0 +1,35 @@ +import { redirect } from '@sveltejs/kit'; +import { hasProductAccess } from '$lib/utils/supabase/admin'; + +export const load = async ({ params, locals: { safeGetSession }, fetch }) => { + const { session } = await safeGetSession(); + if (!session) { + throw redirect(303, '/login'); // Redirect unauthenticated users to login + } + + const productResponse = await fetch(`/products/${params.productId}`); + const product = await productResponse.json(); + + // Create the item object + const item = { + id: product.id, + name: product.name, + categoryDescription: product.description, + imgAlt: product.description, + imgSrc: product.images[0], + price: 0, + priceId: product.default_price, + quantity: 1 + } + + // Fetch the price of the product + const priceResponse = await fetch(`/products/prices/${product.default_price}`); + const price = await priceResponse.json(); + // Set the price of the product + item.price = price.unit_amount / 100; + + // Check if the user has access to the 'EXAMPLE PRODUCT' product + const hasPurchasedProduct = await hasProductAccess(session.user.id, params.productId); + + return { params, hasPurchasedProduct, item }; +}; diff --git a/src/routes/products/[productId]/+page.svelte b/src/routes/products/[productId]/+page.svelte index 6e81008..e000679 100644 --- a/src/routes/products/[productId]/+page.svelte +++ b/src/routes/products/[productId]/+page.svelte @@ -1,11 +1,15 @@
@@ -370,27 +351,50 @@ - + + + + Add to basket + + {:else} + + {/if}
+ {#if !hasPurchasedProduct} + {:else} + + {/if} {:else}
diff --git a/src/routes/products/[productId]/+page.ts b/src/routes/products/[productId]/+page.ts deleted file mode 100644 index fd0e3fa..0000000 --- a/src/routes/products/[productId]/+page.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('./$types').PageLoad} */ -export function load({ params }) { - return params; -} From 29f418cc91f688a763df27f1e4bd708dd45f3daa Mon Sep 17 00:00:00 2001 From: OllyNicholass Date: Tue, 15 Oct 2024 20:48:51 +0100 Subject: [PATCH 3/3] feat(#34): update already purchased button --- src/routes/products/[productId]/+page.svelte | 101 ++++--------------- 1 file changed, 21 insertions(+), 80 deletions(-) diff --git a/src/routes/products/[productId]/+page.svelte b/src/routes/products/[productId]/+page.svelte index 5c6593c..b7b1092 100644 --- a/src/routes/products/[productId]/+page.svelte +++ b/src/routes/products/[productId]/+page.svelte @@ -78,9 +78,6 @@ class="data w-full lg:pr-8 pr-0 xl:justify-start justify-center flex items-center max-lg:pb-10 xl:my-2 lg:my-5 my-0" >
-

{item.name}

@@ -270,33 +267,8 @@ all size is available - - {#if !item.isSubscription} + {#if !item.isSubscription && !hasPurchasedProduct}
- {#if !hasPurchasedProduct} - {:else} - - {/if}
{:else} -
- - -
+ {#if hasPurchasedProduct} +
+ +
+ {/if} + {#if item.isSubscription} +
+ +
+ {/if} {/if}