diff --git a/app/src/main/java/org/tasks/preferences/MainPreferences.kt b/app/src/main/java/org/tasks/preferences/MainPreferences.kt index 2a7ff8ce9..a1fa8cec4 100644 --- a/app/src/main/java/org/tasks/preferences/MainPreferences.kt +++ b/app/src/main/java/org/tasks/preferences/MainPreferences.kt @@ -5,8 +5,11 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import androidx.activity.viewModels +import androidx.lifecycle.lifecycleScope +import androidx.preference.PreferenceFragmentCompat import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.launch import org.tasks.LocalBroadcastManager import org.tasks.R import org.tasks.auth.SignInActivity @@ -15,6 +18,7 @@ import org.tasks.preferences.fragments.MainSettingsFragment import org.tasks.preferences.fragments.Synchronization.Companion.REQUEST_CALDAV_SETTINGS import org.tasks.preferences.fragments.Synchronization.Companion.REQUEST_GOOGLE_TASKS import org.tasks.preferences.fragments.Synchronization.Companion.REQUEST_TASKS_ORG +import org.tasks.preferences.fragments.TasksAccount import org.tasks.sync.SyncAdapters import org.tasks.ui.Toaster import javax.inject.Inject @@ -62,6 +66,17 @@ class MainPreferences : BasePreferences() { REQUEST_TASKS_ORG -> if (resultCode == Activity.RESULT_OK) { syncAdapters.sync(true) workManager.updateBackgroundSync() + lifecycleScope.launch { + val account = viewModel.tasksAccount() ?: return@launch + val fragment = supportFragmentManager.findFragmentById(R.id.settings) + if (fragment is PreferenceFragmentCompat && fragment !is TasksAccount) { + startPreference( + fragment, + TasksAccount.newTasksAccountPreference(account), + getString(R.string.tasks_org) + ) + } + } } else { data?.getStringExtra(SignInActivity.EXTRA_ERROR)?.let { toaster.longToast(it) } } diff --git a/app/src/main/java/org/tasks/preferences/PreferencesViewModel.kt b/app/src/main/java/org/tasks/preferences/PreferencesViewModel.kt index ce930254d..e00a94303 100644 --- a/app/src/main/java/org/tasks/preferences/PreferencesViewModel.kt +++ b/app/src/main/java/org/tasks/preferences/PreferencesViewModel.kt @@ -14,6 +14,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.tasks.R +import org.tasks.data.CaldavAccount +import org.tasks.data.CaldavDao import org.tasks.date.DateTimeUtils.newDateTime import org.tasks.googleapis.InvokerFactory import org.tasks.gtasks.GoogleAccountManager @@ -25,6 +27,7 @@ class PreferencesViewModel @ViewModelInject constructor( private val preferences: Preferences, invokers: InvokerFactory, private val googleAccountManager: GoogleAccountManager, + private val caldavDao: CaldavDao, ) : ViewModel() { private val driveInvoker = invokers.getDriveInvoker() val lastBackup = MutableLiveData() @@ -57,6 +60,9 @@ class PreferencesViewModel @ViewModelInject constructor( return if (enabled) account else null } + suspend fun tasksAccount(): CaldavAccount? = + caldavDao.getAccounts(CaldavAccount.TYPE_TASKS).firstOrNull() + fun updateDriveBackup() = viewModelScope.launch { if (driveAccount.isNullOrBlank()) { lastDriveBackup.value = -1L