Fix accessibility and image deletion issues in AccountViewView

- Fix aria-hidden conflict on trash can icon by wrapping in proper button element
- Fix image deletion API endpoint by extracting image ID from full URL
- Improve 404 error handling to clear local image reference when image already deleted
- Resolve accessibility warning and prevent invalid API calls
This commit is contained in:
Matthew Raymer
2025-07-27 08:48:00 +00:00
parent 1d32ceb57e
commit 95d223e13c
2 changed files with 20 additions and 6 deletions

View File

@@ -1482,8 +1482,15 @@ export default class AccountViewView extends Vue {
async deleteImage(): Promise<void> {
try {
// Extract the image ID from the full URL
const imageId = this.profileImageUrl?.split('/').pop();
if (!imageId) {
this.notify.error("Invalid image URL");
return;
}
const response = await this.axios.delete(
this.apiServer + "/api/image/" + this.profileImageUrl,
this.apiServer + "/api/image/" + imageId,
{ headers: await getHeaders(this.activeDid) },
);
if (response.status === 204) {
@@ -1500,6 +1507,11 @@ export default class AccountViewView extends Vue {
} catch (error) {
if (isApiError(error) && error.response?.status === 404) {
// it already doesn't exist so we won't say anything to the user
// Clear the local reference since the image is gone
this.profileImageUrl = "";
await this.$saveSettings({
profileImageUrl: "",
});
} else {
this.notify.error(
ACCOUNT_VIEW_CONSTANTS.ERRORS.IMAGE_DELETE_ERROR,