diff --git a/TelegramCore/AccountIntermediateState.swift b/TelegramCore/AccountIntermediateState.swift index 83f7f1e907..24555460ba 100644 --- a/TelegramCore/AccountIntermediateState.swift +++ b/TelegramCore/AccountIntermediateState.swift @@ -109,7 +109,7 @@ struct AccountMutableState { var namespacesWithHolesFromPreviousState: [PeerId: Set] var storedMessagesByPeerIdAndTimestamp: [PeerId: Set] - var displayAlerts: [String] = [] + var displayAlerts: [(text: String, isDropAuth: Bool)] = [] var insertedPeers: [PeerId: Peer] = [:] @@ -132,7 +132,7 @@ struct AccountMutableState { self.namespacesWithHolesFromPreviousState = [:] } - init(initialState: AccountInitialState, operations: [AccountStateMutationOperation], state: AuthorizedAccountState.State, peers: [PeerId: Peer], chatStates: [PeerId: PeerChatState], peerNotificationSettings: [PeerId: PeerNotificationSettings], referencedMessageIds: Set, storedMessages: Set, readInboxMaxIds: [PeerId: MessageId], storedMessagesByPeerIdAndTimestamp: [PeerId: Set], namespacesWithHolesFromPreviousState: [PeerId: Set], displayAlerts: [String], branchOperationIndex: Int) { + init(initialState: AccountInitialState, operations: [AccountStateMutationOperation], state: AuthorizedAccountState.State, peers: [PeerId: Peer], chatStates: [PeerId: PeerChatState], peerNotificationSettings: [PeerId: PeerNotificationSettings], referencedMessageIds: Set, storedMessages: Set, readInboxMaxIds: [PeerId: MessageId], storedMessagesByPeerIdAndTimestamp: [PeerId: Set], namespacesWithHolesFromPreviousState: [PeerId: Set], displayAlerts: [(text: String, isDropAuth: Bool)], branchOperationIndex: Int) { self.initialState = initialState self.operations = operations self.state = state @@ -180,8 +180,8 @@ struct AccountMutableState { self.addOperation(.AddMessages(messages, location)) } - mutating func addDisplayAlert(_ text: String) { - self.displayAlerts.append(text) + mutating func addDisplayAlert(_ text: String, isDropAuth: Bool) { + self.displayAlerts.append((text: text, isDropAuth: isDropAuth)) } mutating func deleteMessagesWithGlobalIds(_ globalIds: [Int32]) { @@ -451,7 +451,7 @@ struct AccountFinalStateEvents { let updatedWebpages: [MediaId: TelegramMediaWebpage] let updatedCalls: [Api.PhoneCall] let isContactUpdates: [(PeerId, Bool)] - let displayAlerts: [String] + let displayAlerts: [(text: String, isDropAuth: Bool)] let delayNotificatonsUntil: Int32? let updatedMaxMessageId: Int32? let updatedQts: Int32? @@ -472,7 +472,7 @@ struct AccountFinalStateEvents { self.updatedQts = nil } - init(addedIncomingMessageIds: [MessageId], updatedTypingActivities: [PeerId: [PeerId: PeerInputActivity?]], updatedWebpages: [MediaId: TelegramMediaWebpage], updatedCalls: [Api.PhoneCall], isContactUpdates: [(PeerId, Bool)], displayAlerts: [String], delayNotificatonsUntil: Int32?, updatedMaxMessageId: Int32?, updatedQts: Int32?) { + init(addedIncomingMessageIds: [MessageId], updatedTypingActivities: [PeerId: [PeerId: PeerInputActivity?]], updatedWebpages: [MediaId: TelegramMediaWebpage], updatedCalls: [Api.PhoneCall], isContactUpdates: [(PeerId, Bool)], displayAlerts: [(text: String, isDropAuth: Bool)], delayNotificatonsUntil: Int32?, updatedMaxMessageId: Int32?, updatedQts: Int32?) { self.addedIncomingMessageIds = addedIncomingMessageIds self.updatedTypingActivities = updatedTypingActivities self.updatedWebpages = updatedWebpages diff --git a/TelegramCore/AccountStateManagementUtils.swift b/TelegramCore/AccountStateManagementUtils.swift index f0ac5444f4..20baaea0a9 100644 --- a/TelegramCore/AccountStateManagementUtils.swift +++ b/TelegramCore/AccountStateManagementUtils.swift @@ -882,7 +882,7 @@ private func finalStateWithUpdatesAndServerTime(postbox: Postbox, network: Netwo } updatedState.addMessages([message], location: .UpperHistoryBlock) } - case let .updateServiceNotification(_, date, _, text, media, entities): + case let .updateServiceNotification(_, date, type, text, media, entities): if let date = date { let peerId = PeerId(namespace: Namespaces.Peer.CloudUser, id: 777000) @@ -928,7 +928,7 @@ private func finalStateWithUpdatesAndServerTime(postbox: Postbox, network: Netwo updatedState.addMessages([message], location: .UpperHistoryBlock) } } else { - updatedState.addDisplayAlert(text) + updatedState.addDisplayAlert(text, isDropAuth: type.hasPrefix("AUTH_KEY_DROP_")) } case let .updateReadChannelInbox(channelId, maxId): updatedState.readInbox(MessageId(peerId: PeerId(namespace: Namespaces.Peer.CloudChannel, id: channelId), namespace: Namespaces.Message.Cloud, id: maxId)) diff --git a/TelegramCore/AccountStateManager.swift b/TelegramCore/AccountStateManager.swift index 438c3ae937..d87ae82d52 100644 --- a/TelegramCore/AccountStateManager.swift +++ b/TelegramCore/AccountStateManager.swift @@ -101,8 +101,8 @@ public final class AccountStateManager { return self.notificationMessagesPipe.signal() } - private let displayAlertsPipe = ValuePipe<[String]>() - public var displayAlerts: Signal<[String], NoError> { + private let displayAlertsPipe = ValuePipe<[(text: String, isDropAuth: Bool)]>() + public var displayAlerts: Signal<[(text: String, isDropAuth: Bool)], NoError> { return self.displayAlertsPipe.signal() } diff --git a/TelegramCore/ChannelAdminEventLogs.swift b/TelegramCore/ChannelAdminEventLogs.swift index 5d7a397963..6f779bcbad 100644 --- a/TelegramCore/ChannelAdminEventLogs.swift +++ b/TelegramCore/ChannelAdminEventLogs.swift @@ -125,11 +125,16 @@ public func channelAdminLogEvents(postbox: Postbox, network: Network, peerId: Pe switch result { case let .adminLogResults(apiEvents, apiChats, apiUsers): - let peers = (apiChats.flatMap { parseTelegramGroupOrChannel(chat: $0) } + apiUsers.flatMap { TelegramUser(user: $0) } + Array(arrayLiteral: peer)).reduce([:], { current, peer -> [PeerId : Peer] in - var current = current - current[peer.id] = peer - return current - }) + var peers: [PeerId: Peer] = [:] + for apiChat in apiChats { + if let peer = parseTelegramGroupOrChannel(chat: apiChat) { + peers[peer.id] = peer + } + } + for apiUser in apiUsers { + let peer = TelegramUser(user: apiUser) + peers[peer.id] = peer + } var events: [AdminLogEvent] = []