import Combine public final class ToastController { private let queue = CurrentValueSubject<[ToastModel], Never>([]) var currentToast: AnyPublisher<ToastModel, Never> { queue.compactMap(\.first) .removeDuplicates(by: { $0.id == $1.id }) .eraseToAnyPublisher() } public init() {} public func enqueueToast(model: ToastModel) { queue.value.append(model) } public func dismissCurrentToast() { guard queue.value.isEmpty == false else { return } _ = queue.value.removeFirst() } }