Linked verify connection with Settings Activities.

MAILAND-999
This commit is contained in:
Tomasz Giszczak 2020-10-13 13:52:58 +02:00
parent b40abda78f
commit 553fe33cd6
8 changed files with 55 additions and 19 deletions

View File

@ -30,11 +30,13 @@ import ch.protonmail.android.utils.AppUtil
import ch.protonmail.android.utils.UiUtil
import ch.protonmail.android.utils.moveToLogin
import com.squareup.otto.Subscribe
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.launch
import java.util.Locale
@AndroidEntryPoint
class AccountSettingsActivity : BaseSettingsActivity() {
override fun getLayoutId(): Int = R.layout.activity_settings

View File

@ -55,6 +55,7 @@ import ch.protonmail.android.utils.moveToLogin
import ch.protonmail.android.views.CustomFontEditText
import com.google.gson.Gson
import com.squareup.otto.Subscribe
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.android.synthetic.main.activity_edit_settings_item.*
// region constants
@ -75,6 +76,7 @@ enum class SettingsItem {
BACKGROUND_SYNC
}
@AndroidEntryPoint
class EditSettingsItemActivity : BaseSettingsActivity() {
private var settingsItemType: SettingsItem = SettingsItem.DISPLAY_NAME_AND_SIGNATURE

View File

@ -29,7 +29,9 @@ import ch.protonmail.android.utils.AppUtil
import ch.protonmail.android.utils.PREF_CUSTOM_APP_LANGUAGE
import ch.protonmail.android.utils.moveToLogin
import com.squareup.otto.Subscribe
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class SettingsActivity : BaseSettingsActivity() {
override fun getLayoutId(): Int = R.layout.activity_settings

View File

@ -481,7 +481,7 @@ internal class MessageDetailsActivity :
}
private fun listenForConnectivityEvent() {
viewModel.hasConnection.observe(
viewModel.hasConnectivity.observe(
this,
{ isConnectionActive ->
Timber.v("isConnectionActive:$isConnectionActive")

View File

@ -165,7 +165,7 @@ internal class MessageDetailsViewModel @ViewModelInject constructor(
val publicKeys = MutableLiveData<List<KeyInformation>>()
lateinit var decryptedMessageData: MediatorLiveData<Message>
val hasConnection: LiveData<Boolean> = _verifyConnectionTrigger.switchMap {
val hasConnectivity: LiveData<Boolean> = _verifyConnectionTrigger.switchMap {
verifyConnection().map { onConnectivityEvent(it) }
}

View File

@ -71,7 +71,6 @@ import ch.protonmail.android.api.models.room.pendingActions.PendingActionsDataba
import ch.protonmail.android.core.Constants
import ch.protonmail.android.core.ProtonMailApplication
import ch.protonmail.android.events.AttachmentFailedEvent
import ch.protonmail.android.events.ConnectivityEvent
import ch.protonmail.android.events.FetchLabelsEvent
import ch.protonmail.android.events.user.MailSettingsEvent
import ch.protonmail.android.jobs.FetchByLocationJob
@ -83,10 +82,13 @@ import ch.protonmail.android.utils.AppUtil
import ch.protonmail.android.utils.CustomLocale
import ch.protonmail.android.utils.PREF_CUSTOM_APP_LANGUAGE
import ch.protonmail.android.utils.extensions.showToast
import ch.protonmail.android.viewmodel.ConnectivityBaseViewModel
import com.google.gson.Gson
import com.squareup.otto.Subscribe
import timber.log.Timber
import java.util.Locale
import java.util.concurrent.atomic.AtomicBoolean
import javax.inject.Inject
// region constants
const val EXTRA_CURRENT_MAILBOX_LOCATION = "Extra_Current_Mailbox_Location"
@ -95,6 +97,9 @@ const val EXTRA_CURRENT_MAILBOX_LABEL_ID = "Extra_Current_Mailbox_Label_ID"
abstract class BaseSettingsActivity : BaseConnectivityActivity() {
@Inject
lateinit var viewModel: ConnectivityBaseViewModel
// region views
private val toolbar by lazy { findViewById<Toolbar>(R.id.toolbar) }
private val settingsRecyclerView by lazy { findViewById<RecyclerView>(R.id.settingsRecyclerView) }
@ -142,15 +147,21 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
ProtonMailApplication.getApplication().bus.register(this)
}
override fun onStop() {
super.onStop()
ProtonMailApplication.getApplication().bus.unregister(this)
}
override fun onResume() {
super.onResume()
user = mUserManager.user
settingsAdapter.notifyDataSetChanged()
viewModel.checkConnectivity()
}
override fun onPause() {
networkSnackBarUtil.hideAllSnackBars()
super.onPause()
}
override fun onStop() {
super.onStop()
ProtonMailApplication.getApplication().bus.unregister(this)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
@ -187,7 +198,15 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
user = mUserManager.user
mDisplayName = if (user.getDisplayNameForAddress(user.addressId)?.isEmpty()!!) user.defaultAddress.email else user.getDisplayNameForAddress(user.addressId)!!
mDisplayName = if (user.getDisplayNameForAddress(user.addressId)?.isEmpty()!!)
user.defaultAddress.email
else
user.getDisplayNameForAddress(user.addressId)!!
viewModel.hasConnectivity.observe(
this,
{ onConnectivityEvent(it) }
)
}
override fun setContentView(layoutResID: Int) {
@ -454,17 +473,28 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
}
}
@Subscribe
fun onConnectivityEvent(event: ConnectivityEvent) {
if (!event.hasConnection()) {
showNoConnSnack(callback = this)
private fun onConnectivityEvent(hasConnection: Boolean) {
Timber.v("onConnectivityEvent hasConnection:$hasConnection")
if (!hasConnection) {
networkSnackBarUtil.getNoConnectionSnackBar(
mSnackLayout,
mUserManager.user,
this,
{ onConnectivityCheckRetry() }
).show()
} else {
mPingHasConnection = true
hideNoConnSnack()
networkSnackBarUtil.hideAllSnackBars()
}
}
private fun onConnectivityCheckRetry() {
networkSnackBarUtil.getCheckingConnectionSnackBar(
mSnackLayout
).show()
viewModel.checkConnectivityDelayed()
}
@Subscribe
fun onMailSettingsEvent(event: MailSettingsEvent) {
loadMailSettings()

View File

@ -145,7 +145,7 @@ class ContactsActivity :
::onContactsFetchedEvent
)
contactsViewModel.hasConnection.observe(
contactsViewModel.hasConnectivity.observe(
this,
{ onConnectivityEvent(it) }
)
@ -204,7 +204,7 @@ class ContactsActivity :
}
private fun onConnectivityEvent(hasConnection: Boolean) {
Timber.v("onConnectivityEvent")
Timber.v("onConnectivityEvent hasConnection:$hasConnection")
networkSnackBarUtil.hideAllSnackBars()
if (!hasConnection) {
networkSnackBarUtil.getNoConnectionSnackBar(

View File

@ -44,7 +44,7 @@ class ContactsViewModel @ViewModelInject constructor(
val fetchContactsResult: LiveData<Boolean> =
fetchContactsTrigger.switchMap { fetchContactsData() }
val hasConnection: LiveData<Boolean> = _verifyConnectionTrigger
val hasConnectivity: LiveData<Boolean> = _verifyConnectionTrigger
.switchMap { verifyConnection() }
fun isPaidUser(): Boolean = userManager.user.isPaidUser