diff --git a/src/components/Comment.svelte b/src/components/Comment.svelte
index dc22d3eef..27c4f9196 100644
--- a/src/components/Comment.svelte
+++ b/src/components/Comment.svelte
@@ -163,7 +163,7 @@
{/if}
{#if deleteComment}
-
+
{/if}
{#if reactions && reactOnComment}
diff --git a/src/components/Icon.svelte b/src/components/Icon.svelte
index b454f7af0..9711f3e3e 100644
--- a/src/components/Icon.svelte
+++ b/src/components/Icon.svelte
@@ -82,6 +82,7 @@
| "stop"
| "sun"
| "thumb-up"
+ | "trash"
| "unresolve"
| "user"
| "warning";
@@ -1398,6 +1399,15 @@
+ {:else if name === "trash"}
+
+
+
+
+
+
+
+
{:else if name === "unresolve"}
diff --git a/src/components/Review.svelte b/src/components/Review.svelte
index d55df9322..20f77eeef 100644
--- a/src/components/Review.svelte
+++ b/src/components/Review.svelte
@@ -363,32 +363,46 @@
{/if}
{#if "draft" in review}
-
-
-
+
+ {
+ draftReviewStorage.delete(review.id);
+ void push({
+ resource: "repo.patch",
+ rid: repo.rid,
+ patch: patchId,
+ reviewId: undefined,
+ status: undefined,
+ });
+ }}>
+ Delete
+
+
{/if}
diff --git a/src/lib/draftReviewStorage.ts b/src/lib/draftReviewStorage.ts
index 1334c976b..9c38876fd 100644
--- a/src/lib/draftReviewStorage.ts
+++ b/src/lib/draftReviewStorage.ts
@@ -115,6 +115,15 @@ export const draftReviewStorage = {
});
},
+ delete(id: string): DraftReviewStored | undefined {
+ const review = storage.value[id];
+ storage.update(reviews => {
+ delete reviews[id];
+ return reviews;
+ });
+ return review;
+ },
+
deleteComment(id: string, commentId: string) {
updateStoredDraftReview(id, review => {
const index = review.comments.findIndex(
@@ -170,11 +179,13 @@ export const draftReviewStorage = {
},
async publish(id: string) {
- const draftReviewStored = storage.value[id];
- storage.update(reviews => {
- delete reviews[id];
- return reviews;
- });
+ const draftReviewStored = draftReviewStorage.delete(id);
+ if (!draftReviewStored) {
+ throw new Error(
+ `Failed to publish draft review: Review ${id} does not exist`,
+ );
+ }
+
await invoke("create_patch_review", {
args: {
rid: draftReviewStored.rid,