From 8e2d5c04573a3f57c9200786a039ecc73ad78863 Mon Sep 17 00:00:00 2001 From: Empa <42304516+ItsEmpa@users.noreply.github.com> Date: Mon, 13 May 2024 18:05:40 +0200 Subject: Fix: Incomplete Scoreboard Lines (#1761) Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> --- src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt | 9 +++++++-- src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt | 7 +++++-- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/utils') diff --git a/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt b/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt index d903ada07..8b4b0c372 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt @@ -4,10 +4,15 @@ import com.google.common.cache.CacheBuilder import java.util.concurrent.TimeUnit import kotlin.time.Duration -class TimeLimitedCache(expireAfterWrite: Duration) { +class TimeLimitedCache( + expireAfterWrite: Duration, + private val removalListener: (K?, V?) -> Unit = { _, _ -> }, +) { private val cache = CacheBuilder.newBuilder() - .expireAfterWrite(expireAfterWrite.inWholeMilliseconds, TimeUnit.MILLISECONDS).build() + .expireAfterWrite(expireAfterWrite.inWholeMilliseconds, TimeUnit.MILLISECONDS) + .removalListener { removalListener(it.key, it.value) } + .build() fun put(key: K, value: V) = cache.put(key, value) diff --git a/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt b/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt index 39dac5247..5f0ccd404 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt @@ -2,9 +2,12 @@ package at.hannibal2.skyhanni.utils import kotlin.time.Duration -class TimeLimitedSet(expireAfterWrite: Duration) { +class TimeLimitedSet( + expireAfterWrite: Duration, + private val removalListener: (T) -> Unit = {}, +) { - private val cache = TimeLimitedCache(expireAfterWrite) + private val cache = TimeLimitedCache(expireAfterWrite) { key, _ -> key?.let { removalListener(it) } } fun add(element: T) = cache.put(element, Unit) -- cgit