Automatically open Tasks.org prefs after sign in

pull/1283/head
Alex Baker 4 years ago
parent 8df491baee
commit ee2577f24b

@ -5,8 +5,11 @@ import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceFragmentCompat
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.R import org.tasks.R
import org.tasks.auth.SignInActivity 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_CALDAV_SETTINGS
import org.tasks.preferences.fragments.Synchronization.Companion.REQUEST_GOOGLE_TASKS 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.Synchronization.Companion.REQUEST_TASKS_ORG
import org.tasks.preferences.fragments.TasksAccount
import org.tasks.sync.SyncAdapters import org.tasks.sync.SyncAdapters
import org.tasks.ui.Toaster import org.tasks.ui.Toaster
import javax.inject.Inject import javax.inject.Inject
@ -62,6 +66,17 @@ class MainPreferences : BasePreferences() {
REQUEST_TASKS_ORG -> if (resultCode == Activity.RESULT_OK) { REQUEST_TASKS_ORG -> if (resultCode == Activity.RESULT_OK) {
syncAdapters.sync(true) syncAdapters.sync(true)
workManager.updateBackgroundSync() 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 { } else {
data?.getStringExtra(SignInActivity.EXTRA_ERROR)?.let { toaster.longToast(it) } data?.getStringExtra(SignInActivity.EXTRA_ERROR)?.let { toaster.longToast(it) }
} }

@ -14,6 +14,8 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.tasks.R import org.tasks.R
import org.tasks.data.CaldavAccount
import org.tasks.data.CaldavDao
import org.tasks.date.DateTimeUtils.newDateTime import org.tasks.date.DateTimeUtils.newDateTime
import org.tasks.googleapis.InvokerFactory import org.tasks.googleapis.InvokerFactory
import org.tasks.gtasks.GoogleAccountManager import org.tasks.gtasks.GoogleAccountManager
@ -25,6 +27,7 @@ class PreferencesViewModel @ViewModelInject constructor(
private val preferences: Preferences, private val preferences: Preferences,
invokers: InvokerFactory, invokers: InvokerFactory,
private val googleAccountManager: GoogleAccountManager, private val googleAccountManager: GoogleAccountManager,
private val caldavDao: CaldavDao,
) : ViewModel() { ) : ViewModel() {
private val driveInvoker = invokers.getDriveInvoker() private val driveInvoker = invokers.getDriveInvoker()
val lastBackup = MutableLiveData<Long?>() val lastBackup = MutableLiveData<Long?>()
@ -57,6 +60,9 @@ class PreferencesViewModel @ViewModelInject constructor(
return if (enabled) account else null return if (enabled) account else null
} }
suspend fun tasksAccount(): CaldavAccount? =
caldavDao.getAccounts(CaldavAccount.TYPE_TASKS).firstOrNull()
fun updateDriveBackup() = viewModelScope.launch { fun updateDriveBackup() = viewModelScope.launch {
if (driveAccount.isNullOrBlank()) { if (driveAccount.isNullOrBlank()) {
lastDriveBackup.value = -1L lastDriveBackup.value = -1L

Loading…
Cancel
Save