feat: mark stories as seen locally

This commit is contained in:
rhunk
2023-12-03 14:56:24 +01:00
parent 0984644adc
commit a7275c2a0b
4 changed files with 31 additions and 10 deletions

View File

@@ -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",

View File

@@ -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))
}

View File

@@ -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()
}
}
}

View File

@@ -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)
}
}
})
}
}
}