Фикс: групповой пуш-навигация, in-app баннер Telegram parity, надёжность NSE аватарок

This commit is contained in:
2026-04-08 01:47:17 +05:00
parent f6af59ba11
commit f6fc34e7d9
5 changed files with 83 additions and 47 deletions

View File

@@ -13,7 +13,7 @@ enum ReleaseNotes {
body: """
**Пуш-уведомления**
Аватарки отправителей в системных пушах (Communication Notification). In-app баннер переделан 1-в-1 как в Telegram (glass-фон, жесты, анимации). Исправлен спам вибраций при входе. Desktop-suppression 30 сек.
Аватарки отправителей в системных пушах. In-app баннер 1-в-1 Telegram (glass-фон, жесты, анимации). Тап по групповому пушу теперь открывает группу, а не пустой чат. Надёжность аватарок: fallback scale, timeout safety. Desktop-suppression 30 сек.
"""
)
]

View File

@@ -562,7 +562,17 @@ final class AppDelegate: NSObject, UIApplicationDelegate, UNUserNotificationCent
}
// Android parity: try multiple key names for sender identification.
let senderKey = Self.extractSenderKey(from: userInfo)
var senderKey = Self.extractSenderKey(from: userInfo)
// Server sends group ID without #group: prefix (CLAUDE.md line 480).
// Add prefix so ChatRoute.isGroup detects it correctly.
let pushType = userInfo["type"] as? String
if pushType == "group_message",
!senderKey.isEmpty,
!senderKey.hasPrefix("#group:"),
!senderKey.hasPrefix("group:") {
senderKey = "#group:\(senderKey)"
}
if !senderKey.isEmpty {
let senderName = Self.firstNonBlank(userInfo, keys: [