From ecb40c801ab44118059c1ef07438dfacd75e3927 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Tue, 15 Aug 2023 14:10:59 +0200 Subject: code cleanup and only detecting neu setting once per second --- .../at/hannibal2/skyhanni/utils/RecalculatingValue.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/at/hannibal2/skyhanni/utils/RecalculatingValue.kt (limited to 'src/main/java/at/hannibal2/skyhanni/utils') diff --git a/src/main/java/at/hannibal2/skyhanni/utils/RecalculatingValue.kt b/src/main/java/at/hannibal2/skyhanni/utils/RecalculatingValue.kt new file mode 100644 index 000000000..7c734c57e --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/utils/RecalculatingValue.kt @@ -0,0 +1,16 @@ +package at.hannibal2.skyhanni.utils + +import kotlin.time.Duration + +class RecalculatingValue(private val expireTime: Duration, val calculation: () -> T) { + private var currentValue = calculation() + private var lastAccessTime = SimpleTimeMark.farPast() + + fun getValue(): T { + if (lastAccessTime.passedSince() > expireTime) { + currentValue = calculation() + lastAccessTime = SimpleTimeMark.now() + } + return currentValue + } +} \ No newline at end of file -- cgit