Skip to content

Commit 7aa1cca

Browse files
committed
Fix mention/pinned notification filters to use loc-key heuristics
APS category "m" is repliable-media, not mention. Detect mentions and pins via loc-key / payload flags / RU-EN text instead. Co-authored-by: D3C0Y <decoder-dev@users.noreply.github.com>
1 parent a75ab45 commit 7aa1cca

1 file changed

Lines changed: 18 additions & 7 deletions

File tree

‎Telegram/NotificationService/Sources/NotificationService.swift‎

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1183,16 +1183,27 @@ private final class NotificationServiceHandler {
11831183

11841184
var isReaction = false
11851185
if let category = aps["category"] as? String {
1186-
// Fork extras: drop mention / pinned notifications when enabled.
1187-
if category == "m" && ForkExtrasNotificationBridge.hideMentionNotifications {
1186+
// Fork extras: drop mention / pinned notification noise when enabled.
1187+
// Mentions are identified by loc-key / payload flags — APS category "m"
1188+
// is repliable-media, not mention.
1189+
let locKey = ((payloadJson["loc-key"] as? String) ?? "").uppercased()
1190+
let alertTitle = ((aps["alert"] as? [String: Any])?["title"] as? String)?.uppercased() ?? ""
1191+
let alertBody = ((aps["alert"] as? [String: Any])?["body"] as? String)?.uppercased()
1192+
?? (aps["alert"] as? String)?.uppercased()
1193+
?? ""
1194+
let looksMention = locKey.contains("MENTION")
1195+
|| payloadJson["mention"] != nil
1196+
|| payloadJson["mentioned"] as? Bool == true
1197+
let looksPinned = locKey.contains("PINNED") || locKey.contains("PIN_")
1198+
|| category.lowercased().contains("pin")
1199+
|| alertTitle.contains("PINNED")
1200+
|| alertBody.contains("PINNED")
1201+
|| alertTitle.contains("ЗАКРЕП")
1202+
|| alertBody.contains("ЗАКРЕП")
1203+
if looksMention && ForkExtrasNotificationBridge.hideMentionNotifications {
11881204
completed()
11891205
return
11901206
}
1191-
let locKey = (payloadJson["loc-key"] as? String) ?? ""
1192-
let looksPinned = category.lowercased().contains("pin")
1193-
|| locKey.uppercased().contains("PINNED")
1194-
|| (content.body?.uppercased().contains("PINNED") == true)
1195-
|| (content.title?.uppercased().contains("PINNED") == true)
11961207
if looksPinned && ForkExtrasNotificationBridge.hidePinnedNotifications {
11971208
completed()
11981209
return

0 commit comments

Comments
 (0)