From 2358ed68b2e28479cc566e18f4507ec23c587fcc Mon Sep 17 00:00:00 2001 From: Bruno Charest Date: Sun, 15 Feb 2026 10:32:27 -0500 Subject: [PATCH] feat: Synchronize shaarli-pin tag with isPinned status in FeedViewModel and PinnedViewModel - Add automatic shaarli-pin tag management when toggling pin status - Add shaarli-pin tag when pinning a link (if not already present) - Remove shaarli-pin tag when unpinning a link - Update both pin status and tags atomically in togglePin() methods - Bump version to 2.1.7 (VERSION_CODE 22) --- .../java/com/shaarit/presentation/feed/FeedViewModel.kt | 9 ++++++++- .../com/shaarit/presentation/pinned/PinnedViewModel.kt | 9 ++++++++- version.properties | 6 +++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/shaarit/presentation/feed/FeedViewModel.kt b/app/src/main/java/com/shaarit/presentation/feed/FeedViewModel.kt index 1fc8f82..61f347f 100644 --- a/app/src/main/java/com/shaarit/presentation/feed/FeedViewModel.kt +++ b/app/src/main/java/com/shaarit/presentation/feed/FeedViewModel.kt @@ -194,7 +194,14 @@ class FeedViewModel @Inject constructor( fun togglePin(id: Int) { viewModelScope.launch { linkDao.getLinkById(id)?.let { link -> - linkDao.updatePinStatus(id, !link.isPinned) + val newPinned = !link.isPinned + val newTags = if (newPinned) { + if ("shaarli-pin" !in link.tags) link.tags + "shaarli-pin" else link.tags + } else { + link.tags - "shaarli-pin" + } + linkDao.updatePinStatus(id, newPinned) + linkDao.updateLinkTags(id, newTags) _refreshTrigger.value++ } } diff --git a/app/src/main/java/com/shaarit/presentation/pinned/PinnedViewModel.kt b/app/src/main/java/com/shaarit/presentation/pinned/PinnedViewModel.kt index 942252d..d01d660 100644 --- a/app/src/main/java/com/shaarit/presentation/pinned/PinnedViewModel.kt +++ b/app/src/main/java/com/shaarit/presentation/pinned/PinnedViewModel.kt @@ -32,7 +32,14 @@ class PinnedViewModel @Inject constructor( fun togglePin(id: Int) { viewModelScope.launch { linkDao.getLinkById(id)?.let { link -> - linkDao.updatePinStatus(id, !link.isPinned) + val newPinned = !link.isPinned + val newTags = if (newPinned) { + if ("shaarli-pin" !in link.tags) link.tags + "shaarli-pin" else link.tags + } else { + link.tags - "shaarli-pin" + } + linkDao.updatePinStatus(id, newPinned) + linkDao.updateLinkTags(id, newTags) _refreshTrigger.value++ } } diff --git a/version.properties b/version.properties index 5ccd8b3..2f994a7 100644 --- a/version.properties +++ b/version.properties @@ -1,3 +1,3 @@ -#Fri Feb 13 22:32:44 2026 -VERSION_NAME=2.1.6 -VERSION_CODE=21 \ No newline at end of file +#Sat Feb 14 15:58:10 2026 +VERSION_NAME=2.1.7 +VERSION_CODE=22 \ No newline at end of file