From 8d8213cf200706e127b155dc8d5e002e1c61397d Mon Sep 17 00:00:00 2001 From: Yentec Date: Thu, 11 Jun 2026 11:52:14 +0200 Subject: [PATCH 1/3] fix(votes): trigger router.refresh() on failed vote to revert optimistic state --- components/posts/vote-button.tsx | 1 + package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/components/posts/vote-button.tsx b/components/posts/vote-button.tsx index 13247ea..ca72a7f 100644 --- a/components/posts/vote-button.tsx +++ b/components/posts/vote-button.tsx @@ -45,6 +45,7 @@ export function VoteButton({ const result = await toggleVote({ postId }); if (!result.ok) { toast.error(result.error); + router.refresh(); } }); } diff --git a/package-lock.json b/package-lock.json index 0ca9aa4..9dac160 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "feedbackflow", - "version": "1.1.0", + "version": "1.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "feedbackflow", - "version": "1.1.0", + "version": "1.1.1", "hasInstallScript": true, "dependencies": { "@auth/prisma-adapter": "^2.11.2", diff --git a/package.json b/package.json index 5409c73..f357a3b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "feedbackflow", - "version": "1.1.0", + "version": "1.1.1", "private": true, "scripts": { "dev": "next dev", From 835e691163fd01065c4f61f0001e072cba176e8e Mon Sep 17 00:00:00 2001 From: Yentec Date: Thu, 11 Jun 2026 12:25:59 +0200 Subject: [PATCH 2/3] fix(votes): catch network errors and revert optimistic state --- components/posts/vote-button.tsx | 12 ++++++++---- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/components/posts/vote-button.tsx b/components/posts/vote-button.tsx index ca72a7f..973870b 100644 --- a/components/posts/vote-button.tsx +++ b/components/posts/vote-button.tsx @@ -42,10 +42,14 @@ export function VoteButton({ } startTransition(async () => { setOptimistic(!optimistic.hasVoted); - const result = await toggleVote({ postId }); - if (!result.ok) { - toast.error(result.error); - router.refresh(); + try { + const result = await toggleVote({ postId }); + if (!result.ok) { + toast.error(result.error); + router.refresh(); + } + } catch { + toast.error("Something went wrong. Please try again."); } }); } diff --git a/package-lock.json b/package-lock.json index 9dac160..ae4bfe7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "feedbackflow", - "version": "1.1.1", + "version": "1.1.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "feedbackflow", - "version": "1.1.1", + "version": "1.1.2", "hasInstallScript": true, "dependencies": { "@auth/prisma-adapter": "^2.11.2", diff --git a/package.json b/package.json index f357a3b..a342351 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "feedbackflow", - "version": "1.1.1", + "version": "1.1.2", "private": true, "scripts": { "dev": "next dev", From c2ef2dd158055aa0ca6d4b09130a3ae7dfc15f94 Mon Sep 17 00:00:00 2001 From: Yentec Date: Thu, 11 Jun 2026 12:27:07 +0200 Subject: [PATCH 3/3] chore(release): 1.2.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ae4bfe7..792fa49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "feedbackflow", - "version": "1.1.2", + "version": "1.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "feedbackflow", - "version": "1.1.2", + "version": "1.2.0", "hasInstallScript": true, "dependencies": { "@auth/prisma-adapter": "^2.11.2", diff --git a/package.json b/package.json index a342351..f4dd9e0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "feedbackflow", - "version": "1.1.2", + "version": "1.2.0", "private": true, "scripts": { "dev": "next dev",