no message

This commit is contained in:
Peter
2018-07-21 21:31:04 +03:00
parent 26a1164939
commit 152d25f4ff
5 changed files with 86 additions and 66 deletions

View File

@@ -57,7 +57,7 @@ public extension Message {
case _ as TelegramMediaImage: case _ as TelegramMediaImage:
return true return true
case let file as TelegramMediaFile: case let file as TelegramMediaFile:
if file.isVideo { if file.isVideo || file.isAnimated || file.isVoice {
return true return true
} }
default: default:

View File

@@ -7,9 +7,17 @@ import Foundation
import SwiftSignalKit import SwiftSignalKit
#endif #endif
public func topPeerActiveLiveLocationMessages(viewTracker: AccountViewTracker, peerId: PeerId) -> Signal<[Message], NoError> { public func topPeerActiveLiveLocationMessages(viewTracker: AccountViewTracker, accountPeerId: PeerId, peerId: PeerId) -> Signal<(Peer?, [Message]), NoError> {
return viewTracker.aroundMessageHistoryViewForLocation(.peer(peerId), index: .upperBound, anchorIndex: .upperBound, count: 100, fixedCombinedReadStates: nil, tagMask: .liveLocation, orderStatistics: []) return viewTracker.aroundMessageHistoryViewForLocation(.peer(peerId), index: .upperBound, anchorIndex: .upperBound, count: 100, fixedCombinedReadStates: nil, tagMask: .liveLocation, orderStatistics: [], additionalData: [.peer(accountPeerId)])
|> map { (view, _, _) -> [Message] in |> map { (view, _, _) -> (Peer?, [Message]) in
var accountPeer: Peer?
for entry in view.additionalData {
if case let .peer(id, peer) = entry {
accountPeer = peer
break
}
}
let timestamp = Int32(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970) let timestamp = Int32(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970)
var result: [Message] = [] var result: [Message] = []
for entry in view.entries { for entry in view.entries {
@@ -25,6 +33,6 @@ public func topPeerActiveLiveLocationMessages(viewTracker: AccountViewTracker, p
} }
} }
} }
return result return (accountPeer, result)
} }
} }

View File

@@ -141,6 +141,14 @@ public final class PendingMessageManager {
updateUploadingPeerIds.insert(id.peerId) updateUploadingPeerIds.insert(id.peerId)
context.sendDisposable.dispose() context.sendDisposable.dispose()
context.uploadDisposable.dispose() context.uploadDisposable.dispose()
if context.status != nil {
context.status = nil
for subscriber in context.statusSubscribers.copyItems() {
subscriber(nil)
}
}
if context.statusSubscribers.isEmpty { if context.statusSubscribers.isEmpty {
self.messageContexts.removeValue(forKey: id) self.messageContexts.removeValue(forKey: id)
} }

View File

@@ -21,6 +21,7 @@ public enum RequestEditMessageResult {
public enum RequestEditMessageError { public enum RequestEditMessageError {
case generic case generic
case restricted
} }
public func requestEditMessage(account: Account, messageId: MessageId, text: String, media: RequestEditMessageMedia, entities: TextEntitiesMessageAttribute? = nil, disableUrlPreview: Bool = false) -> Signal<RequestEditMessageResult, RequestEditMessageError> { public func requestEditMessage(account: Account, messageId: MessageId, text: String, media: RequestEditMessageMedia, entities: TextEntitiesMessageAttribute? = nil, disableUrlPreview: Bool = false) -> Signal<RequestEditMessageResult, RequestEditMessageError> {
@@ -125,7 +126,10 @@ public func requestEditMessage(account: Account, messageId: MessageId, text: Str
return .fail(error) return .fail(error)
} }
} }
|> mapError { _ -> RequestEditMessageError in |> mapError { error -> RequestEditMessageError in
if error.errorDescription.hasPrefix("CHAT_SEND_") && error.errorDescription.hasSuffix("_FORBIDDEN") {
return .restricted
}
return .generic return .generic
} }
|> mapToSignal { result -> Signal<RequestEditMessageResult, RequestEditMessageError> in |> mapToSignal { result -> Signal<RequestEditMessageResult, RequestEditMessageError> in