Skip to content

fix: Updating feedback section after making new one #1747

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 14, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ import kotlinx.android.synthetic.main.content_event.view.speakerRv
import kotlinx.android.synthetic.main.content_event.view.speakersContainer
import kotlinx.android.synthetic.main.content_event.view.sponsorsRecyclerView
import kotlinx.android.synthetic.main.content_event.view.sponsorsSummaryContainer
import kotlinx.android.synthetic.main.content_event.view.feedbackContainer
import kotlinx.android.synthetic.main.fragment_event.view.buttonTickets
import kotlinx.android.synthetic.main.fragment_event.view.eventErrorCard
import kotlinx.android.synthetic.main.fragment_event.view.container
Expand Down Expand Up @@ -152,10 +151,11 @@ class EventDetailsFragment : Fragment() {
loadTicketFragment()
}

eventViewModel.error
eventViewModel.popMessage
.nonNull()
.observe(viewLifecycleOwner, Observer {
showEventErrorScreen(true)
rootView.snackbar(it)
showEventErrorScreen(it == getString(R.string.error_fetching_event_message))
})

eventViewModel.eventFeedback.observe(viewLifecycleOwner, Observer {
Expand All @@ -167,9 +167,16 @@ class EventDetailsFragment : Fragment() {
rootView.feedbackRv.isVisible = true
rootView.noFeedBackTv.isVisible = false
}
rootView.feedbackContainer.isVisible = it.isNotEmpty()
})

eventViewModel.submittedFeedback
.nonNull()
.observe(viewLifecycleOwner, Observer {
feedbackAdapter.add(it)
rootView.feedbackRv.isVisible = true
rootView.noFeedBackTv.isVisible = false
})

rootView.feedbackBtn.setOnClickListener {
checkForAuthentication()
}
Expand Down Expand Up @@ -517,7 +524,6 @@ class EventDetailsFragment : Fragment() {
eventViewModel.submitFeedback(layout.feedback.text.toString(),
layout.feedbackrating.rating,
safeArgs.eventId)
rootView.snackbar(R.string.feedback_submitted)
}
.setNegativeButton(getString(R.string.cancel)) { dialog, _ ->
dialog.cancel()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,14 @@ class EventDetailsViewModel(
val progress: LiveData<Boolean> = mutableProgress
private val mutableUser = MutableLiveData<User>()
val user: LiveData<User> = mutableUser
private val mutableError = SingleLiveEvent<String>()
val error: LiveData<String> = mutableError
private val mutablePopMessage = SingleLiveEvent<String>()
val popMessage: LiveData<String> = mutablePopMessage
private val mutableEvent = MutableLiveData<Event>()
val event: LiveData<Event> = mutableEvent
private val mutableEventFeedback = MutableLiveData<List<Feedback>>()
val eventFeedback: LiveData<List<Feedback>> = mutableEventFeedback
private val mutableSubmittedFeedback = MutableLiveData<Feedback>()
val submittedFeedback: LiveData<Feedback> = mutableSubmittedFeedback
private val mutableEventSessions = MutableLiveData<List<Session>>()
val eventSessions: LiveData<List<Session>> = mutableEventSessions
private var eventSpeakers: LiveData<List<Speaker>> = MutableLiveData()
Expand All @@ -59,6 +61,8 @@ class EventDetailsViewModel(
mutableEventFeedback.value = it
}, {
Timber.e(it, "Error fetching events feedback")
mutablePopMessage.value = resource.getString(R.string.error_fetching_event_section_message,
resource.getString(R.string.feedback))
})
}

