Skip to content

Commit

Permalink
add alert before hiding default types dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
Razeeman committed Aug 27, 2024
1 parent 6860b1b commit 3d99281
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.fragment.app.viewModels
import com.example.util.simpletimetracker.core.base.BaseBottomSheetFragment
import com.example.util.simpletimetracker.core.dialog.StandardDialogListener
import com.example.util.simpletimetracker.core.extension.blockContentScroll
import com.example.util.simpletimetracker.core.extension.observeOnce
import com.example.util.simpletimetracker.core.extension.setFullScreen
Expand All @@ -25,7 +26,9 @@ import com.google.android.flexbox.JustifyContent
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class DefaultTypesSelectionDialogFragment : BaseBottomSheetFragment<Binding>() {
class DefaultTypesSelectionDialogFragment :
BaseBottomSheetFragment<Binding>(),
StandardDialogListener {

override val inflater: (LayoutInflater, ViewGroup?, Boolean) -> Binding =
Binding::inflate
Expand Down Expand Up @@ -71,6 +74,10 @@ class DefaultTypesSelectionDialogFragment : BaseBottomSheetFragment<Binding>() {
close.observeOnce(viewLifecycleOwner) { dismiss() }
}

override fun onPositiveClick(tag: String?, data: Any?) {
viewModel.onPositiveDialogClick(tag)
}

private fun bindSaveButtonState(enabled: Boolean) = with(binding) {
btnDefaultTypesSelectionSave.isEnabled = enabled
val color = if (enabled) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,15 @@ import com.example.util.simpletimetracker.feature_base_adapter.loader.LoaderView
import com.example.util.simpletimetracker.feature_base_adapter.recordType.RecordTypeViewData
import com.example.util.simpletimetracker.feature_dialogs.R
import com.example.util.simpletimetracker.feature_dialogs.defaultTypesSelection.interactor.GetDefaultRecordTypesInteractor
import com.example.util.simpletimetracker.navigation.Router
import com.example.util.simpletimetracker.navigation.params.screen.StandardDialogParams
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import javax.inject.Inject

@HiltViewModel
class DefaultTypesSelectionViewModel @Inject constructor(
private val router: Router,
private val recordTypeInteractor: RecordTypeInteractor,
private val prefsInteractor: PrefsInteractor,
private val recordTypeViewDataMapper: RecordTypeViewDataMapper,
Expand Down Expand Up @@ -85,6 +88,23 @@ class DefaultTypesSelectionViewModel @Inject constructor(
}

fun onHideClick() {
router.navigate(
StandardDialogParams(
tag = HIDE_ALERT_DIALOG_TAG,
message = resourceRepo.getString(R.string.archive_deletion_alert),
btnPositive = resourceRepo.getString(R.string.ok),
btnNegative = resourceRepo.getString(R.string.cancel),
),
)
}

fun onPositiveDialogClick(tag: String?) {
when (tag) {
HIDE_ALERT_DIALOG_TAG -> hide()
}
}

private fun hide() {
viewModelScope.launch {
prefsInteractor.setDefaultTypesHidden(true)
close.set(Unit)
Expand Down Expand Up @@ -141,4 +161,8 @@ class DefaultTypesSelectionViewModel @Inject constructor(
private fun loadRecordTypes(): List<RecordType> {
return getDefaultRecordTypesInteractor.execute()
}

companion object {
private const val HIDE_ALERT_DIALOG_TAG = "hide_alert_dialog_tag"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,17 @@ import android.content.Context
import android.content.DialogInterface
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDialogFragment
import com.example.util.simpletimetracker.core.dialog.StandardDialogListener
import com.example.util.simpletimetracker.core.extension.getAllFragments
import com.example.util.simpletimetracker.core.extension.findListeners
import com.example.util.simpletimetracker.core.utils.fragmentArgumentDelegate
import com.example.util.simpletimetracker.navigation.params.screen.StandardDialogParams

class StandardDialogFragment :
AppCompatDialogFragment(),
DialogInterface.OnClickListener {

private var standardDialogListener: StandardDialogListener? = null
private var listeners: List<StandardDialogListener> = emptyList()
private val params: StandardDialogParams by fragmentArgumentDelegate(
key = ARGS_PARAMS,
default = StandardDialogParams(),
Expand Down Expand Up @@ -47,26 +46,14 @@ class StandardDialogFragment :

override fun onAttach(context: Context) {
super.onAttach(context)
when (context) {
is StandardDialogListener -> {
standardDialogListener = context
return
}
is AppCompatActivity -> {
context.getAllFragments()
.firstOrNull { it is StandardDialogListener }
?.let { standardDialogListener = it as? StandardDialogListener }
}
}
listeners += context.findListeners<StandardDialogListener>()
}

override fun onClick(dialog: DialogInterface?, which: Int) {
when (which) {
DialogInterface.BUTTON_POSITIVE -> {
standardDialogListener?.onPositiveClick(dialogTag, data)
}
DialogInterface.BUTTON_NEGATIVE -> {
standardDialogListener?.onNegativeClick(dialogTag, data)
listeners.forEach {
when (which) {
DialogInterface.BUTTON_POSITIVE -> it.onPositiveClick(dialogTag, data)
DialogInterface.BUTTON_NEGATIVE -> it.onNegativeClick(dialogTag, data)
}
}
}
Expand Down

0 comments on commit 3d99281

Please sign in to comment.