commit a7275c2a0b7a613ffc1b51966db00fbfae52eb36 parent 0984644adcaddcc0a4efc18e7949d9b8f4dbe4d9 Author: rhunk <101876869+rhunk@users.noreply.github.com> Date: Sun, 3 Dec 2023 14:56:24 +0100 feat: mark stories as seen locally Diffstat:
4 files changed, 31 insertions(+), 10 deletions(-)
diff --git a/common/src/main/assets/lang/en_US.json b/common/src/main/assets/lang/en_US.json @@ -307,10 +307,6 @@ "name": "Vertical Story Viewer", "description": "Enables the vertical story viewer for all stories" }, - "friend_feed_menu_buttons": { - "name": "Friend Feed Menu Buttons", - "description": "Select which buttons to show in the Friend Feed Menu Bar" - }, "friend_feed_menu_position": { "name": "Friend Feed Position Index", "description": "The position of the Friend Feed Menu component" @@ -682,7 +678,8 @@ "auto_download": "\u2B07\uFE0F Auto Download", "auto_save": "\uD83D\uDCAC Auto Save Messages", "stealth": "\uD83D\uDC7B Stealth Mode", - "mark_as_seen": "\uD83D\uDC40 Mark Snaps as seen", + "mark_snaps_as_seen": "\uD83D\uDC40 Mark Snaps as seen", + "mark_stories_as_seen": "\uD83D\uDC40 Mark Stories as seen", "conversation_info": "\uD83D\uDC64 Conversation Info", "e2e_encryption": "\uD83D\uDD12 Use E2E Encryption" }, @@ -784,7 +781,8 @@ }, "friend_menu_option": { - "mark_as_seen": "Mark Snaps as seen", + "mark_snaps_as_seen": "Mark Snaps as seen", + "mark_stories_as_seen": "Mark Stories as seen", "preview": "Preview", "stealth_mode": "Stealth Mode", "auto_download_blacklist": "Auto Download Blacklist", diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/UserInterfaceTweaks.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/UserInterfaceTweaks.kt @@ -19,7 +19,7 @@ class UserInterfaceTweaks : ConfigContainer() { } val friendFeedMenuButtons = multiple( - "friend_feed_menu_buttons","conversation_info", "mark_as_seen", *MessagingRuleType.entries.filter { it.showInFriendMenu }.map { it.key }.toTypedArray() + "friend_feed_menu_buttons","conversation_info", "mark_snaps_as_seen", "mark_stories_as_seen", *MessagingRuleType.entries.filter { it.showInFriendMenu }.map { it.key }.toTypedArray() ).apply { set(mutableListOf("conversation_info", MessagingRuleType.STEALTH.key)) } diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseAccess.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseAccess.kt @@ -351,4 +351,13 @@ class DatabaseAccess( } } } + + fun markFriendStoriesAsSeen(userId: String) { + openLocalDatabase("main", writeMode = true)?.apply { + performOperation { + execSQL("UPDATE StorySnap SET viewed = 1 WHERE userId = ?", arrayOf(userId)) + } + close() + } + } } \ No newline at end of file diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/FriendFeedInfoMenu.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/FriendFeedInfoMenu.kt @@ -278,9 +278,10 @@ class FriendFeedInfoMenu : AbstractMenu() { val (conversationId, targetUser) = getCurrentConversationInfo() + val translation = context.translation.getCategory("friend_menu_option") if (friendFeedMenuOptions.contains("conversation_info")) { viewConsumer(Button(view.context).apply { - text = modContext.translation["friend_menu_option.preview"] + text = translation["preview"] applyTheme(view.width, hasRadius = true) setOnClickListener { showPreview( @@ -302,9 +303,9 @@ class FriendFeedInfoMenu : AbstractMenu() { ) } - if (friendFeedMenuOptions.contains("mark_as_seen")) { + if (friendFeedMenuOptions.contains("mark_snaps_as_seen")) { viewConsumer(Button(view.context).apply { - text = modContext.translation["friend_menu_option.mark_as_seen"] + text = translation["mark_snaps_as_seen"] applyTheme(view.width, hasRadius = true) setOnClickListener { this@FriendFeedInfoMenu.context.mainActivity?.triggerRootCloseTouchEvent() @@ -312,5 +313,18 @@ class FriendFeedInfoMenu : AbstractMenu() { } }) } + + if (targetUser != null && friendFeedMenuOptions.contains("mark_stories_as_seen")) { + viewConsumer(Button(view.context).apply { + text = translation["mark_stories_as_seen"] + applyTheme(view.width, hasRadius = true) + setOnClickListener { + this@FriendFeedInfoMenu.context.apply { + mainActivity?.triggerRootCloseTouchEvent() + database.markFriendStoriesAsSeen(targetUser) + } + } + }) + } } } \ No newline at end of file