Prevent media gallery from opening multiple times

This commit is contained in:
Isaac
2025-02-28 14:52:13 +01:00
parent 99d210e364
commit 16768ffb10
5 changed files with 56 additions and 15 deletions

View File

@@ -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()
}
}