Automatically open Tasks.org prefs after sign in

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

@ -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) }
}

@ -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<Long?>()
@ -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

Loading…
Cancel
Save