Refactor BaseSettingsActivity.kt:

* fixed code style
* deprecated old User model and provided replacement
* migrated from username to user id

MAILAND-1186

# Conflicts:
#	app/src/main/java/ch/protonmail/android/activities/settings/BaseSettingsActivity.kt
This commit is contained in:
Davide Farella 2021-01-26 14:02:26 +01:00
parent 8b72c3fece
commit 49a5d6b848
1 changed files with 208 additions and 144 deletions

View File

@ -53,9 +53,8 @@ import ch.protonmail.android.activities.SwipeType
import ch.protonmail.android.activities.labelsManager.EXTRA_MANAGE_FOLDERS
import ch.protonmail.android.activities.labelsManager.LabelsManagerActivity
import ch.protonmail.android.activities.mailbox.MailboxActivity
import ch.protonmail.android.activities.settings.SettingsEnum.*
import ch.protonmail.android.adapters.SettingsAdapter
import ch.protonmail.android.api.models.User
import ch.protonmail.android.api.models.address.Address
import ch.protonmail.android.api.models.room.attachmentMetadata.AttachmentMetadataDatabase
import ch.protonmail.android.api.models.room.attachmentMetadata.AttachmentMetadataDatabaseFactory
import ch.protonmail.android.api.models.room.contacts.ContactsDatabase
@ -69,7 +68,9 @@ import ch.protonmail.android.api.models.room.notifications.NotificationsDatabase
import ch.protonmail.android.api.models.room.pendingActions.PendingActionsDatabase
import ch.protonmail.android.api.models.room.pendingActions.PendingActionsDatabaseFactory
import ch.protonmail.android.core.Constants
import ch.protonmail.android.core.ProtonMailApplication
import ch.protonmail.android.core.UserManager
import ch.protonmail.android.domain.entity.user.Address
import ch.protonmail.android.domain.entity.user.User
import ch.protonmail.android.events.FetchLabelsEvent
import ch.protonmail.android.jobs.FetchByLocationJob
import ch.protonmail.android.servers.notification.CHANNEL_ID_EMAIL
@ -79,6 +80,7 @@ import ch.protonmail.android.usecase.fetch.LaunchInitialDataFetch
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.app
import ch.protonmail.android.utils.extensions.showToast
import ch.protonmail.android.viewmodel.ConnectivityBaseViewModel
import com.google.gson.Gson
@ -87,6 +89,8 @@ import timber.log.Timber
import java.util.Locale
import java.util.concurrent.atomic.AtomicBoolean
import javax.inject.Inject
import ch.protonmail.android.api.models.User as LegacyUser
import ch.protonmail.android.api.models.address.Address as LegacyAddress
// region constants
const val EXTRA_CURRENT_MAILBOX_LOCATION = "Extra_Current_Mailbox_Location"
@ -97,6 +101,9 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
val viewModel: ConnectivityBaseViewModel by viewModels()
@Inject
lateinit var userManager: UserManager
@Inject
lateinit var launchInitialDataFetch: LaunchInitialDataFetch
@ -126,9 +133,13 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
var mPinValue: Boolean = false
var mRecoveryEmail: String = ""
var mNotificationOptionValue: Int = 0
lateinit var mSelectedAddress: Address
@Deprecated("Use new Address model", ReplaceWith("address"))
lateinit var mSelectedAddress: LegacyAddress
lateinit var selectedAddress: Address
var mDisplayName: String = ""
var mSignature: String = ""
@Deprecated("Use new User model", ReplaceWith("user"))
lateinit var legacyUser: LegacyUser
lateinit var user: User
private var canClick = AtomicBoolean(true)
@ -136,26 +147,58 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
init {
settingsAdapter.onItemClick = { settingItem ->
if (!settingItem.isSection && (settingItem.settingType == SettingsItemUiModel.SettingsItemTypeEnum.DRILL_DOWN || settingItem.settingType == SettingsItemUiModel.SettingsItemTypeEnum.BUTTON)) {
if (settingItem.isSection.not() &&
(settingItem.settingType == SettingsItemUiModel.SettingsItemTypeEnum.DRILL_DOWN ||
settingItem.settingType == SettingsItemUiModel.SettingsItemTypeEnum.BUTTON)) {
selectItem(settingItem.settingId)
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
contactsDatabase = ContactsDatabaseFactory.getInstance(applicationContext).getDatabase()
messagesDatabase = MessagesDatabaseFactory.getInstance(applicationContext).getDatabase()
searchDatabase = MessagesDatabaseFactory.getSearchDatabase(applicationContext).getDatabase()
notificationsDatabase = NotificationsDatabaseFactory.getInstance(applicationContext).getDatabase()
countersDatabase = CountersDatabaseFactory.getInstance(applicationContext).getDatabase()
attachmentMetadataDatabase = AttachmentMetadataDatabaseFactory.getInstance(applicationContext).getDatabase()
pendingActionsDatabase = PendingActionsDatabaseFactory.getInstance(applicationContext).getDatabase()
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this@BaseSettingsActivity)
mMailboxLocation = Constants.MessageLocationType
.fromInt(intent.getIntExtra(EXTRA_CURRENT_MAILBOX_LOCATION, 0))
mLabelId = intent.getStringExtra(EXTRA_CURRENT_MAILBOX_LABEL_ID)
fetchOrganizationData()
legacyUser = userManager.requireCurrentLegacyUserBlocking()
user = legacyUser.toNewUser()
val primaryAddress = checkNotNull(user.addresses.primary)
mDisplayName = primaryAddress.displayName?.s
?: primaryAddress.email.s
viewModel.hasConnectivity.observe(this, ::onConnectivityEvent)
}
override fun onStart() {
super.onStart()
ProtonMailApplication.getApplication().bus.register(this)
app.bus.register(this)
}
override fun onResume() {
super.onResume()
user = mUserManager.user
legacyUser = userManager.requireCurrentLegacyUserBlocking()
user = legacyUser.toNewUser()
settingsAdapter.notifyDataSetChanged()
viewModel.checkConnectivity()
}
override fun onStop() {
super.onStop()
ProtonMailApplication.getApplication().bus.unregister(this)
app.bus.unregister(this)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
@ -172,36 +215,6 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
finish()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
contactsDatabase = ContactsDatabaseFactory.getInstance(applicationContext).getDatabase()
messagesDatabase = MessagesDatabaseFactory.getInstance(applicationContext).getDatabase()
searchDatabase = MessagesDatabaseFactory.getSearchDatabase(applicationContext).getDatabase()
notificationsDatabase = NotificationsDatabaseFactory.getInstance(applicationContext).getDatabase()
countersDatabase = CountersDatabaseFactory.getInstance(applicationContext).getDatabase()
attachmentMetadataDatabase = AttachmentMetadataDatabaseFactory.getInstance(applicationContext).getDatabase()
pendingActionsDatabase = PendingActionsDatabaseFactory.getInstance(applicationContext).getDatabase()
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this@BaseSettingsActivity)
mMailboxLocation = Constants.MessageLocationType.fromInt(intent.getIntExtra(EXTRA_CURRENT_MAILBOX_LOCATION, 0))
mLabelId = intent.getStringExtra(EXTRA_CURRENT_MAILBOX_LABEL_ID)
fetchOrganizationData()
user = mUserManager.user
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) {
super.setContentView(layoutResID)
setSupportActionBar(toolbar)
@ -212,99 +225,108 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
private fun showCustomLocaleDialog() {
val selectedLanguage = sharedPreferences!!.getString(PREF_CUSTOM_APP_LANGUAGE, "")
val languageValues = resources.getStringArray(R.array.custom_language_values)
var selectedLanguageIndex = 0
for (i in languageValues.indices) {
if (languageValues[i] == selectedLanguage) {
selectedLanguageIndex = i
break
val selectedLanguageIndex = languageValues.indexOfFirst { it == selectedLanguage }
AlertDialog.Builder(this)
.setTitle(R.string.custom_language_dialog_title)
.setSingleChoiceItems(
resources.getStringArray(R.array.custom_language_labels),
selectedLanguageIndex
) { dialog, which ->
val language = resources.getStringArray(R.array.custom_language_values)[which]
CustomLocale.setLanguage(this@BaseSettingsActivity, language)
val recreatedMailboxIntent = Intent(this@BaseSettingsActivity, MailboxActivity::class.java)
recreatedMailboxIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
dialog.dismiss()
startActivity(recreatedMailboxIntent)
}
}
val builder = AlertDialog.Builder(this)
builder.setTitle(R.string.custom_language_dialog_title)
builder.setSingleChoiceItems(resources.getStringArray(R.array.custom_language_labels), selectedLanguageIndex) { dialog, which ->
val language = resources.getStringArray(R.array.custom_language_values)[which]
CustomLocale.setLanguage(this@BaseSettingsActivity, language)
val recreatedMailboxIntent = Intent(this@BaseSettingsActivity, MailboxActivity::class.java)
recreatedMailboxIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
dialog.dismiss()
startActivity(recreatedMailboxIntent)
}.setNegativeButton(R.string.cancel, null)
val dialog = builder.create()
dialog.show()
.setNegativeButton(R.string.cancel, null)
.create()
.show()
}
private fun showSortAliasDialog() {
val defaultAddressIntent = AppUtil.decorInAppIntent(Intent(this, DefaultAddressActivity::class.java))
startActivityForResult(defaultAddressIntent, SettingsEnum.DEFAULT_EMAIL.ordinal)
startActivityForResult(defaultAddressIntent, DEFAULT_EMAIL.ordinal)
}
private fun selectItem(settingsId: String) {
user = mUserManager.user
when (SettingsEnum.valueOf(settingsId.toUpperCase(Locale.ENGLISH))) {
SettingsEnum.ACCOUNT -> {
val accountSettingsIntent = AppUtil.decorInAppIntent(Intent(this, AccountSettingsActivity::class.java))
startActivityForResult(accountSettingsIntent, SettingsEnum.ACCOUNT.ordinal)
legacyUser = userManager.requireCurrentLegacyUserBlocking()
user = legacyUser.toNewUser()
when (valueOf(settingsId.toUpperCase(Locale.ENGLISH))) {
ACCOUNT -> {
val accountSettingsIntent =
AppUtil.decorInAppIntent(Intent(this, AccountSettingsActivity::class.java))
startActivityForResult(accountSettingsIntent, ACCOUNT.ordinal)
}
SettingsEnum.SUBSCRIPTION -> {
val accountTypeIntent = AppUtil.decorInAppIntent(Intent(this, AccountTypeActivity::class.java))
SUBSCRIPTION -> {
val accountTypeIntent =
AppUtil.decorInAppIntent(Intent(this, AccountTypeActivity::class.java))
startActivity(accountTypeIntent)
}
SettingsEnum.PASSWORD_MANAGEMENT -> {
val passwordManagerIntent = AppUtil.decorInAppIntent(Intent(this, ChangePasswordActivity::class.java))
startActivityForResult(passwordManagerIntent, SettingsEnum.PASSWORD_MANAGEMENT.ordinal)
PASSWORD_MANAGEMENT -> {
val passwordManagerIntent =
AppUtil.decorInAppIntent(Intent(this, ChangePasswordActivity::class.java))
startActivityForResult(passwordManagerIntent, PASSWORD_MANAGEMENT.ordinal)
}
SettingsEnum.RECOVERY_EMAIL -> {
val recoveryEmailIntent = AppUtil.decorInAppIntent(Intent(this, EditSettingsItemActivity::class.java))
RECOVERY_EMAIL -> {
val recoveryEmailIntent =
AppUtil.decorInAppIntent(Intent(this, EditSettingsItemActivity::class.java))
recoveryEmailIntent.putExtra(EXTRA_SETTINGS_ITEM_TYPE, SettingsItem.RECOVERY_EMAIL)
recoveryEmailIntent.putExtra(EXTRA_SETTINGS_ITEM_VALUE, mRecoveryEmail)
startActivityForResult(recoveryEmailIntent, SettingsEnum.RECOVERY_EMAIL.ordinal)
startActivityForResult(recoveryEmailIntent, RECOVERY_EMAIL.ordinal)
}
SettingsEnum.DEFAULT_EMAIL -> {
DEFAULT_EMAIL -> {
showSortAliasDialog()
}
SettingsEnum.DISPLAY_NAME_N_SIGNATURE -> {
DISPLAY_NAME_N_SIGNATURE -> {
val editSignatureIntent = Intent(this, EditSettingsItemActivity::class.java)
editSignatureIntent.putExtra(EXTRA_SETTINGS_ITEM_TYPE, SettingsItem.DISPLAY_NAME_AND_SIGNATURE)
startActivityForResult(AppUtil.decorInAppIntent(editSignatureIntent), SettingsEnum.DISPLAY_NAME_N_SIGNATURE.ordinal)
startActivityForResult(
AppUtil.decorInAppIntent(editSignatureIntent), DISPLAY_NAME_N_SIGNATURE.ordinal
)
}
SettingsEnum.NOTIFICATION_SNOOZE -> {
val notificationSnoozeIntent = AppUtil.decorInAppIntent(Intent(this, SnoozeNotificationsActivity::class.java))
startActivityForResult(notificationSnoozeIntent, SettingsEnum.NOTIFICATION_SNOOZE.ordinal)
NOTIFICATION_SNOOZE -> {
val notificationSnoozeIntent =
AppUtil.decorInAppIntent(Intent(this, SnoozeNotificationsActivity::class.java))
startActivityForResult(notificationSnoozeIntent, NOTIFICATION_SNOOZE.ordinal)
}
SettingsEnum.PRIVACY -> {
val privacyIntent = AppUtil.decorInAppIntent(Intent(this, EditSettingsItemActivity::class.java))
PRIVACY -> {
val privacyIntent =
AppUtil.decorInAppIntent(Intent(this, EditSettingsItemActivity::class.java))
privacyIntent.putExtra(EXTRA_SETTINGS_ITEM_TYPE, SettingsItem.PRIVACY)
startActivityForResult(privacyIntent, SettingsEnum.PRIVACY.ordinal)
startActivityForResult(privacyIntent, PRIVACY.ordinal)
}
SettingsEnum.AUTO_DOWNLOAD_MESSAGES -> {
AUTO_DOWNLOAD_MESSAGES -> {
val gcmAutoDownloadIntent = Intent(this, EditSettingsItemActivity::class.java)
gcmAutoDownloadIntent.putExtra(EXTRA_SETTINGS_ITEM_TYPE, SettingsItem.AUTO_DOWNLOAD_MESSAGES)
startActivityForResult(AppUtil.decorInAppIntent(gcmAutoDownloadIntent), SettingsEnum.AUTO_DOWNLOAD_MESSAGES.ordinal)
startActivityForResult(
AppUtil.decorInAppIntent(gcmAutoDownloadIntent), AUTO_DOWNLOAD_MESSAGES.ordinal
)
}
SettingsEnum.BACKGROUND_REFRESH -> {
BACKGROUND_REFRESH -> {
val backgroundSyncIntent = Intent(this, EditSettingsItemActivity::class.java)
backgroundSyncIntent.putExtra(EXTRA_SETTINGS_ITEM_TYPE, SettingsItem.BACKGROUND_SYNC)
startActivityForResult(AppUtil.decorInAppIntent(backgroundSyncIntent), SettingsEnum.BACKGROUND_REFRESH.ordinal)
startActivityForResult(
AppUtil.decorInAppIntent(backgroundSyncIntent), BACKGROUND_REFRESH.ordinal
)
}
SettingsEnum.SEARCH -> {
}
SettingsEnum.LABELS_N_FOLDERS -> {
val labelsNFoldersIntent = AppUtil.decorInAppIntent(Intent(this, EditSettingsItemActivity::class.java))
LABELS_N_FOLDERS -> {
val labelsNFoldersIntent =
AppUtil.decorInAppIntent(Intent(this, EditSettingsItemActivity::class.java))
labelsNFoldersIntent.putExtra(EXTRA_SETTINGS_ITEM_TYPE, SettingsItem.LABELS_AND_FOLDERS)
startActivityForResult(labelsNFoldersIntent, SettingsEnum.LABELS_N_FOLDERS.ordinal)
startActivityForResult(labelsNFoldersIntent, LABELS_N_FOLDERS.ordinal)
}
SettingsEnum.LABELS_MANAGER -> {
val labelsManagerIntent = AppUtil.decorInAppIntent(Intent(this, LabelsManagerActivity::class.java))
LABELS_MANAGER -> {
val labelsManagerIntent =
AppUtil.decorInAppIntent(Intent(this, LabelsManagerActivity::class.java))
startActivity(labelsManagerIntent)
}
SettingsEnum.FOLDERS_MANAGER -> {
FOLDERS_MANAGER -> {
val foldersManagerIntent = AppUtil.decorInAppIntent(
Intent(
this,
@ -314,94 +336,128 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
foldersManagerIntent.putExtra(EXTRA_MANAGE_FOLDERS, true)
startActivity(foldersManagerIntent)
}
SettingsEnum.SWIPING_GESTURE -> {
SWIPING_GESTURE -> {
val swipeGestureIntent = Intent(this, EditSettingsItemActivity::class.java)
swipeGestureIntent.putExtra(EXTRA_SETTINGS_ITEM_TYPE, SettingsItem.SWIPE)
startActivityForResult(
AppUtil.decorInAppIntent(swipeGestureIntent),
SettingsEnum.SWIPING_GESTURE.ordinal
SWIPING_GESTURE.ordinal
)
}
SettingsEnum.SWIPE_LEFT -> {
SWIPE_LEFT -> {
val swipeLeftChooserIntent = Intent(this, SwipeChooserActivity::class.java)
swipeLeftChooserIntent.putExtra(EXTRA_CURRENT_ACTION, mUserManager.mailSettings!!.leftSwipeAction)
val mailSettings = checkNotNull(userManager.getCurrentUserMailSettingsBlocking())
swipeLeftChooserIntent.putExtra(EXTRA_CURRENT_ACTION, mailSettings.leftSwipeAction)
swipeLeftChooserIntent.putExtra(EXTRA_SWIPE_ID, SwipeType.LEFT)
startActivityForResult(
AppUtil.decorInAppIntent(swipeLeftChooserIntent),
SettingsEnum.SWIPE_LEFT.ordinal
SWIPE_LEFT.ordinal
)
}
SettingsEnum.SWIPE_RIGHT -> {
SWIPE_RIGHT -> {
val rightLeftChooserIntent = Intent(this, SwipeChooserActivity::class.java)
rightLeftChooserIntent.putExtra(EXTRA_CURRENT_ACTION, mUserManager.mailSettings!!.rightSwipeAction)
val mailSettings = checkNotNull(userManager.getCurrentUserMailSettingsBlocking())
rightLeftChooserIntent.putExtra(EXTRA_CURRENT_ACTION, mailSettings.rightSwipeAction)
rightLeftChooserIntent.putExtra(EXTRA_SWIPE_ID, SwipeType.RIGHT)
startActivityForResult(
AppUtil.decorInAppIntent(rightLeftChooserIntent),
SettingsEnum.SWIPE_RIGHT.ordinal
SWIPE_RIGHT.ordinal
)
}
SettingsEnum.LOCAL_STORAGE_LIMIT -> {
LOCAL_STORAGE_LIMIT -> {
val attachmentStorageIntent = Intent(this, AttachmentStorageActivity::class.java)
attachmentStorageIntent.putExtra(AttachmentStorageActivity.EXTRA_SETTINGS_ATTACHMENT_STORAGE_VALUE, mAttachmentStorageValue)
startActivityForResult(AppUtil.decorInAppIntent(attachmentStorageIntent), SettingsEnum.LOCAL_STORAGE_LIMIT.ordinal)
attachmentStorageIntent.putExtra(
AttachmentStorageActivity.EXTRA_SETTINGS_ATTACHMENT_STORAGE_VALUE,
mAttachmentStorageValue
)
startActivityForResult(
AppUtil.decorInAppIntent(attachmentStorageIntent), LOCAL_STORAGE_LIMIT.ordinal
)
}
SettingsEnum.PUSH_NOTIFICATION -> {
val privateNotificationsIntent = AppUtil.decorInAppIntent(Intent(this, EditSettingsItemActivity::class.java))
PUSH_NOTIFICATION -> {
val privateNotificationsIntent =
AppUtil.decorInAppIntent(Intent(this, EditSettingsItemActivity::class.java))
privateNotificationsIntent.putExtra(EXTRA_SETTINGS_ITEM_TYPE, SettingsItem.PUSH_NOTIFICATIONS)
startActivityForResult(privateNotificationsIntent, SettingsEnum.PUSH_NOTIFICATION.ordinal)
startActivityForResult(privateNotificationsIntent, PUSH_NOTIFICATION.ordinal)
}
SettingsEnum.NOTIFICATION_SETTINGS -> {
NOTIFICATION_SETTINGS -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val intent = Intent(ACTION_CHANNEL_NOTIFICATION_SETTINGS)
intent.putExtra(EXTRA_CHANNEL_ID, CHANNEL_ID_EMAIL)
intent.putExtra(EXTRA_APP_PACKAGE, packageName)
startActivity(intent)
} else {
mNotificationOptionValue = user.notificationSetting
mNotificationOptionValue = legacyUser.notificationSetting
val notificationSettingsIntent = Intent(this, NotificationSettingsActivity::class.java)
notificationSettingsIntent.putExtra(EXTRA_CURRENT_ACTION, mNotificationOptionValue)
startActivityForResult(AppUtil.decorInAppIntent(notificationSettingsIntent), SettingsEnum.NOTIFICATION_SETTINGS.ordinal)
startActivityForResult(
AppUtil.decorInAppIntent(notificationSettingsIntent), NOTIFICATION_SETTINGS.ordinal
)
}
}
SettingsEnum.AUTO_LOCK -> {
AUTO_LOCK -> {
val pinManagerIntent = AppUtil.decorInAppIntent(Intent(this, PinSettingsActivity::class.java))
startActivity(pinManagerIntent)
}
SettingsEnum.CONNECTIONS_VIA_THIRD_PARTIES -> {
val allowSecureConnectionsViaThirdPartiesIntent = AppUtil.decorInAppIntent(Intent(this, EditSettingsItemActivity::class.java))
allowSecureConnectionsViaThirdPartiesIntent.putExtra(EXTRA_SETTINGS_ITEM_TYPE, SettingsItem.CONNECTIONS_VIA_THIRD_PARTIES)
startActivity(allowSecureConnectionsViaThirdPartiesIntent)
CONNECTIONS_VIA_THIRD_PARTIES -> {
val allowThirdPartiesSecureConnectionsIntent =
AppUtil.decorInAppIntent(Intent(this, EditSettingsItemActivity::class.java))
allowThirdPartiesSecureConnectionsIntent
.putExtra(EXTRA_SETTINGS_ITEM_TYPE, SettingsItem.CONNECTIONS_VIA_THIRD_PARTIES)
startActivity(allowThirdPartiesSecureConnectionsIntent)
}
SettingsEnum.APP_LANGUAGE -> {
APP_LANGUAGE -> {
showCustomLocaleDialog()
}
SettingsEnum.COMBINED_CONTACTS -> {
COMBINED_CONTACTS -> {
val combinedContactsIntent = Intent(this, EditSettingsItemActivity::class.java)
combinedContactsIntent.putExtra(EXTRA_SETTINGS_ITEM_TYPE, SettingsItem.COMBINED_CONTACTS)
startActivity(AppUtil.decorInAppIntent(combinedContactsIntent))
}
SettingsEnum.APP_LOCAL_CACHE -> {
APP_LOCAL_CACHE -> {
showToast(R.string.processing_request, gravity = Gravity.CENTER)
if (canClick.getAndSet(false)) {
run {
AppUtil.clearStorage(
contactsDatabase,
messagesDatabase,
searchDatabase,
notificationsDatabase,
countersDatabase,
attachmentMetadataDatabase,
pendingActionsDatabase,
true
AppUtil.clearStorage(
contactsDatabase,
messagesDatabase,
searchDatabase,
notificationsDatabase,
countersDatabase,
attachmentMetadataDatabase,
pendingActionsDatabase,
true
)
launchInitialDataFetch()
mJobManager.addJobInBackground(
FetchByLocationJob(
mMailboxLocation,
mLabelId,
true,
null,
false
)
launchInitialDataFetch()
mJobManager.addJobInBackground(FetchByLocationJob(mMailboxLocation, mLabelId, true, null, false))
}
)
}
}
else -> {
Timber.v("Unhandled setting: ${settingsId.toUpperCase(Locale.ENGLISH)} selection")
}
ACCOUNT_SECTION,
ACCOUNT_SETTINGS,
ADDRESSES,
ALLOW_SECURE_CONNECTIONS_VIA_THIRD_PARTIES,
APP_INFORMATION,
APP_SETTINGS,
APP_VERSION,
DISPLAY_NAME,
EXTENDED_NOTIFICATION,
LINK_CONFIRMATION,
MAILBOX,
MAILBOX_SIZE,
MOBILE_SIGNATURE,
PREVENT_SCREENSHOTS,
SEARCH,
SHOW_EMBEDDED_IMAGES,
SHOW_REMOTE_IMAGES,
SIGNATURE,
SNOOZE -> { /* ignored */ }
}
}
@ -428,11 +484,15 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
}
protected fun setToggleListener(settingType: SettingsEnum, listener: ((View, Boolean) -> Unit)?) {
settingsAdapter.items.find { it.settingId == settingType.name.toLowerCase(Locale.ENGLISH) }?.apply { toggleListener = listener }
settingsAdapter.items
.find { it.settingId == settingType.name.toLowerCase(Locale.ENGLISH) }
?.apply { toggleListener = listener }
}
protected fun setEditTextListener(settingType: SettingsEnum, listener: (View) -> Unit) {
settingsAdapter.items.find { it.settingId == settingType.name.toLowerCase(Locale.ENGLISH) }?.apply { editTextListener = listener }
settingsAdapter.items
.find { it.settingId == settingType.name.toLowerCase(Locale.ENGLISH) }
?.apply { editTextListener = listener }
}
protected fun setEditTextChangeListener(settingType: SettingsEnum, listener: (String) -> Unit) {
@ -441,14 +501,18 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
}
protected fun setValue(settingType: SettingsEnum, settingValueNew: String) {
settingsAdapter.items.find { it.settingId == settingType.name.toLowerCase(Locale.ENGLISH) }?.apply { settingValue = settingValueNew }
settingsAdapter.items
.find { it.settingId == settingType.name.toLowerCase(Locale.ENGLISH) }
?.apply { settingValue = settingValueNew }
}
/**
* Turns the value of setting with [settingType] ON or OFF.
*/
protected fun setEnabled(settingType: SettingsEnum, settingValueEnabled: Boolean) {
settingsAdapter.items.find { it.settingId == settingType.name.toLowerCase(Locale.ENGLISH) }?.apply { enabled = settingValueEnabled }
settingsAdapter.items
.find { it.settingId == settingType.name.toLowerCase(Locale.ENGLISH) }
?.apply { enabled = settingValueEnabled }
}
/**
@ -466,9 +530,9 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
settingHeader = if (settingHeaderNew.isNotEmpty()) {
settingHeaderNew
} else {
SettingsEnum.valueOf(settingType.name).getHeader(this@BaseSettingsActivity)
valueOf(settingType.name).getHeader(this@BaseSettingsActivity)
}
settingsHint = SettingsEnum.valueOf(settingType.name).getHint(this@BaseSettingsActivity)
settingsHint = valueOf(settingType.name).getHint(this@BaseSettingsActivity)
}
}