commit 909148f0bebaee11f59f63bab43791a7ccd48555 parent c100c6db47d62e7155a622528ee6acb30d5dde5c Author: William Casarin <jb55@jb55.com> Date: Wed, 15 Feb 2023 19:15:19 -0800 add missing file Diffstat:
A | damus/Util/Debouncer.swift | | | 27 | +++++++++++++++++++++++++++ |
1 file changed, 27 insertions(+), 0 deletions(-)
diff --git a/damus/Util/Debouncer.swift b/damus/Util/Debouncer.swift @@ -0,0 +1,27 @@ +// +// Debouncer.swift +// damus +// +// Created by William Casarin on 2023-02-15. +// + +import Foundation + +class Debouncer { + private let queue = DispatchQueue.main + private var workItem: DispatchWorkItem? + private var interval: TimeInterval + + init(interval: TimeInterval) { + self.interval = interval + } + + func debounce(action: @escaping () -> Void) { + // Cancel the previous work item if it hasn't yet executed + workItem?.cancel() + + // Create a new work item with a delay + workItem = DispatchWorkItem { action() } + queue.asyncAfter(deadline: .now() + interval, execute: workItem!) + } +}