From 1f600430ea1a50c8ec016d2adcb1255650dd3ea2 Mon Sep 17 00:00:00 2001 From: X1nto Date: Sun, 28 Feb 2021 14:58:34 +0400 Subject: [PATCH] optimised lifecycleOwner getter --- .../manager/ui/core/ThemedMaterialButton.kt | 2 +- .../ui/core/ThemedOutlinedMaterialButton.kt | 2 +- .../vanced/manager/ui/core/ThemedSwitchCompat.kt | 2 +- .../com/vanced/manager/ui/core/ThemedTextView.kt | 2 +- .../java/com/vanced/manager/utils/Extensions.kt | 15 ++++----------- 5 files changed, 8 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/vanced/manager/ui/core/ThemedMaterialButton.kt b/app/src/main/java/com/vanced/manager/ui/core/ThemedMaterialButton.kt index dacb450f..0e830ca8 100644 --- a/app/src/main/java/com/vanced/manager/ui/core/ThemedMaterialButton.kt +++ b/app/src/main/java/com/vanced/manager/ui/core/ThemedMaterialButton.kt @@ -16,7 +16,7 @@ class ThemedMaterialButton @JvmOverloads constructor( ) : MaterialButton(context, attributeSet, defStyleAttr) { init { - context.lifecycleOwner()?.let { owner -> + context.lifecycleOwner?.let { owner -> accentColor.observe(owner) { color -> setBgColor(color.toInt()) } diff --git a/app/src/main/java/com/vanced/manager/ui/core/ThemedOutlinedMaterialButton.kt b/app/src/main/java/com/vanced/manager/ui/core/ThemedOutlinedMaterialButton.kt index 107182a6..61d48382 100644 --- a/app/src/main/java/com/vanced/manager/ui/core/ThemedOutlinedMaterialButton.kt +++ b/app/src/main/java/com/vanced/manager/ui/core/ThemedOutlinedMaterialButton.kt @@ -14,7 +14,7 @@ class ThemedOutlinedMaterialButton @JvmOverloads constructor( defStyleAttr: Int = 0 ) : MaterialButton(context, attributeSet, defStyleAttr) { init { - context.lifecycleOwner()?.let { owner -> + context.lifecycleOwner?.let { owner -> accentColor.observe(owner) { color -> applyAccent(color.toInt()) } diff --git a/app/src/main/java/com/vanced/manager/ui/core/ThemedSwitchCompat.kt b/app/src/main/java/com/vanced/manager/ui/core/ThemedSwitchCompat.kt index 2eafc0b1..16931dbe 100644 --- a/app/src/main/java/com/vanced/manager/ui/core/ThemedSwitchCompat.kt +++ b/app/src/main/java/com/vanced/manager/ui/core/ThemedSwitchCompat.kt @@ -19,7 +19,7 @@ class ThemedSwitchCompat @JvmOverloads constructor( private val states = arrayOf(intArrayOf(-android.R.attr.state_checked), intArrayOf(android.R.attr.state_checked)) init { - context.lifecycleOwner()?.let { owner -> + context.lifecycleOwner?.let { owner -> accentColor.observe(owner) { color -> setSwitchColors(color.toInt()) } diff --git a/app/src/main/java/com/vanced/manager/ui/core/ThemedTextView.kt b/app/src/main/java/com/vanced/manager/ui/core/ThemedTextView.kt index a6e4297b..86af8211 100644 --- a/app/src/main/java/com/vanced/manager/ui/core/ThemedTextView.kt +++ b/app/src/main/java/com/vanced/manager/ui/core/ThemedTextView.kt @@ -12,7 +12,7 @@ class ThemedTextView @JvmOverloads constructor( defStyleAttr: Int = 0 ) : AppCompatTextView(context, attributeSet, defStyleAttr) { init { - context.lifecycleOwner()?.let { owner -> + context.lifecycleOwner?.let { owner -> accentColor.observe(owner) { color -> setTextColor(color.toInt()) } diff --git a/app/src/main/java/com/vanced/manager/utils/Extensions.kt b/app/src/main/java/com/vanced/manager/utils/Extensions.kt index 646b0f98..2841a0bf 100644 --- a/app/src/main/java/com/vanced/manager/utils/Extensions.kt +++ b/app/src/main/java/com/vanced/manager/utils/Extensions.kt @@ -42,17 +42,10 @@ fun String.convertToAppTheme(context: Context): String { fun String.getLatestAppVersion(versions: List): String = if (this == "latest") versions.reversed()[0] else this -fun Context.lifecycleOwner(): LifecycleOwner? { - var curContext = this - var maxDepth = 20 - while (maxDepth-- > 0 && curContext !is LifecycleOwner) { - curContext = (curContext as ContextWrapper).baseContext - } - return if (curContext is LifecycleOwner) { - curContext - } else { - null - } +val Context.lifecycleOwner: LifecycleOwner? get() = when (this) { + is LifecycleOwner -> this + !is LifecycleOwner -> (this as ContextWrapper).baseContext as LifecycleOwner + else -> null } fun Int.toHex(): String = java.lang.String.format("#%06X", 0xFFFFFF and this)