Skip to content

Instantly share code, notes, and snippets.

View ologe's full-sized avatar
💭
I may be slow to respond.

Eugeniu Olog ologe

💭
I may be slow to respond.
View GitHub Profile
interface Preference<T> {
fun get(): T
fun set(value: T)
fun observe(): Flow<T>
fun reset()
}
fun <T : Any> SharedPreferences.preference(
import android.app.Activity
import android.app.Application
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager
class CurrentPageCallback : Application.ActivityLifecycleCallbacks {
@ologe
ologe / ViewScope.kt
Last active October 7, 2020 07:45
Create an auto cancellable coroutine scope for any View
val View.viewScope: ViewScope
get() {
require(Looper.getMainLooper() == Looper.myLooper())
var scope = getTag(R.id.job_key) as? ViewScope
if (scope != null) {
return scope
}
scope = ViewScope(this)
@ologe
ologe / PreferenceExtensions.kt
Last active July 13, 2023 10:25
Android shared preference observer using kotlin coroutines (1.3.0)
inline fun <reified T> SharedPreferences.observeKey(key: String, default: T): Flow<T> {
val flow = MutableStateFlow(getItem(key, default))
val listener = SharedPreferences.OnSharedPreferenceChangeListener { _, k ->
if (key == k) {
flow.value = getItem(key, default)!!
}
}
registerOnSharedPreferenceChangeListener(listener)