diff --git a/app/src/debug/res/values/keys.xml b/app/src/debug/res/values/keys.xml index c6252a632..b37c29b4d 100644 --- a/app/src/debug/res/values/keys.xml +++ b/app/src/debug/res/values/keys.xml @@ -1,7 +1,7 @@ Tasks Debug - https://192.168.1.120:8443 + https://caldav.tasks.org Strict mode - Thread Strict mode - VM LeakCanary diff --git a/app/src/main/java/org/tasks/preferences/fragments/TasksAccount.kt b/app/src/main/java/org/tasks/preferences/fragments/TasksAccount.kt index e0fe7d60d..9556a391f 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/TasksAccount.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/TasksAccount.kt @@ -20,7 +20,9 @@ import org.tasks.billing.PurchaseDialog import org.tasks.data.CaldavAccount import org.tasks.data.CaldavDao import org.tasks.injection.InjectingPreferenceFragment +import org.tasks.preferences.IconPreference import java.net.HttpURLConnection.HTTP_PAYMENT_REQUIRED +import java.net.HttpURLConnection.HTTP_UNAUTHORIZED import javax.inject.Inject @AndroidEntryPoint @@ -43,7 +45,7 @@ class TasksAccount : InjectingPreferenceFragment() { caldavAccount.error = null caldavDao.update(caldavAccount) } - refreshSubscription() + refreshUi() } } } @@ -78,6 +80,8 @@ class TasksAccount : InjectingPreferenceFragment() { billingClient.queryPurchases() false } + + refreshUi() } private fun removeAccount() = lifecycleScope.launch { @@ -92,7 +96,7 @@ class TasksAccount : InjectingPreferenceFragment() { localBroadcastManager.registerPurchaseReceiver(purchaseReceiver) localBroadcastManager.registerRefreshListReceiver(purchaseReceiver) - refreshSubscription() + refreshUi() } override fun onPause() { @@ -101,7 +105,12 @@ class TasksAccount : InjectingPreferenceFragment() { localBroadcastManager.unregisterReceiver(purchaseReceiver) } - private fun refreshSubscription() { + private fun refreshUi() { + (findPreference(R.string.sign_in_with_google) as IconPreference).apply { + isVisible = caldavAccount.error.isLoggedOut() + iconVisible = true + } + if (BuildConfig.FLAVOR == "generic") { return } @@ -158,6 +167,9 @@ class TasksAccount : InjectingPreferenceFragment() { return fragment } + private fun String?.isLoggedOut(): Boolean = + this?.startsWith("HTTP $HTTP_UNAUTHORIZED") == true + private fun String?.isPaymentRequired(): Boolean = this?.startsWith("HTTP $HTTP_PAYMENT_REQUIRED") == true } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8ea98466e..51c8e8223 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -667,4 +667,5 @@ File %1$s contained %2$s.\n\n Follow r/tasks Authorization cancelled Sign in with Google + Authentication required diff --git a/app/src/main/res/xml/preferences_tasks.xml b/app/src/main/res/xml/preferences_tasks.xml index 1edfef1ea..e5d524ced 100644 --- a/app/src/main/res/xml/preferences_tasks.xml +++ b/app/src/main/res/xml/preferences_tasks.xml @@ -4,9 +4,11 @@ xmlns:tools="http://schemas.android.com/tools" android:key="@string/preference_screen"> -