Expand All @@ -68,9 +72,10 @@ class EventDetailsViewModel(
compositeDisposable += eventService.submitFeedback(feedback)
.withDefaultSchedulers()
.subscribe({
//Do Nothing
mutablePopMessage.value = resource.getString(R.string.feedback_submitted)
mutableSubmittedFeedback.value = it
}, {
it.message.toString() == "HTTP 400 BAD REQUEST"
mutablePopMessage.value = resource.getString(R.string.error_submitting_feedback)
})
}
fun fetchEventSpeakers(id: Long) {
Expand All @@ -80,7 +85,8 @@ class EventDetailsViewModel(
//Do Nothing
}, {
Timber.e(it, "Error fetching speaker for event id %d", id)
mutableError.value = resource.getString(R.string.error_fetching_event_message)
mutablePopMessage.value = resource.getString(R.string.error_fetching_event_section_message,
resource.getString(R.string.speakers))
})
}

Expand All @@ -96,15 +102,16 @@ class EventDetailsViewModel(
//Do Nothing
}, {
Timber.e(it, "Error fetching sponsor for event id %d", id)
mutableError.value = resource.getString(R.string.error_fetching_event_message)
mutablePopMessage.value = resource.getString(R.string.error_fetching_event_section_message,
resource.getString(R.string.sponsors))
})
}

fun loadEventSponsors(id: Long): LiveData<List<Sponsor>> = sponsorService.fetchSponsorsFromDb(id)

fun loadEvent(id: Long) {
if (id.equals(-1)) {
mutableError.value = resource.getString(R.string.error_fetching_event_message)
if (id == -1L) {
mutablePopMessage.value = resource.getString(R.string.error_fetching_event_message)
return
}
compositeDisposable += eventService.getEvent(id)
Expand All @@ -117,7 +124,7 @@ class EventDetailsViewModel(
mutableEvent.value = it
}, {
Timber.e(it, "Error fetching event %d", id)
mutableError.value = resource.getString(R.string.error_fetching_event_message)
mutablePopMessage.value = resource.getString(R.string.error_fetching_event_message)
})
}

Expand All @@ -127,6 +134,8 @@ class EventDetailsViewModel(
.subscribe({
mutableEventSessions.value = it
}, {
mutablePopMessage.value = resource.getString(R.string.error_fetching_event_section_message,
resource.getString(R.string.sessions))
Timber.e(it, "Error fetching events sessions")
})
}
Expand All @@ -145,7 +154,7 @@ class EventDetailsViewModel(
Timber.d("Success")
}, {
Timber.e(it, "Error")
mutableError.value = resource.getString(R.string.error)
mutablePopMessage.value = resource.getString(R.string.error)
})
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import androidx.recyclerview.widget.RecyclerView
import org.fossasia.openevent.general.R

class FeedbackRecyclerAdapter : RecyclerView.Adapter<FeedbackViewHolder>() {
val feedbackList = ArrayList<Feedback>()
private val feedbackList = ArrayList<Feedback>()

fun addAll(feedbackList: List<Feedback>) {
if (feedbackList.isNotEmpty())
Expand All @@ -15,6 +15,11 @@ class FeedbackRecyclerAdapter : RecyclerView.Adapter<FeedbackViewHolder>() {
notifyDataSetChanged()
}

fun add(feedback: Feedback) {
feedbackList.add(0, feedback)
notifyItemInserted(0)
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FeedbackViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_feedback, parent, false)
return FeedbackViewHolder(view)
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,9 @@
<string name="provide_name_message">Please provide first name and last name!</string>
<string name="user_update_error_message">Error updating user!</string>
<string name="user_update_success_message">User updated successfully!</string>
<string name="error_fetching_event_section_message">"Error fetching %1$s for the event</string>
<string name="error_submitting_feedback">Fail on submitting the feedback</string>
<string name="success_submitting_feedback">Feedback submitted</string>
<string name="failure">Failure</string>

<!--social link fragment-->
Expand All @@ -326,6 +329,7 @@
<string name="free_stuff">Free stuff only</string>
<string name="speakers">Speakers</string>
<string name="sponsors">Sponsors</string>
<string name="sessions">Sessions</string>
<string name="description_preview">Some description about this sponsor: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</string>
<string name="sort_by_name">name</string>
<string name="sort_by_date">starts-at</string>
Expand Down