mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
Prevent media gallery from opening multiple times
This commit is contained in:
@@ -303,6 +303,29 @@ public final class ChatControllerInteraction: ChatControllerInteractionProtocol
|
||||
public var chatIsRotated: Bool = true
|
||||
public var canReadHistory: Bool = false
|
||||
|
||||
private var isOpeningMediaValue: Bool = false
|
||||
public var isOpeningMedia: Bool {
|
||||
return self.isOpeningMediaValue
|
||||
}
|
||||
private var isOpeningMediaDisposable: Disposable?
|
||||
public var isOpeningMediaSignal: Signal<Bool, NoError>? {
|
||||
didSet {
|
||||
self.isOpeningMediaDisposable?.dispose()
|
||||
self.isOpeningMediaDisposable = nil
|
||||
self.isOpeningMediaValue = false
|
||||
|
||||
if let isOpeningMediaSignal = self.isOpeningMediaSignal {
|
||||
self.isOpeningMediaValue = true
|
||||
self.isOpeningMediaDisposable = (isOpeningMediaSignal |> filter { !$0 } |> take(1) |> timeout(1.0, queue: .mainQueue(), alternate: .single(false)) |> deliverOnMainQueue).startStrict(next: { [weak self] _ in
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
self.isOpeningMediaValue = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public init(
|
||||
openMessage: @escaping (Message, OpenMessageParams) -> Bool,
|
||||
openPeer: @escaping (EnginePeer, ChatControllerInteractionNavigateToPeer, MessageReference?, OpenPeerSource) -> Void,
|
||||
@@ -538,4 +561,8 @@ public final class ChatControllerInteraction: ChatControllerInteractionProtocol
|
||||
|
||||
self.presentationContext = presentationContext
|
||||
}
|
||||
|
||||
deinit {
|
||||
self.isOpeningMediaDisposable?.dispose()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user