Skip to content

Commit

Permalink
Merge branch 'develop' to master
Browse files Browse the repository at this point in the history
  • Loading branch information
anuphap committed Feb 11, 2020
2 parents 912ecfc + f025cc4 commit 13fd9b9
Show file tree
Hide file tree
Showing 17 changed files with 172 additions and 213 deletions.
2 changes: 1 addition & 1 deletion app/src/main/java/org/rfcx/ranger/data/local/EventDb.kt
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class EventDb(val realm: Realm) {
}
}

fun updateEvents(event: Event) {
fun saveEvent(event: Event) {
Realm.getDefaultInstance().use { it ->
it.executeTransaction {
it.insertOrUpdate(event)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,10 @@ class EventRepositoryImp(private val eventService: EventService, private val eve

override fun getEvent(eventGuID: String): Single<Event> {
return eventService.getEvent(eventGuID).map {
it.toEvent()
val event = it.toEvent()
eventDb.saveEvent(event)

event
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ class GetEventsUseCase(private val eventRepository: EventRepository,
if (isStarting) {
val eventCached = eventDb.getEvents()
val r = events.filter {
eventCached.firstOrNull { cached -> cached.id == it.id } == null // new event?
eventCached.firstOrNull { cached -> cached.id == it.id &&
cached.reviewCreated.time == it.reviewCreated.time } == null // new event?
}
// has new event?
if (r.isNotEmpty()) {
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/org/rfcx/ranger/di/UiModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,18 +40,18 @@ object UiModule {
val statusModule = module {
viewModel {
StatusViewModel(androidContext(), get(), get(), get(), get(), get(), get(),
get(), get(), get())
get(), get())
}
viewModel { ReportDetailViewModel(get(), get(), get()) }
}

val alertModule = module {
viewModel { AllAlertsViewModel(androidContext(), get(), get(), get(), get(), get()) }
viewModel { AllAlertsViewModel(androidContext(), get(), get(), get(), get()) }
viewModel { AlertBottomDialogViewModel(androidContext(), get(), get(), get()) }
viewModel { GroupAlertsViewModel(androidContext(), get(), get()) }
viewModel { GuardianListDetailViewModel(get()) }
viewModel { AlertViewModel(androidContext(), get(), get()) }
viewModel { AlertDetailByTypeViewModel(androidContext(), get(), get(), get()) }
viewModel { AlertDetailByTypeViewModel(androidContext(), get(), get()) }
}

val profileModule = module {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,10 @@ data class EventResponse(
}
if (review != null) {
event.reviewCreated = review.created
// event.reviewConfirmed = review.confirmed
}

reviewer?.let {
event.firstNameReviewer = it.firstName ?: it.email.split("@")[0]
event.firstNameReviewer = it.email.split("@")[0] //TODO: UPDATE LATER - WAITING API SUPPORT FIRST NAME
event.reviewConfirmed = it.confirmed
}

Expand Down
3 changes: 0 additions & 3 deletions app/src/main/java/org/rfcx/ranger/entity/event/Review.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,8 @@ open class Review {
open class Reviewer {
@SerializedName("firstname")
var firstName: String? = ""

@SerializedName("lastname")
var lastName: String? = ""

var email: String = ""

var confirmed: Boolean? = null
}
16 changes: 16 additions & 0 deletions app/src/main/java/org/rfcx/ranger/util/EventExt.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.rfcx.ranger.util

import android.annotation.SuppressLint
import android.content.Context
import org.rfcx.ranger.R
import org.rfcx.ranger.adapter.entity.BaseItem
Expand Down Expand Up @@ -64,6 +65,21 @@ fun Event.toEventItem(eventDb: EventDb): EventItem {

data class EventItem(var event: Event, var state: State = State.NONE) : BaseItem {

@SuppressLint("DefaultLocale")
fun getReviewerName(context: Context):String {
return if (state != State.NONE) {
if (event.firstNameReviewer.isNotBlank()) {
event.firstNameReviewer
} else {
context.getNameEmail()
}.capitalize()
} else {
event.firstNameReviewer.capitalize()
}
}



enum class State {
CONFIRM, REJECT, NONE
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,13 @@ package org.rfcx.ranger.view.alert
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.core.content.ContextCompat
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.GridLayoutManager
import com.google.android.exoplayer2.Player
Expand Down Expand Up @@ -128,25 +126,31 @@ class AlertBottomDialogFragment : BaseBottomSheetDialogFragment() {
timeTextView.text = " ${context?.let { it1 -> it.beginsAt.toTimeSinceStringAlternativeTimeAgo(it1) }}"
reviewedTextView.text = context?.getString(if (it.firstNameReviewer.isNotBlank()) R.string.last_reviewed_by else R.string.not_have_review)
?: ""
nameReviewerTextView.text = it.firstNameReviewer

nameReviewerTextView.text = if (it.firstNameReviewer.isNotBlank()) {
it.firstNameReviewer.capitalize()
} else {
if (state != "NONE" && context != null) context.getNameEmail().capitalize() else ""
}

nameReviewerTextView.visibility = if (it.firstNameReviewer.isNotBlank()) View.VISIBLE else View.INVISIBLE
linearLayout.visibility = View.INVISIBLE
agreeTextView.text = it.confirmedCount.toString()
rejectTextView.text = it.rejectedCount.toString()

if (state == "CONFIRM") {
linearLayout.visibility = View.VISIBLE

if (context !== null) {
agreeImageView.background = context!!.getImage(R.drawable.bg_circle_red)
agreeImageView.setImageDrawable(context!!.getImage(R.drawable.ic_confirm_event_white))
updateConfirmCount(it)
context?.let { it2 ->
agreeImageView.background = it2.getImage(R.drawable.bg_circle_red)
agreeImageView.setImageDrawable(it2.getImage(R.drawable.ic_confirm_event_white))
}
} else if (state == "REJECT") {
linearLayout.visibility = View.VISIBLE

if (context !== null) {
rejectImageView.background = context!!.getImage(R.drawable.bg_circle_grey)
rejectImageView.setImageDrawable(context!!.getImage(R.drawable.ic_reject_event_white))
updateRejectCount(it)
context?.let { it2 ->
rejectImageView.background = it2.getImage(R.drawable.bg_circle_grey)
rejectImageView.setImageDrawable(it2.getImage(R.drawable.ic_reject_event_white))
}
}

Expand Down Expand Up @@ -267,14 +271,16 @@ class AlertBottomDialogFragment : BaseBottomSheetDialogFragment() {
alertViewModel.reviewEvent.observe(this, Observer { it ->
it.success(
{
val reviewConfirm = it.second.reviewConfirm
val newEvent = it.first
hideLoading()
event?.let { it1 -> alertListener?.onReviewed(it.reviewConfirm, it1) }
alertListener?.onReviewed(reviewConfirm, newEvent)

// is rejectEvent?
if (it.reviewConfirm == ReviewEventFactory.rejectEvent) {
if (reviewConfirm == ReviewEventFactory.rejectEvent) {
dismiss()
}
showCountReviewer(it)
showCountReviewer(newEvent, reviewConfirm)
},
{
hideLoading()
Expand All @@ -287,69 +293,45 @@ class AlertBottomDialogFragment : BaseBottomSheetDialogFragment() {
})
}

private fun showCountReviewer(reviewEventFactory: ReviewEventFactory) {
@SuppressLint("DefaultLocale")
private fun showCountReviewer(event: Event, reviewConfirm: String) {
nameReviewerTextView.visibility = View.VISIBLE

reviewedTextView.text = context?.getString(R.string.last_reviewed_by)
nameReviewerTextView.text = context.getNameEmail()
nameReviewerTextView.text = if (event.firstNameReviewer.isNotBlank()) {
event.firstNameReviewer
} else {
context.getNameEmail()
}.capitalize()

if (reviewEventFactory.reviewConfirm == ReviewEventFactory.confirmEvent) {
agreeTextView.text = event.confirmedCount.toString()
rejectTextView.text = event.rejectedCount.toString()

if (reviewConfirm == ReviewEventFactory.confirmEvent) {
agreeImageView.background = context?.getImage(R.drawable.bg_circle_red)
agreeImageView.setImageDrawable(context?.getImage(R.drawable.ic_confirm_event_white))

rejectImageView.setImageDrawable(context?.getImage(R.drawable.ic_reject_event_gray))
context?.getBackgroundColor(R.color.transparent)?.let { rejectImageView.setBackgroundColor(it) }

} else if (reviewEventFactory.reviewConfirm == ReviewEventFactory.rejectEvent) {
updateConfirmCount(event)
} else {
rejectImageView.background = context!!.getImage(R.drawable.bg_circle_grey)
rejectImageView.setImageDrawable(context!!.getImage(R.drawable.ic_reject_event_white))

agreeImageView.setImageDrawable(context?.getImage(R.drawable.ic_confirm_event_gray))
context?.getBackgroundColor(R.color.transparent)?.let { agreeImageView.setBackgroundColor(it) }

}

if (event !== null) {
if (event!!.firstNameReviewer == context.getNameEmail()) {
if (event!!.reviewConfirmed!!) {
if (reviewEventFactory.reviewConfirm == ReviewEventFactory.rejectEvent) {
rejectedCount()
}
} else {
if (reviewEventFactory.reviewConfirm == ReviewEventFactory.confirmEvent) {
confirmedCount()
}
}
} else {
if (reviewEventFactory.reviewConfirm == ReviewEventFactory.confirmEvent) {
confirmedCount()

} else if (reviewEventFactory.reviewConfirm == ReviewEventFactory.rejectEvent) {
rejectedCount()

}
}
updateRejectCount(event)
}
}

private fun confirmedCount() {
agreeTextView.text = (event?.confirmedCount?.plus(1)).toString()

if (event?.firstNameReviewer == context.getNameEmail()) {
rejectTextView.text = event?.rejectedCount?.minus(1).toString()
} else {
rejectTextView.text = event?.rejectedCount.toString()
}
private fun updateConfirmCount(event: Event) {
val confirmCount = if (event.confirmedCount > 0) event.confirmedCount else 1
agreeTextView.text = confirmCount.toString()
}

private fun rejectedCount() {
rejectTextView.text = (event?.rejectedCount?.plus(1)).toString()

if (event?.firstNameReviewer == context.getNameEmail()) {
agreeTextView.text = event?.confirmedCount?.minus(1).toString()
} else {
agreeTextView.text = event?.confirmedCount.toString()
}
private fun updateRejectCount(event: Event) {
val rejectCount = if (event.rejectedCount > 0) event.rejectedCount else 1
rejectTextView.text = rejectCount.toString()
}

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import org.rfcx.ranger.entity.event.EventReview
import org.rfcx.ranger.entity.event.ReviewEventFactory
import org.rfcx.ranger.service.ReviewEventSyncWorker
import org.rfcx.ranger.util.NetworkNotConnection
import org.rfcx.ranger.util.getNameEmail
import org.rfcx.ranger.util.isNetworkAvailable
import java.io.File

Expand Down Expand Up @@ -65,8 +66,8 @@ class AlertBottomDialogViewModel(private val context: Context,
val classifiedCation: LiveData<Result<List<Confidence>>>
get() = _classifiedCation

private var _reviewEvent: MutableLiveData<Result<ReviewEventFactory>> = MutableLiveData()
val reviewEvent: LiveData<Result<ReviewEventFactory>>
private var _reviewEvent: MutableLiveData<Result<Pair<Event, ReviewEventFactory>>> = MutableLiveData()
val reviewEvent: LiveData<Result<Pair<Event, ReviewEventFactory>>>
get() = _reviewEvent

init {
Expand Down Expand Up @@ -160,7 +161,6 @@ class AlertBottomDialogViewModel(private val context: Context,
_playerState.value = Player.STATE_BUFFERING
}


private val exoPlayerListener = object : Player.EventListener {
override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
_playerState.value = playbackState
Expand Down Expand Up @@ -189,7 +189,6 @@ class AlertBottomDialogViewModel(private val context: Context,
updateSoundProgress()
playerTimeHandler.postDelayed(this, delayTime)
}

}

private fun updateSoundProgress() {
Expand Down Expand Up @@ -225,17 +224,20 @@ class AlertBottomDialogViewModel(private val context: Context,
val requests = ReviewEventFactory(it.id, if (confirm) ReviewEventFactory.confirmEvent else ReviewEventFactory.rejectEvent)
reviewEventUseCase.execute(object : DisposableSingleObserver<Unit>() {
override fun onSuccess(t: Unit) {
_reviewEvent.value = Result.Success(requests)
// invoke state to review
_eventState.value = EventState.REVIEWED
requestUpdateEvent(requests)
}

override fun onError(e: Throwable) {
e.printStackTrace()
// save to review unsent
eventDb.save(EventReview(requests.eventGuID, requests.reviewConfirm,
EventReview.UNSENT))
_reviewEvent.value = Result.Success(requests)
val event = eventResult!!.apply {
it.firstNameReviewer = context.getNameEmail() // update reviewer on offline
}
eventDb.saveEvent(event)
_reviewEvent.value = Result.Success(Pair(event, requests))
_eventState.value = EventState.REVIEWED // invoke state to review
}

}, requests)
Expand All @@ -247,6 +249,27 @@ class AlertBottomDialogViewModel(private val context: Context,
}
}

fun requestUpdateEvent(requests: ReviewEventFactory) {
if (!context.isNetworkAvailable()) {
_reviewEvent.value = Result.Success(Pair(eventResult!!, requests))
}

getEventUseCase.execute(object : DisposableSingleObserver<Event>() {
override fun onSuccess(event: Event) {
_reviewEvent.value = Result.Success(Pair(event, requests))
// invoke state to review
_eventState.value = EventState.REVIEWED
}

override fun onError(e: Throwable) {
e.printStackTrace()

_event.value = Result.Error(e)
_reviewEvent.value = Result.Success(Pair(eventResult!!, requests))
}
}, requests.eventGuID)
}


override fun onCleared() {
super.onCleared()
Expand Down
Loading

0 comments on commit 13fd9b9

Please sign in to comment.