ApplyUpdateMessage: search for appropriate peerId in case of multiple messages

EnqueueMessage: author in a broadcast channel is always the channel
AccountStateManagementUtils: don't include the last message in the hole range
This commit is contained in:
Peter 2019-05-28 16:09:38 +02:00
parent 5c8d8e8d71
commit 28d971f992
4 changed files with 29 additions and 8 deletions

View File

@ -2545,7 +2545,12 @@ func replayFinalState(accountManager: AccountManager, postbox: Postbox, accountP
}
for messageId in holesFromPreviousStateMeessageIds {
let upperId = topUpperHistoryBlockMessages[PeerIdAndMessageNamespace(peerId: messageId.peerId, namespace: messageId.namespace)] ?? Int32.max
let upperId: MessageId.Id
if let value = topUpperHistoryBlockMessages[PeerIdAndMessageNamespace(peerId: messageId.peerId, namespace: messageId.namespace)], value < Int32.max {
upperId = value - 1
} else {
upperId = Int32.max
}
if upperId > messageId.id {
transaction.addHole(peerId: messageId.peerId, namespace: messageId.namespace, space: .everywhere, range: messageId.id ... upperId)
}

View File

@ -194,8 +194,9 @@ public func addChannelMembers(account: Account, peerId: PeerId, memberIds: [Peer
return .single(Void())
}
} |> introduceError(AddChannelMemberError.self)
return signal |> switchToLatest
}
|> introduceError(AddChannelMemberError.self)
return signal
|> switchToLatest
}

View File

@ -33,8 +33,23 @@ func applyMediaResourceChanges(from: Media, to: Media, postbox: Postbox) {
func applyUpdateMessage(postbox: Postbox, stateManager: AccountStateManager, message: Message, result: Api.Updates) -> Signal<Void, NoError> {
return postbox.transaction { transaction -> Void in
let messageId = result.rawMessageIds.first
let apiMessage = result.messages.first
let messageId: Int32?
var apiMessage: Api.Message?
for resultMessage in result.messages {
if let id = resultMessage.id {
if id.peerId == message.id.peerId {
apiMessage = resultMessage
break
}
}
}
if let apiMessage = apiMessage, let id = apiMessage.id {
messageId = id.id
} else {
messageId = result.rawMessageIds.first
}
var updatedTimestamp: Int32?
if let apiMessage = apiMessage {

View File

@ -365,7 +365,7 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId,
}
let authorId: PeerId?
if let peer = peer as? TelegramChannel, case let .broadcast(info) = peer.info, !info.flags.contains(.messagesShouldHaveSignatures) {
if let peer = peer as? TelegramChannel, case let .broadcast(info) = peer.info {
authorId = peer.id
} else {
authorId = account.peerId
@ -486,7 +486,7 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId,
}
let authorId: PeerId?
if let peer = peer as? TelegramChannel, case let .broadcast(info) = peer.info, !info.flags.contains(.messagesShouldHaveSignatures) {
if let peer = peer as? TelegramChannel, case .broadcast = peer.info {
authorId = peer.id
} else {
authorId = account.peerId