Remove public fields from SwipeChooserViewModel.kt
Extras are retrieved directly from the Activity's Intent and values are set by a function now MAILAND-2573
This commit is contained in:
parent
8f31f93171
commit
63fe71daee
|
@ -28,7 +28,6 @@ import androidx.activity.viewModels
|
|||
import ch.protonmail.android.R
|
||||
import ch.protonmail.android.activities.BaseActivity
|
||||
import ch.protonmail.android.settings.data.toMailSwipeAction
|
||||
import ch.protonmail.android.utils.extensions.app
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import ch.protonmail.android.adapters.swipe.SwipeAction as MailSwipeAction
|
||||
import me.proton.core.mailsettings.domain.entity.SwipeAction as CoreSwipeAction
|
||||
|
@ -60,22 +59,14 @@ class SwipeChooserActivity : BaseActivity() {
|
|||
val elevation = resources.getDimension(R.dimen.action_bar_elevation)
|
||||
actionBar?.elevation = elevation
|
||||
|
||||
if (swipeChooserViewModel.swipeId == SwipeType.LEFT) {
|
||||
actionBar?.title = getString(R.string.settings_swipe_right_to_left)
|
||||
} else if (swipeChooserViewModel.swipeId == SwipeType.RIGHT) {
|
||||
actionBar?.title = getString(R.string.settings_swipe_left_to_right)
|
||||
val titleRes = when (intent.getSerializableExtra(EXTRA_SWIPE_ID) as SwipeType) {
|
||||
SwipeType.LEFT -> R.string.settings_swipe_right_to_left
|
||||
SwipeType.RIGHT -> R.string.settings_swipe_left_to_right
|
||||
}
|
||||
createActions()
|
||||
}
|
||||
actionBar?.title = getString(titleRes)
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
app.bus.register(this)
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
super.onStop()
|
||||
app.bus.unregister(this)
|
||||
val currentAction = intent.getSerializableExtra(EXTRA_CURRENT_ACTION) as CoreSwipeAction
|
||||
createActions(currentAction.toMailSwipeAction())
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
|
@ -100,7 +91,7 @@ class SwipeChooserActivity : BaseActivity() {
|
|||
saveAndFinish()
|
||||
}
|
||||
|
||||
private fun createActions() {
|
||||
private fun createActions(currentAction: MailSwipeAction) {
|
||||
|
||||
val availableActions = arrayOf(
|
||||
MailSwipeAction.MARK_READ,
|
||||
|
@ -112,12 +103,12 @@ class SwipeChooserActivity : BaseActivity() {
|
|||
|
||||
for (index in availableActions.indices) {
|
||||
val swipeAction = availableActions[index]
|
||||
if (swipeChooserViewModel.currentAction.toMailSwipeAction() == swipeAction) {
|
||||
if (currentAction == swipeAction) {
|
||||
(swipeRadioGroup.getChildAt(index) as RadioButton).isChecked = true
|
||||
}
|
||||
}
|
||||
swipeRadioGroup?.setOnCheckedChangeListener { _, _ ->
|
||||
swipeChooserViewModel.currentAction = when (swipeRadioGroup.checkedRadioButtonId) {
|
||||
val action = when (swipeRadioGroup.checkedRadioButtonId) {
|
||||
R.id.read_unread -> CoreSwipeAction.MarkRead
|
||||
R.id.star_unstar -> CoreSwipeAction.Star
|
||||
R.id.trash -> CoreSwipeAction.Trash
|
||||
|
@ -125,6 +116,7 @@ class SwipeChooserActivity : BaseActivity() {
|
|||
R.id.move_to_spam -> CoreSwipeAction.Spam
|
||||
else -> throw IllegalArgumentException("Unknown button id")
|
||||
}
|
||||
swipeChooserViewModel.setAction(action)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -37,24 +37,27 @@ class SwipeChooserViewModel @Inject constructor(
|
|||
private var updateSwipeActions: UpdateSwipeActions
|
||||
) : ViewModel() {
|
||||
|
||||
var currentAction: SwipeAction =
|
||||
savedStateHandle.get<SwipeAction>(EXTRA_CURRENT_ACTION) ?: SwipeAction.Trash
|
||||
val swipeId: SwipeType = savedStateHandle.get<SwipeType>(EXTRA_SWIPE_ID) ?: SwipeType.RIGHT
|
||||
private var actionToSave: SwipeAction? = null
|
||||
|
||||
private val swipeType: SwipeType =
|
||||
requireNotNull(savedStateHandle.get<SwipeType>(EXTRA_SWIPE_ID)) {
|
||||
"Extra 'EXTRA_SWIPE_ID' is required"
|
||||
}
|
||||
|
||||
fun setAction(swipeAction: SwipeAction) {
|
||||
actionToSave = swipeAction
|
||||
}
|
||||
|
||||
fun onSaveClicked() {
|
||||
actionToSave ?: return
|
||||
|
||||
viewModelScope.launch {
|
||||
accountManager.getPrimaryUserId().first()?.let { userId ->
|
||||
if (swipeId == SwipeType.LEFT) {
|
||||
updateSwipeActions.invoke(
|
||||
userId,
|
||||
swipeLeft = currentAction
|
||||
)
|
||||
} else {
|
||||
updateSwipeActions.invoke(
|
||||
userId,
|
||||
swipeRight = currentAction
|
||||
)
|
||||
val result = when (swipeType) {
|
||||
SwipeType.LEFT -> updateSwipeActions(userId, swipeLeft = actionToSave)
|
||||
SwipeType.RIGHT -> updateSwipeActions(userId, swipeRight = actionToSave)
|
||||
}
|
||||
// TODO handle result
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# 2022-01-11T15:39:48.918859
|
||||
# 2022-01-12T15:40:12.450208
|
||||
# Integrity check *
|
||||
|
||||
# Default excluded files are `` ['**/test/**', '**/**Test/**', '**/gradle/**', '**/buildSrc/**'] ``
|
||||
|
|
Loading…
Reference in New Issue