Skip to content

Remove an extension from the catalog - #41

Merged
MCCProgrammer merged 1 commit into
mainfrom
feat/remove-extension
Oct 29, 2026
Merged

MCCProgrammer merged 1 commit into
mainfrom
feat/remove-extension

Conversation

@MCCProgrammer

Copy link
Copy Markdown
Owner

There was no way to stop tracking an extension. Unified Inbox for Gmail was taken off the Chrome Web Store, so its daily collection can only fail and its row stays empty on the public page.

What's added

  • DELETE /api/extensions/{id} → 204. Another account's extension gets the same 404 as a missing one, like the rest of the catalog API.
  • Catalog page: a "Your extensions" list where each extension has a Remove that opens with a warning ("Deletes its listings, numbers and reviews. This can't be undone.") and a red confirm button. Plain <details> and a form, so it works with the CSP and without JavaScript.
  • CatalogService.removeExtension: checks ownership, then deletes the extension; listings, snapshots and reviews go with it through the existing ON DELETE CASCADE foreign keys, and past collection runs keep their entries without the listing (ON DELETE SET NULL).
  • README: the endpoint in the API table.

Tests

  • API: removing deletes the extension, its listings and snapshots, and a second delete is a 404; another account can't remove it. Dropping the ownership check makes that test fail (204 instead of 404).
  • Page: the Remove button is listed, removing shows "Removed Unified Inbox and its history.", removing again shows why it was refused, and the button is gone.
  • ./mvnw verify: 185 tests pass.

@sonarqubecloud

Copy link
Copy Markdown

@MCCProgrammer
MCCProgrammer merged commit eabbd03 into main Oct 29, 2026
10 checks passed
@MCCProgrammer
MCCProgrammer deleted the feat/remove-extension branch October 29, 2026 21:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant