damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

commit 909148f0bebaee11f59f63bab43791a7ccd48555
parent c100c6db47d62e7155a622528ee6acb30d5dde5c
Author: William Casarin <jb55@jb55.com>
Date:   Wed, 15 Feb 2023 19:15:19 -0800

add missing file

Diffstat:
Adamus/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!) + } +}