From 89e01d823af0babc37a2b2d01ac72aec8d4355d0 Mon Sep 17 00:00:00 2001 From: William Casarin Date: Tue, 16 Jan 2024 16:03:10 -0800 Subject: [PATCH] debouncer: add new debounce methods --- damus/Util/Debouncer.swift | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/damus/Util/Debouncer.swift b/damus/Util/Debouncer.swift index 140cdd71..44c3e555 100644 --- a/damus/Util/Debouncer.swift +++ b/damus/Util/Debouncer.swift @@ -24,4 +24,30 @@ class Debouncer { workItem = DispatchWorkItem { action() } queue.asyncAfter(deadline: .now() + interval, execute: workItem!) } + + func debounce_immediate(action: @escaping () -> Void) { + guard self.workItem == nil else { + return + } + + self.workItem = DispatchWorkItem(block: { + self.workItem = nil + }) + + action() + queue.asyncAfter(deadline: .now() + interval, execute: self.workItem!) + } + + func debounce_once(action: @escaping () -> Void) { + guard self.workItem == nil else { + return + } + + self.workItem = DispatchWorkItem(block: { + self.workItem = nil + action() + }) + + queue.asyncAfter(deadline: .now() + interval, execute: self.workItem!) + } }