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">
-