mirror of
https://github.com/ichmagmaus111/ghostgram.git
synced 2026-05-11 16:17:11 +02:00
feat: новые функции, исправлены критические ошибки сборки и баги интерфейса, больше подписей в файлах
This commit is contained in:
@@ -4233,6 +4233,9 @@ func replayFinalState(
|
||||
if AntiDeleteManager.shared.isEnabled {
|
||||
let messageIds = transaction.messageIdsForGlobalIds(ids)
|
||||
for (index, messageId) in messageIds.enumerated() {
|
||||
// Skip scheduled/local/quick-reply messages — they get deleted when sent, not by the remote peer
|
||||
guard messageId.namespace == Namespaces.Message.Cloud else { continue }
|
||||
|
||||
if let message = transaction.getMessage(messageId) {
|
||||
let globalId = index < ids.count ? ids[index] : 0
|
||||
|
||||
@@ -4289,6 +4292,9 @@ func replayFinalState(
|
||||
if AntiDeleteManager.shared.isEnabled {
|
||||
let messageIds = transaction.messageIdsForGlobalIds(ids)
|
||||
for messageId in messageIds {
|
||||
// Skip scheduled/local/quick-reply messages — they get deleted when sent, not by the remote peer
|
||||
guard messageId.namespace == Namespaces.Message.Cloud else { continue }
|
||||
|
||||
// Mark as deleted for icon display
|
||||
AntiDeleteManager.shared.markAsDeleted(peerId: messageId.peerId.toInt64(), messageId: messageId.id)
|
||||
|
||||
@@ -4317,6 +4323,9 @@ func replayFinalState(
|
||||
// ANTI-DELETE: Archive channel messages with full content before deletion
|
||||
if AntiDeleteManager.shared.isEnabled {
|
||||
for messageId in ids {
|
||||
// Skip scheduled/local/quick-reply messages — they get deleted when sent, not by the remote peer
|
||||
guard messageId.namespace == Namespaces.Message.Cloud else { continue }
|
||||
|
||||
if let message = transaction.getMessage(messageId) {
|
||||
// Extract text content
|
||||
let textContent = message.text
|
||||
@@ -4370,6 +4379,9 @@ func replayFinalState(
|
||||
// ANTI-DELETE: Mark messages as deleted instead of removing them
|
||||
if AntiDeleteManager.shared.isEnabled {
|
||||
for messageId in ids {
|
||||
// Skip scheduled/local/quick-reply messages — they get deleted when sent, not by the remote peer
|
||||
guard messageId.namespace == Namespaces.Message.Cloud else { continue }
|
||||
|
||||
// Mark as deleted for icon display
|
||||
AntiDeleteManager.shared.markAsDeleted(peerId: messageId.peerId.toInt64(), messageId: messageId.id)
|
||||
|
||||
|
||||
@@ -82,16 +82,19 @@ private final class AccountPresenceManagerImpl {
|
||||
/// 2. Ghost Mode hide online status → skip update entirely (freeze last-seen)
|
||||
/// 3. Default app behaviour (wasOnline)
|
||||
private func refreshPresence() {
|
||||
let alwaysOnline = MiscSettingsManager.shared.shouldAlwaysBeOnline
|
||||
// Use raw alwaysOnline flag (not shouldAlwaysBeOnline) so it works independently
|
||||
// of the Misc master toggle. Ghost Mode's shouldHideOnlineStatus already checks
|
||||
// !MiscSettingsManager.shared.alwaysOnline internally.
|
||||
let alwaysOnline = MiscSettingsManager.shared.alwaysOnline
|
||||
let ghostHideOnline = GhostModeManager.shared.shouldHideOnlineStatus
|
||||
|
||||
if alwaysOnline {
|
||||
// Always Online wins — push online regardless of Ghost Mode
|
||||
sendPresenceUpdate(online: true)
|
||||
} else if ghostHideOnline {
|
||||
// Ghost Mode active, no Always Online — freeze presence (don't send anything)
|
||||
self.onlineTimer?.invalidate()
|
||||
self.onlineTimer = nil
|
||||
// Ghost Mode active: actively send offline so the server immediately
|
||||
// hides our last-seen instead of keeping the stale "online" status.
|
||||
sendPresenceUpdate(online: false)
|
||||
} else {
|
||||
// Normal mode — follow the app-level state
|
||||
sendPresenceUpdate(online: wasOnline)
|
||||
|
||||
Reference in New Issue
Block a user