Handle 204 response in delete-project

This change causes calls that fail without throwing an exception
to no longer display a message below the "Delete Project" itself, but
rather shows a new modal window with the details of the error.

If a call fails, throwing an exception, the error will be displayed as
before.

Bug: Issue 379762004
Change-Id: I779361a1f912a7618c26d154cad08adbb53ca2fd
diff --git a/web/gr-delete-repo.ts b/web/gr-delete-repo.ts
index 5d1b537..ff4e0d6 100644
--- a/web/gr-delete-repo.ts
+++ b/web/gr-delete-repo.ts
@@ -162,18 +162,32 @@
     };
     return this.plugin
       .restApi()
-      .send(this.action.method, endpoint, json)
-      .then(_ => {
-        this.plugin.restApi().invalidateReposCache();
-        this.deleteRepoModal?.close();
-        window.location.href = `${this.getBaseUrl()}/admin/repos`;
-      })
+      .fetch(this.action.method, endpoint, json)
+      .then(res => this.handleResponse(res))
       .catch(e => {
-        this.error = e;
-        this.deleteRepoModal?.close();
+        this.handleError(e);
       });
   }
 
+  private handleError(e: any) {
+    if (typeof e === "undefined") {
+      this.error = "Error deleting project";
+    } else {
+      this.error = e
+    }
+    this.deleteRepoModal?.close();
+  }
+
+  async handleResponse(response: Response | undefined) {
+    if (response?.ok) {
+      this.plugin.restApi().invalidateReposCache();
+      this.deleteRepoModal?.close();
+      window.location.href = `${this.getBaseUrl()}/admin/repos`;
+    } else {
+      this.handleError(undefined)
+    }
+  }
+
   private getBaseUrl() {
     return window.CANONICAL_PATH || '';
   }