aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-07-28 18:23:57 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-07-28 18:23:57 +0200
commit0d100b83f8ba818c2f32663f415649db03534548 (patch)
tree875913667d254515dfe828aa14249010ddacdb4f
parentebe7b49f3f1306d20778a4964e6fe26f82db1b50 (diff)
fix: redirect to origin page after deleting an item
-rw-r--r--README.md1
-rw-r--r--src/routes/+page.svelte2
-rw-r--r--src/routes/catalog/+page.svelte4
-rw-r--r--src/routes/grocery/[id]/+page.server.ts9
-rw-r--r--src/routes/grocery/[id]/+page.svelte3
5 files changed, 12 insertions, 7 deletions
diff --git a/README.md b/README.md
index 29ac333..e3b9feb 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,6 @@ efficient shopping walk.
## TODO
- [ ] Weird form stickyness that collapse the gap with the navbar
-- [ ] Keyboard focus
- [ ] PWA
- [ ] Live updates from server
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 6d9d85f..25985f1 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -131,7 +131,7 @@
{/if}
</span>
</button>
- <a class="ref-link" href="/grocery/{item.id}">&rarr;</a>
+ <a class="ref-link" href="/grocery/{item.id}?from=/">&rarr;</a>
</li>
{/each}
</ul>
diff --git a/src/routes/catalog/+page.svelte b/src/routes/catalog/+page.svelte
index 4b43c02..469faa1 100644
--- a/src/routes/catalog/+page.svelte
+++ b/src/routes/catalog/+page.svelte
@@ -46,7 +46,9 @@
{/if}
</span>
</button>
- <a class="ref-link" href="/grocery/{item.id}">&rarr;</a>
+ <a class="ref-link" href="/grocery/{item.id}?from=/catalog"
+ >&rarr;</a
+ >
</li>
{/each}
</ul>
diff --git a/src/routes/grocery/[id]/+page.server.ts b/src/routes/grocery/[id]/+page.server.ts
index 6aed71e..d06c810 100644
--- a/src/routes/grocery/[id]/+page.server.ts
+++ b/src/routes/grocery/[id]/+page.server.ts
@@ -23,7 +23,7 @@ export interface GroceryDetailOutput {
categories: Category[];
}
-export const load: PageServerLoad = async ({ params }) => {
+export const load: PageServerLoad = async ({ params, url }) => {
const id = numericId(params.id);
const [item] = await db.select().from(groceries).where(eq(groceries.id, id));
@@ -38,6 +38,7 @@ export const load: PageServerLoad = async ({ params }) => {
const refs = await loadForGrocery(id);
const cats = await loadCategories();
+ const from = url.searchParams.get('from') || '/';
return {
item: {
@@ -46,6 +47,7 @@ export const load: PageServerLoad = async ({ params }) => {
},
references: refs,
categories: cats,
+ from,
};
};
@@ -95,7 +97,8 @@ export const actions: Actions = {
deleteItem: async ({ params, request }) => {
const groceryId = numericId(params.id);
await deleteGrocery(groceryId);
- const referer = request.headers.get('referer');
- throw redirect(303, referer || '/');
+ const data = await request.formData();
+ const from = parseFormString(data.get('from')) || '/';
+ throw redirect(303, from);
},
};
diff --git a/src/routes/grocery/[id]/+page.svelte b/src/routes/grocery/[id]/+page.svelte
index c74166b..6588ec0 100644
--- a/src/routes/grocery/[id]/+page.svelte
+++ b/src/routes/grocery/[id]/+page.svelte
@@ -137,10 +137,11 @@
{/if}
<form method="POST" action="?/deleteItem" use:enhance>
+ <input type="hidden" name="from" value={data.from} />
<button type="submit" class="delete-item-btn">Supprimer l'article</button>
</form>
-<a href="/" class="back-link">&larr; Retour à la liste</a>
+<a href={data.from} class="back-link">&larr; Retour</a>
<style>
.ref-row {