From fdbfbb125d8e857a7c5ea3a824170adefb37c893 Mon Sep 17 00:00:00 2001 From: Dominic Ferrando Date: Fri, 17 Jul 2026 15:33:17 -0400 Subject: [PATCH] Improve look and performance of orders table --- apps/api/src/server.ts | 26 +++ .../(app)/apparel/orders/+page.server.ts | 12 -- .../routes/(app)/apparel/orders/+page.svelte | 176 ++++++++++++------ 3 files changed, 147 insertions(+), 67 deletions(-) delete mode 100644 apps/portal/src/routes/(app)/apparel/orders/+page.server.ts diff --git a/apps/api/src/server.ts b/apps/api/src/server.ts index e0c8d34..55104a4 100644 --- a/apps/api/src/server.ts +++ b/apps/api/src/server.ts @@ -237,6 +237,32 @@ export const app = new Elysia() }) ) .group("/orders", (app) => app + .get("/", async ({ query }) => { + const wOrders = await s.Commerce.Webflow.Orders.list({ + status: query.status, + limit: query.limit, + offset: query.offset, + }); + const isSyncedFlags = await Promise.all( + wOrders.map(async (wOrder) => + (await s.Commerce.Printful.Orders.get(`@${wOrder.orderId}`)) !== undefined + ) + ); + return wOrders.map((wOrder, i) => ({ wOrder, isSynced: isSyncedFlags[i] })); + }, { + query: t.Object({ + status: t.Optional(t.Union([ + t.Literal("pending"), + t.Literal("unfulfilled"), + t.Literal("fulfilled"), + t.Literal("disputed"), + t.Literal("dispute-lost"), + t.Literal("refunded"), + ])), + limit: t.Optional(t.Numeric()), + offset: t.Optional(t.Numeric()), + }) + }) .get("/:wOrderId", async ({ params: { wOrderId } }) => { const wOrder = await s.Commerce.Webflow.Orders.get(wOrderId); if (!wOrder) throw new NotFoundError("Missing webflow order"); diff --git a/apps/portal/src/routes/(app)/apparel/orders/+page.server.ts b/apps/portal/src/routes/(app)/apparel/orders/+page.server.ts deleted file mode 100644 index dac4cb6..0000000 --- a/apps/portal/src/routes/(app)/apparel/orders/+page.server.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { printful } from "$lib/printful"; -import { webflow } from "$lib/webflow"; -import type { PageServerLoad } from "./$types"; - -export const load = async ({ }: Parameters[0]) => { - return { - orders: { - printful: printful.Orders.list({ forceAll: true }), - webflow: webflow.Orders.list({ forceAll: true }), - }, - }; -}; diff --git a/apps/portal/src/routes/(app)/apparel/orders/+page.svelte b/apps/portal/src/routes/(app)/apparel/orders/+page.svelte index 3640420..a43bc33 100644 --- a/apps/portal/src/routes/(app)/apparel/orders/+page.svelte +++ b/apps/portal/src/routes/(app)/apparel/orders/+page.svelte @@ -1,62 +1,128 @@ -{#await data.orders.webflow} -

Loading...

-{:then wOrders} -
- - - - - - - - - {#each wOrders as wOrder} - - - - - {/each} - -
IdStatus
- {#await isOrderSynced(wOrder) then isSynced} - {#if isSynced} -
- Synced -
- {:else} -
- Desynced -
- {/if} - {/await} -
+
+ + +
+ + + +
+ +{#if loadError} + -{:catch error} -

Something went wrong: {error.message}

-{/await} +{/if} + +
+ + + + + + + + + {#each orders as order (order.wOrder.orderId)} + + + + + {:else} + + + + {/each} + +
IdStatus
+ {#if order.isSynced} +
Synced
+ {:else} +
Desynced
+ {/if} +
+ {loading ? "Loading..." : "No orders found"} +
+