Make code more readable

This commit is contained in:
Kirill Kamakin
2022-04-08 22:08:21 +05:00
parent a3d320bb79
commit 869fa21e3f
3 changed files with 8 additions and 15 deletions

View File

@@ -18,13 +18,13 @@ class AuthenticationInterceptor @Inject constructor(
override fun intercept(chain: Interceptor.Chain): Response { override fun intercept(chain: Interceptor.Chain): Response {
val currentHeader = authHeader ?: return chain.proceed(chain.request()) val currentHeader = authHeader ?: return chain.proceed(chain.request())
val response = proceedWithAuthHeader(chain, currentHeader) val response = proceedWithAuthHeader(chain, currentHeader)
if (listOf(401, 403).contains(response.code)) { return if (listOf(401, 403).contains(response.code)) {
runBlocking { authRepo.invalidateAuthHeader() } runBlocking { authRepo.invalidateAuthHeader() }
// Try again with new auth header (if any) or return previous response
authHeader?.let { proceedWithAuthHeader(chain, it) } ?: response
} else { } else {
return response response
} }
val newHeader = authHeader ?: return response
return proceedWithAuthHeader(chain, newHeader)
} }
private fun proceedWithAuthHeader( private fun proceedWithAuthHeader(

View File

@@ -2,7 +2,6 @@ package gq.kirmanak.mealient.extensions
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -10,8 +9,4 @@ import kotlinx.coroutines.launch
inline fun <T> Fragment.collectWithViewLifecycle( inline fun <T> Fragment.collectWithViewLifecycle(
flow: Flow<T>, flow: Flow<T>,
crossinline collector: suspend (T) -> Unit, crossinline collector: suspend (T) -> Unit,
) = launchWithViewLifecycle { flow.collect(collector) } ) = viewLifecycleOwner.lifecycleScope.launch { flow.collect(collector) }
fun Fragment.launchWithViewLifecycle(
block: suspend CoroutineScope.() -> Unit,
) = viewLifecycleOwner.lifecycleScope.launch(block = block)

View File

@@ -113,11 +113,9 @@ suspend fun EditText.waitUntilNotEmpty() {
fun <T> SharedPreferences.prefsChangeFlow( fun <T> SharedPreferences.prefsChangeFlow(
valueReader: SharedPreferences.() -> T, valueReader: SharedPreferences.() -> T,
): Flow<T> = callbackFlow { ): Flow<T> = callbackFlow {
val listener = SharedPreferences.OnSharedPreferenceChangeListener { prefs, _ -> fun sendValue() = trySend(valueReader()).logErrors("prefsChangeFlow")
val value = prefs.valueReader() val listener = SharedPreferences.OnSharedPreferenceChangeListener { _, _ -> sendValue() }
trySend(value).logErrors("prefsChangeFlow") sendValue()
}
trySend(valueReader())
registerOnSharedPreferenceChangeListener(listener) registerOnSharedPreferenceChangeListener(listener)
awaitClose { unregisterOnSharedPreferenceChangeListener(listener) } awaitClose { unregisterOnSharedPreferenceChangeListener(listener) }
} }