From 71123aabb75bc6af279fcfc6a0cab50b1f371b30 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Tue, 13 Dec 2022 13:46:39 +0100 Subject: [PATCH] Improve show/hide HUD Schedule operations on main queue --- Sources/HUDFeature/HUDManager.swift | 17 +++++++++++------ Sources/HUDFeature/HUDPresenter.swift | 1 - 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Sources/HUDFeature/HUDManager.swift b/Sources/HUDFeature/HUDManager.swift index 418cd669..0ce43047 100644 --- a/Sources/HUDFeature/HUDManager.swift +++ b/Sources/HUDFeature/HUDManager.swift @@ -19,18 +19,23 @@ public struct HUDManager { extension HUDManager { public static func live() -> HUDManager { let subject = PassthroughSubject<HUDModel?, Never>() + @Dependency(\.mainQueue) var mainQueue return HUDManager( show: .init { model in - let model = model ?? HUDModel(hasDotAnimation: true) - subject.send(model) - if model.isAutoDismissable { - DispatchQueue.main.asyncAfter(deadline: .now() + 2) { - subject.send(nil) + mainQueue.schedule { + let model = model ?? HUDModel(hasDotAnimation: true) + subject.send(model) + if model.isAutoDismissable { + mainQueue.schedule(after: mainQueue.now.advanced(by: 2)) { + subject.send(nil) + } } } }, hide: { - subject.send(nil) + mainQueue.schedule { + subject.send(nil) + } }, observe: { subject.eraseToAnyPublisher() diff --git a/Sources/HUDFeature/HUDPresenter.swift b/Sources/HUDFeature/HUDPresenter.swift index 0bf202d3..6f0e1ce1 100644 --- a/Sources/HUDFeature/HUDPresenter.swift +++ b/Sources/HUDFeature/HUDPresenter.swift @@ -6,7 +6,6 @@ import SwiftUI public final class HUDPresenter { public init() { hudManager.observe() - .receive(on: DispatchQueue.main) .sink { [unowned self] model in if let model = model { show(model) -- GitLab