From 6482c9ddaba7d390c5be2e921991ebf7aaa87c7b Mon Sep 17 00:00:00 2001 From: Dominic Ferrando Date: Fri, 31 Jul 2026 13:18:59 -0400 Subject: [PATCH] Add sync order button --- apps/api/src/server.ts | 14 +++++++++ .../routes/(app)/apparel/orders/+page.svelte | 31 ++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/apps/api/src/server.ts b/apps/api/src/server.ts index 94acd5f..5813c59 100644 --- a/apps/api/src/server.ts +++ b/apps/api/src/server.ts @@ -286,6 +286,20 @@ export const app = new Elysia() return { wOrder, pOrder }; }, { params: t.Object({ wOrderId: t.String() }) }) + .post("/sync/:wOrderId", async ({ params: { wOrderId } }) => { + const wOrder = await s.Commerce.Webflow.Orders.get(wOrderId); + if (!wOrder) throw new NotFoundError("Missing webflow order"); + + const pOrder = await s.Commerce.Printful.Orders.get(`@${wOrder.orderId}`); + if (pOrder) throw status(409, { error: "Cannot sync an already synced webflow order" }); + + await s.Commerce.Apparel.Orders.Queue.enqueue({ + type: "apparel_order_create", + source: "portal", + payload: { wOrder } + }); + + }, { params: t.Object({ wOrderId: t.String() }) }) ) ) diff --git a/apps/portal/src/routes/(app)/apparel/orders/+page.svelte b/apps/portal/src/routes/(app)/apparel/orders/+page.svelte index 23060d4..7dfdf3f 100644 --- a/apps/portal/src/routes/(app)/apparel/orders/+page.svelte +++ b/apps/portal/src/routes/(app)/apparel/orders/+page.svelte @@ -13,6 +13,8 @@ let loadError = $state(null); let offset = $state(0); + let syncingWOrderId = $state(null); + function errorMessage(err: unknown): string { const value = (err as { value?: { error?: string } })?.value; return ( @@ -21,6 +23,19 @@ ); } + async function sync(wOrderId: string) { + syncingWOrderId = wOrderId; + loadError = null; + try { + const res = await api.commerce.orders.sync({ wOrderId }).post(); + if (res.error) throw res.error; + } catch (err) { + loadError = errorMessage(err); + } finally { + syncingWOrderId = null; + } + } + async function refresh() { loading = true; loadError = null; @@ -92,6 +107,7 @@ Id Status + Sync @@ -119,10 +135,23 @@
Desynced
{/if} + + {#if !order.isSynced} + + {/if} + {:else} - + {loading ? "Loading..." : "No orders found"}