From 4d2c7c98b2eebd948eb25850c7242d34a822257b Mon Sep 17 00:00:00 2001 From: Julian Benegas Date: Sun, 25 Jan 2026 06:22:49 +0000 Subject: [PATCH] fix: don't call router.refresh() after deleting a post When a post is deleted, calling router.refresh() after router.push() causes an application error because Next.js tries to revalidate/render the deleted post page before the navigation completes. The fix: - In delete-comment-dialog: only call router.refresh() when a comment is deleted (not the whole post). When a post is deleted, just navigate away. - In moderator-delete-post-dialog: remove router.refresh() entirely since we're always navigating to a different page after deletion. This was our bug, not a Next.js bug - the race condition between push and refresh on a deleted resource caused the error. --- apps/web/components/delete-comment-dialog.tsx | 5 ++++- apps/web/components/moderator-delete-post-dialog.tsx | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/web/components/delete-comment-dialog.tsx b/apps/web/components/delete-comment-dialog.tsx index 2e2bc80..994063c 100644 --- a/apps/web/components/delete-comment-dialog.tsx +++ b/apps/web/components/delete-comment-dialog.tsx @@ -35,13 +35,16 @@ export function DeletePostOrCommentDialog() { setDialog(null) setError(null) if (result.deletedPost) { + // Navigate to repo index - don't refresh since the post no longer exists const path = window.location.pathname const parts = path.split("/").filter(Boolean) if (parts.length >= 2) { router.push(`/${parts[0]}/${parts[1]}`) } + } else { + // Only refresh if we're staying on the same page (comment deleted, not post) + router.refresh() } - router.refresh() } catch (err) { setError(err instanceof Error ? err.message : "Failed to delete") } diff --git a/apps/web/components/moderator-delete-post-dialog.tsx b/apps/web/components/moderator-delete-post-dialog.tsx index e4945bb..86c3fe3 100644 --- a/apps/web/components/moderator-delete-post-dialog.tsx +++ b/apps/web/components/moderator-delete-post-dialog.tsx @@ -34,8 +34,8 @@ export function ModeratorDeletePostDialog() { const { owner, repo } = await deletePost(dialog.postId) setDialog(null) setError(null) + // Navigate to repo index - don't refresh since the post no longer exists router.push(`/${owner}/${repo}`) - router.refresh() } catch (err) { setError(err instanceof Error ? err.message : "Failed to delete") }