From ceca51c1bbf760ad5ec8760fa2d5fc9e3af8915b Mon Sep 17 00:00:00 2001 From: Thomas Scholtes Date: Fri, 11 Jul 2025 16:41:01 +0200 Subject: [PATCH] Support deleting draft review comments --- src/components/Comment.svelte | 13 +++++++++---- src/components/Diff.svelte | 4 +++- src/components/Review.svelte | 10 ++++++++++ src/components/Thread.svelte | 5 ++++- src/lib/draftReviewStorage.ts | 9 +++++++++ 5 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/components/Comment.svelte b/src/components/Comment.svelte index 9daeb334f..dc22d3eef 100644 --- a/src/components/Comment.svelte +++ b/src/components/Comment.svelte @@ -34,6 +34,7 @@ emptyBodyTooltip?: string; editComment?: (body: string, embeds: Embed[]) => Promise; reactOnComment?: (authors: Author[], reaction: string) => Promise; + deleteComment?: () => Promise; styleWidth?: string; // See `ExtendedTextarea` disableAttachments?: boolean | string; @@ -55,6 +56,7 @@ disallowEmptyBody = false, editComment, reactOnComment, + deleteComment, styleWidth, emptyBodyTooltip, disableAttachments, @@ -122,9 +124,7 @@ font-size: var(--font-size-small); color: var(--color-fill-gray); } - .edit-buttons { - display: flex; - gap: 0.25rem; + .icon-button { cursor: pointer; } @@ -157,10 +157,15 @@ {/if}
{#if editComment} -
+
{/if} + {#if deleteComment} +
+ +
+ {/if} {#if reactions && reactOnComment} Promise; + deleteComment?: (commentId: string) => Promise; // Defaults to `true`. canReply?: boolean; // See `ExtendedTextarea`. @@ -446,7 +447,8 @@ roles.isDelegateOrAuthor, codeComments.config.publicKey, codeComments.repoDelegates.map(delegate => delegate.did), - )} /> + )} + deleteComment={codeComments.deleteComment} />
{/if} diff --git a/src/components/Review.svelte b/src/components/Review.svelte index 19c0fc2b8..d55df9322 100644 --- a/src/components/Review.svelte +++ b/src/components/Review.svelte @@ -273,6 +273,15 @@ await loadReview(); } } + + async function deleteDraftComment(commentId: string) { + if (!("draft" in review)) { + throw new Error("Cannot change comment status for draft review"); + } + + draftReviewStorage.deleteComment(review.id, commentId); + await loadReview(); + }