Skip to content

Commit

Permalink
Made the user setter button clear the current user if there's a user …
Browse files Browse the repository at this point in the history
…already set.
  • Loading branch information
roughike committed Jan 19, 2017
1 parent 9759233 commit 3fd0139
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 5 deletions.
16 changes: 12 additions & 4 deletions app/src/main/java/com/codemate/koffeemate/ui/main/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,7 @@ class MainActivity : AppCompatActivity(), MainView, UserSelectorFragment.UserSel
}

coffeeProgressView.setOnUserSetterClickListener {
UserSelectorFragment
.newInstance()
.show(supportFragmentManager, "asd")
presenter.handlePersonChange()
}

settingsButton.onClick {
Expand Down Expand Up @@ -91,7 +89,17 @@ class MainActivity : AppCompatActivity(), MainView, UserSelectorFragment.UserSel
accidentProgress?.dismiss()
}

// UserSelectListener method, for identifying who brews the coffee
// Functions for identifying who brews the coffee
override fun selectCoffeeBrewingPerson() {
UserSelectorFragment
.newInstance()
.show(supportFragmentManager, "user_selector")
}

override fun clearCoffeeBrewingPerson() {
coffeeProgressView.userSetterButton.clearUser()
}

override fun onUserSelected(user: User) {
Glide.with(this)
.load(user.profile.smallestAvailableImage)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,15 @@ class MainPresenter @Inject constructor(
&& !coffeePreferences.isCoffeeAnnouncementChannelSet()
}

fun handlePersonChange() {
if (personBrewingCoffee == null) {
getView()?.selectCoffeeBrewingPerson()
} else {
personBrewingCoffee = null
getView()?.clearCoffeeBrewingPerson()
}
}

fun updateLastBrewingEventTime() {
coffeeEventRepository.getLastBrewingEvent()?.let {
getView()?.updateLastBrewingEvent(it)
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/java/com/codemate/koffeemate/ui/main/MainView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ interface MainView : MvpView {
fun showNoAnnouncementChannelSetError()
fun showNoAccidentChannelSetError()

fun selectCoffeeBrewingPerson()
fun clearCoffeeBrewingPerson()

fun launchUserSelector()
fun showPostAccidentAnnouncementPrompt(
userId: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,24 @@ class UserSetterButton(ctx: Context, attrs: AttributeSet) : CircleImageView(ctx,
.start()
}

private fun reset() {
fun clearUser() {
animate().alpha(0.1f)
.scaleX(0.1f)
.scaleY(0.1f)
.rotation(180f)
.withEndAction {
imageResource = EMPTY_IMAGE_RESOURCE
rotation = -180f
animate().alpha(1f)
.scaleX(1f)
.scaleY(1f)
.rotation(0f)
.setInterpolator(OvershootInterpolator(2f))
.start()
}
}

fun reset() {
imageResource = EMPTY_IMAGE_RESOURCE
visibility = View.GONE
isClickable = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,25 @@ class MainPresenterTest {
verifyZeroInteractions(mockCoffeeEventRepository)
}

@Test
fun handlePersonChange_WhenPersonNotSet_ShowsPersonSelectionDialog() {
presenter.handlePersonChange()

verify(view).selectCoffeeBrewingPerson()
verifyNoMoreInteractions(view)
}

@Test
fun handlePersonChange_WhenPersonIsSet_ClearsPerson() {
presenter.personBrewingCoffee = fakeUser()
presenter.handlePersonChange()

assertThat(presenter.personBrewingCoffee, nullValue())

verify(view).clearCoffeeBrewingPerson()
verifyNoMoreInteractions(view)
}

@Test
fun launchAccidentReportingScreen_DefersScreenSaver() {
presenter.launchAccidentReportingScreen()
Expand Down

0 comments on commit 3fd0139

Please sign in to comment.