Skip to content

Commit

Permalink
Removes layout variables from remove reservation dialog
Browse files Browse the repository at this point in the history
Change-Id: I01a2e8d8e9578265249f57deba39eac5f278d1b6
  • Loading branch information
JoseAlcerreca committed Mar 26, 2018
1 parent 881fba2 commit a0e3605
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,10 @@ import android.arch.lifecycle.Observer
import android.arch.lifecycle.ViewModelProvider
import android.content.Context
import android.os.Bundle
import android.support.v4.app.DialogFragment
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.samples.apps.iosched.R
import com.google.samples.apps.iosched.databinding.DialogRemoveReservationBinding
import com.google.samples.apps.iosched.shared.domain.users.ReservationRequestParameters
import com.google.samples.apps.iosched.shared.util.viewModelProvider
Expand Down Expand Up @@ -61,19 +59,11 @@ class RemoveReservationDialogFragment : CustomDimDialogFragment(), HasSupportFra
lateinit var viewModelFactory: ViewModelProvider.Factory

private lateinit var removeViewModel: RemoveReservationViewModel
private var userId: String? = null
private var sessionId: String? = null

override fun supportFragmentInjector(): AndroidInjector<Fragment> {
return fragmentInjector
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
userId = arguments?.getString(USER_ID_KEY)
sessionId = arguments?.getString(SESSION_ID_KEY)
}

override fun onAttach(context: Context?) {
super.onAttach(context)
AndroidSupportInjection.inject(this)
Expand All @@ -82,10 +72,14 @@ class RemoveReservationDialogFragment : CustomDimDialogFragment(), HasSupportFra
override fun onCreateView(inflater: LayoutInflater,
container: ViewGroup?, savedInstanceState: Bundle?): View? {
removeViewModel = viewModelProvider(viewModelFactory)

requireNotNull(arguments).run {
removeViewModel.userId = getString(USER_ID_KEY)
removeViewModel.sessionId = getString(SESSION_ID_KEY)
}

val binding = DialogRemoveReservationBinding.inflate(inflater, container, false).apply {
viewModel = removeViewModel
userId = this@RemoveReservationDialogFragment.userId
sessionId = this@RemoveReservationDialogFragment.sessionId
}
removeViewModel.dismissDialogAction.observe(this, Observer {
it?.getContentIfNotHandled()?.let {
Expand All @@ -94,4 +88,4 @@ class RemoveReservationDialogFragment : CustomDimDialogFragment(), HasSupportFra
})
return binding.root
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import com.google.samples.apps.iosched.shared.domain.users.ReservationActionUseC
import com.google.samples.apps.iosched.shared.domain.users.ReservationRequestAction.CANCEL
import com.google.samples.apps.iosched.shared.domain.users.ReservationRequestParameters
import com.google.samples.apps.iosched.shared.result.Event
import timber.log.Timber
import javax.inject.Inject

/**
Expand All @@ -32,6 +33,11 @@ class RemoveReservationViewModel @Inject constructor(
private val reservationActionUseCase: ReservationActionUseCase
) : ViewModel(), RemoveReservationListener {


var userId: String? = null

var sessionId: String? = null

/**
* Event to dismiss the opening dialog. We only want to consume the event, the
* Boolean value isn't used.
Expand All @@ -40,10 +46,18 @@ class RemoveReservationViewModel @Inject constructor(
val dismissDialogAction: LiveData<Event<Boolean>>
get() = _dismissDialogAction

override fun onRemoveClicked(userId: String, sessionId: String) {
override fun onRemoveClicked() {
_dismissDialogAction.value = Event(true)

val immutableUserId = userId
val immutableSessionId = sessionId
// The user should be logged in at this point.
reservationActionUseCase.execute(ReservationRequestParameters(userId, sessionId, CANCEL))
if (immutableUserId == null || immutableSessionId == null) {
Timber.e("Tried to remove a reservation with a null user or session ID")
return
}
reservationActionUseCase.execute(
ReservationRequestParameters(immutableUserId, immutableSessionId, CANCEL))
}

override fun onCancelClicked() {
Expand All @@ -53,7 +67,7 @@ class RemoveReservationViewModel @Inject constructor(

interface RemoveReservationListener {

fun onRemoveClicked(userId: String, sessionId: String)
fun onRemoveClicked()

fun onCancelClicked()
}
10 changes: 1 addition & 9 deletions mobile/src/main/res/layout/dialog_remove_reservation.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,6 @@
<variable
name="viewModel"
type="com.google.samples.apps.iosched.ui.dialog.RemoveReservationViewModel" />

<variable
name="userId"
type="String" />

<variable
name="sessionId"
type="String" />
</data>

<LinearLayout
Expand Down Expand Up @@ -85,7 +77,7 @@
android:layout_marginEnd="@dimen/margin_large"
android:layout_marginStart="@dimen/spacing_normal"
android:layout_marginTop="@dimen/margin_normal"
android:onClick="@{() -> viewModel.onRemoveClicked(userId, sessionId)}"
android:onClick="@{() -> viewModel.onRemoveClicked()}"
android:text="@string/remove" />
</LinearLayout>
</LinearLayout>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,10 @@ class RemoveReservationViewModelTest {
val testUid = "testUid"
val parameters = ReservationRequestParameters(testUid,
TestData.session1.id, CANCEL)
viewModel.userId = testUid
viewModel.sessionId = TestData.session1.id

viewModel.onRemoveClicked(testUid, TestData.session1.id)
viewModel.onRemoveClicked()

verify(reservationActionUseCaseMock).execute(parameters)
val dismissDialogEvent: Event<Boolean>? =
Expand Down

0 comments on commit a0e3605

Please sign in to comment.