mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Remove custom preference flow implementation
This commit is contained in:
		| @@ -1,42 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.util | ||||
|  | ||||
| import android.content.SharedPreferences | ||||
| import kotlin.coroutines.CoroutineContext | ||||
| import kotlinx.coroutines.Dispatchers | ||||
| import kotlinx.coroutines.ExperimentalCoroutinesApi | ||||
| import kotlinx.coroutines.channels.awaitClose | ||||
| import kotlinx.coroutines.flow.Flow | ||||
| import kotlinx.coroutines.flow.channelFlow | ||||
| import kotlinx.coroutines.flow.flowOn | ||||
|  | ||||
| @ExperimentalCoroutinesApi | ||||
| inline fun <reified T> SharedPreferences.getKey(key: String, default: T, dispatcher: CoroutineContext = Dispatchers.Default): Flow<T> { | ||||
|     val flow: Flow<T> = channelFlow { | ||||
|         offer(getItem(key, default)) | ||||
|  | ||||
|         val listener = SharedPreferences.OnSharedPreferenceChangeListener { _, k -> | ||||
|             if (key == k) { | ||||
|                 offer(getItem(key, default)!!) | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         registerOnSharedPreferenceChangeListener(listener) | ||||
|         awaitClose { unregisterOnSharedPreferenceChangeListener(listener) } | ||||
|     } | ||||
|     return flow | ||||
|             .flowOn(dispatcher) | ||||
| } | ||||
|  | ||||
| inline fun <reified T> SharedPreferences.getItem(key: String, default: T): T { | ||||
|     @Suppress("UNCHECKED_CAST") | ||||
|     return when (default) { | ||||
|         is String -> getString(key, default) as T | ||||
|         is Int -> getInt(key, default) as T | ||||
|         is Long -> getLong(key, default) as T | ||||
|         is Boolean -> getBoolean(key, default) as T | ||||
|         is Float -> getFloat(key, default) as T | ||||
|         is Set<*> -> getStringSet(key, default as Set<String>) as T | ||||
|         is MutableSet<*> -> getStringSet(key, default as MutableSet<String>) as T | ||||
|         else -> throw IllegalArgumentException("Generic type not handled: ${T::class.java.name}") | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user