@ -1,18 +1,11 @@
package org.tasks.preferences.fragments
package org.tasks.preferences.fragments
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.os.Bundle
import androidx.fragment.app.viewModels
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
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.billing.Inventory
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavAccount.Companion.isPaymentRequired
import org.tasks.preferences.IconPreference
import org.tasks.preferences.IconPreference
import org.tasks.sync.microsoft.MicrosoftSignInViewModel
import org.tasks.sync.microsoft.MicrosoftSignInViewModel
import javax.inject.Inject
import javax.inject.Inject
@ -20,21 +13,10 @@ import javax.inject.Inject
@AndroidEntryPoint
@AndroidEntryPoint
class MicrosoftAccount : BaseAccountPreference ( ) {
class MicrosoftAccount : BaseAccountPreference ( ) {
@Inject lateinit var inventory : Inventory
@Inject lateinit var localBroadcastManager : LocalBroadcastManager
@Inject lateinit var localBroadcastManager : LocalBroadcastManager
private val microsoftVM : MicrosoftSignInViewModel by viewModels ( )
private val microsoftVM : MicrosoftSignInViewModel by viewModels ( )
private val purchaseReceiver = object : BroadcastReceiver ( ) {
override fun onReceive ( context : Context , intent : Intent ) {
lifecycleScope . launch {
if ( inventory . subscription . value != null && account . error . isPaymentRequired ( ) ) {
caldavDao . update ( account . copy ( error = null ) )
}
}
}
}
override fun getPreferenceXml ( ) = R . xml . preferences _google _tasks
override fun getPreferenceXml ( ) = R . xml . preferences _google _tasks
override suspend fun setupPreferences ( savedInstanceState : Bundle ? ) {
override suspend fun setupPreferences ( savedInstanceState : Bundle ? ) {
@ -44,18 +26,6 @@ class MicrosoftAccount : BaseAccountPreference() {
. setOnPreferenceClickListener { requestLogin ( ) }
. setOnPreferenceClickListener { requestLogin ( ) }
}
}
override fun onResume ( ) {
super . onResume ( )
localBroadcastManager . registerPurchaseReceiver ( purchaseReceiver )
localBroadcastManager . registerRefreshListReceiver ( purchaseReceiver )
}
override fun onPause ( ) {
super . onPause ( )
localBroadcastManager . unregisterReceiver ( purchaseReceiver )
}
override suspend fun refreshUi ( account : CaldavAccount ) {
override suspend fun refreshUi ( account : CaldavAccount ) {
( findPreference ( R . string . sign _in _with _google ) as IconPreference ) . apply {
( findPreference ( R . string . sign _in _with _google ) as IconPreference ) . apply {
if ( account . error . isNullOrBlank ( ) ) {
if ( account . error . isNullOrBlank ( ) ) {
@ -64,11 +34,6 @@ class MicrosoftAccount : BaseAccountPreference() {
}
}
isVisible = true
isVisible = true
when {
when {
account . error . isPaymentRequired ( ) -> {
setOnPreferenceClickListener { showPurchaseDialog ( ) }
setTitle ( R . string . name _your _price )
setSummary ( R . string . requires _pro _subscription )
}
account . error . isUnauthorized ( ) -> {
account . error . isUnauthorized ( ) -> {
setTitle ( R . string . sign _in )
setTitle ( R . string . sign _in )
setSummary ( R . string . authentication _required )
setSummary ( R . string . authentication _required )