From 9875748f617fd7b9a146b4e8a56a41288a8a76f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sim=C3=B3=20Albert=20i=20Beltran?= Date: Thu, 23 Jul 2026 21:54:29 +0200 Subject: [PATCH] fix: remove favorite marker from map immediately after deletion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace `this.$delete()` with native `delete` in all favorite deletion paths (single delete, bulk delete, category unlink). `this.$delete()` is a Vue 2 compatibility shim that may not reliably trigger Vue 3's Proxy-based reactivity system when removing keys from a reactive object. This caused the FavoritesLayer deep watcher on displayedFavorites to not fire, leaving stale markers on the map until a full reload. In Vue 3, the native `delete` operator is intercepted by the Proxy's deleteProperty trap, which properly triggers reactivity. Affected methods: - onFavoriteDelete (single favorite via sidebar/popup) - onFavoritesDelete (bulk delete via cluster right-click) - onDeleteFavoriteCategoryFromMap (unlink shared category) Signed-off-by: Simó Albert i Beltran --- src/views/App.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/views/App.vue b/src/views/App.vue index 09450b67e..bead6fc03 100644 --- a/src/views/App.vue +++ b/src/views/App.vue @@ -1615,7 +1615,7 @@ export default { this.selectedFavorite = null this.closeSidebar() showError(t('maps', 'Favorite was deleted')) - this.$delete(this.favorites, favid) + delete this.favorites[favid] }).catch((error) => { console.error(error) }) @@ -1632,7 +1632,7 @@ export default { }) } favids.forEach((favid) => { - this.$delete(this.favorites, favid) + delete this.favorites[favid] }) }).catch((error) => { console.error(error) @@ -1724,7 +1724,7 @@ export default { return this.favorites[favid].category === catid }) favIds.forEach((favid) => { - this.$delete(this.favorites, favid) + delete this.favorites[favid] }) showSuccess(t('maps', 'Favorite category {favoriteName} unlinked from map', { favoriteName: catid ?? '' })) }).catch((error) => {