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:
parent
8b72c3fece
commit
49a5d6b848
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue