From c0c7c0d5ec4ac9de5b69db1b2f1c3e1cf23f262c Mon Sep 17 00:00:00 2001 From: gaeun Date: Tue, 27 Jun 2023 23:02:49 +0900 Subject: [PATCH] =?UTF-8?q?[Add/#9]=20LiveData=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20Event.kt=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/android/go/sopt/util/Event.kt | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 app/src/main/java/org/android/go/sopt/util/Event.kt diff --git a/app/src/main/java/org/android/go/sopt/util/Event.kt b/app/src/main/java/org/android/go/sopt/util/Event.kt new file mode 100644 index 0000000..1306679 --- /dev/null +++ b/app/src/main/java/org/android/go/sopt/util/Event.kt @@ -0,0 +1,25 @@ +package org.android.go.sopt.util + +import androidx.lifecycle.Observer + +class Event(private val content: T) { + + private var hasBeenHandled = false + + fun getContentIfNotHandled(): T? { + return if (hasBeenHandled) { + null + } else { + hasBeenHandled = true + content + } + } +} + +class EventObserver(private val onEventUnhandledContent: (T) -> Unit) : Observer> { + override fun onChanged(event: Event) { + event?.getContentIfNotHandled()?.let { + onEventUnhandledContent(it) + } + } +}