diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1994bd33a..30234d52b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -366,6 +366,10 @@
android:name=".opentasks.OpenTaskAccountSettingsActivity"
android:theme="@style/Tasks" />
+
+
diff --git a/app/src/main/java/org/tasks/auth/TasksAccountSettingsActivity.kt b/app/src/main/java/org/tasks/auth/TasksAccountSettingsActivity.kt
new file mode 100644
index 000000000..569dc18f7
--- /dev/null
+++ b/app/src/main/java/org/tasks/auth/TasksAccountSettingsActivity.kt
@@ -0,0 +1,66 @@
+package org.tasks.auth
+
+import android.app.Activity
+import android.os.Bundle
+import android.view.View
+import androidx.appcompat.widget.Toolbar
+import androidx.lifecycle.lifecycleScope
+import dagger.hilt.android.AndroidEntryPoint
+import kotlinx.coroutines.launch
+import org.tasks.R
+import org.tasks.caldav.BaseCaldavAccountSettingsActivity
+
+@AndroidEntryPoint
+class TasksAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Toolbar.OnMenuItemClickListener {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ binding.userLayout.visibility = View.GONE
+ binding.passwordLayout.visibility = View.GONE
+ binding.urlLayout.visibility = View.GONE
+ binding.repeat.visibility = View.GONE
+ }
+
+ override val description: Int
+ get() = 0
+
+ override val newPassword: String?
+ get() = ""
+
+ private suspend fun updateAccount(principal: String?) {
+ hideProgressIndicator()
+ caldavAccount!!.name = newName
+ caldavAccount!!.url = principal
+ caldavAccount!!.username = newUsername
+ caldavAccount!!.error = ""
+ if (passwordChanged()) {
+ caldavAccount!!.password = encryption.encrypt(newPassword!!)
+ }
+ caldavAccount!!.isSuppressRepeatingTasks = binding.repeat.isChecked
+ caldavDao.update(caldavAccount!!)
+ setResult(Activity.RESULT_OK)
+ finish()
+ }
+
+ override fun hasChanges() =
+ newName != caldavAccount!!.name
+ || binding.repeat.isChecked != caldavAccount!!.isSuppressRepeatingTasks
+
+ override fun save() = lifecycleScope.launch {
+ if (newName.isBlank()) {
+ binding.nameLayout.error = getString(R.string.name_cannot_be_empty)
+ return@launch
+ }
+ updateAccount()
+ }
+
+ override suspend fun addAccount(url: String, username: String, password: String) {}
+
+ override suspend fun updateAccount(url: String, username: String, password: String) {}
+
+ override suspend fun updateAccount() = updateAccount(caldavAccount!!.url)
+
+ override val helpUrl: String
+ get() = getString(R.string.help_url_sync)
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/tasks/opentasks/OpenTaskAccountSettingsActivity.kt b/app/src/main/java/org/tasks/opentasks/OpenTaskAccountSettingsActivity.kt
index 2d3249f7f..369ad8ba5 100644
--- a/app/src/main/java/org/tasks/opentasks/OpenTaskAccountSettingsActivity.kt
+++ b/app/src/main/java/org/tasks/opentasks/OpenTaskAccountSettingsActivity.kt
@@ -20,7 +20,7 @@ class OpenTaskAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Too
binding.passwordLayout.visibility = View.GONE
binding.urlLayout.visibility = View.GONE
- if (caldavAccount!!.isOpenTaskEteSync || caldavAccount!!.isTasksOrg) {
+ if (caldavAccount!!.isOpenTaskEteSync) {
binding.repeat.visibility = View.GONE
}
}
diff --git a/app/src/main/java/org/tasks/preferences/fragments/Synchronization.kt b/app/src/main/java/org/tasks/preferences/fragments/Synchronization.kt
index 6c045b918..bc152a623 100644
--- a/app/src/main/java/org/tasks/preferences/fragments/Synchronization.kt
+++ b/app/src/main/java/org/tasks/preferences/fragments/Synchronization.kt
@@ -27,6 +27,7 @@ import org.tasks.etesync.EteSyncAccountSettingsActivity
import org.tasks.injection.InjectingPreferenceFragment
import org.tasks.jobs.WorkManager
import org.tasks.opentasks.OpenTaskAccountSettingsActivity
+import org.tasks.auth.TasksAccountSettingsActivity
import org.tasks.preferences.Preferences
import org.tasks.sync.AddAccountDialog.Companion.newAccountDialog
import org.tasks.sync.SyncAdapters
@@ -163,10 +164,10 @@ class Synchronization : InjectingPreferenceFragment() {
}
preference.onPreferenceClickListener = Preference.OnPreferenceClickListener {
val intent = Intent(context, when {
+ account.isTasksOrg -> TasksAccountSettingsActivity::class.java
account.isCaldavAccount -> CaldavAccountSettingsActivity::class.java
account.isEteSyncAccount -> EteSyncAccountSettingsActivity::class.java
- account.isOpenTasks || account.isTasksOrg ->
- OpenTaskAccountSettingsActivity::class.java
+ account.isOpenTasks -> OpenTaskAccountSettingsActivity::class.java
else -> throw IllegalArgumentException("Unexpected account type: $account")
})
intent.putExtra(BaseCaldavAccountSettingsActivity.EXTRA_CALDAV_DATA, account)