Skip to content

Commit dd24a8c

Browse files
anhanh11001iamareebjamal
authored andcommitted
fix: Updating feedback section after making new one (#1747)
Detail: - Add livedata object to observe new submitted feedback. - Extract string + fix small bugs Fixes: #1746
1 parent a94fb57 commit dd24a8c

File tree

4 files changed

+40
-16
lines changed

4 files changed

+40
-16
lines changed

app/src/main/java/org/fossasia/openevent/general/event/EventDetailsFragment.kt

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ import kotlinx.android.synthetic.main.content_event.view.speakerRv
4545
import kotlinx.android.synthetic.main.content_event.view.speakersContainer
4646
import kotlinx.android.synthetic.main.content_event.view.sponsorsRecyclerView
4747
import kotlinx.android.synthetic.main.content_event.view.sponsorsSummaryContainer
48-
import kotlinx.android.synthetic.main.content_event.view.feedbackContainer
4948
import kotlinx.android.synthetic.main.fragment_event.view.buttonTickets
5049
import kotlinx.android.synthetic.main.fragment_event.view.eventErrorCard
5150
import kotlinx.android.synthetic.main.fragment_event.view.container
@@ -152,10 +151,11 @@ class EventDetailsFragment : Fragment() {
152151
loadTicketFragment()
153152
}
154153

155-
eventViewModel.error
154+
eventViewModel.popMessage
156155
.nonNull()
157156
.observe(viewLifecycleOwner, Observer {
158-
showEventErrorScreen(true)
157+
rootView.snackbar(it)
158+
showEventErrorScreen(it == getString(R.string.error_fetching_event_message))
159159
})
160160

161161
eventViewModel.eventFeedback.observe(viewLifecycleOwner, Observer {
@@ -167,9 +167,16 @@ class EventDetailsFragment : Fragment() {
167167
rootView.feedbackRv.isVisible = true
168168
rootView.noFeedBackTv.isVisible = false
169169
}
170-
rootView.feedbackContainer.isVisible = it.isNotEmpty()
171170
})
172171

172+
eventViewModel.submittedFeedback
173+
.nonNull()
174+
.observe(viewLifecycleOwner, Observer {
175+
feedbackAdapter.add(it)
176+
rootView.feedbackRv.isVisible = true
177+
rootView.noFeedBackTv.isVisible = false
178+
})
179+
173180
rootView.feedbackBtn.setOnClickListener {
174181
checkForAuthentication()
175182
}
@@ -517,7 +524,6 @@ class EventDetailsFragment : Fragment() {
517524
eventViewModel.submitFeedback(layout.feedback.text.toString(),
518525
layout.feedbackrating.rating,
519526
safeArgs.eventId)
520-
rootView.snackbar(R.string.feedback_submitted)
521527
}
522528
.setNegativeButton(getString(R.string.cancel)) { dialog, _ ->
523529
dialog.cancel()

app/src/main/java/org/fossasia/openevent/general/event/EventDetailsViewModel.kt

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,14 @@ class EventDetailsViewModel(
3838
val progress: LiveData<Boolean> = mutableProgress
3939
private val mutableUser = MutableLiveData<User>()
4040
val user: LiveData<User> = mutableUser
41-
private val mutableError = SingleLiveEvent<String>()
42-
val error: LiveData<String> = mutableError
41+
private val mutablePopMessage = SingleLiveEvent<String>()
42+
val popMessage: LiveData<String> = mutablePopMessage
4343
private val mutableEvent = MutableLiveData<Event>()
4444
val event: LiveData<Event> = mutableEvent
4545
private val mutableEventFeedback = MutableLiveData<List<Feedback>>()
4646
val eventFeedback: LiveData<List<Feedback>> = mutableEventFeedback
47+
private val mutableSubmittedFeedback = MutableLiveData<Feedback>()
48+
val submittedFeedback: LiveData<Feedback> = mutableSubmittedFeedback
4749
private val mutableEventSessions = MutableLiveData<List<Session>>()
4850
val eventSessions: LiveData<List<Session>> = mutableEventSessions
4951
private var eventSpeakers: LiveData<List<Speaker>> = MutableLiveData()
@@ -59,6 +61,8 @@ class EventDetailsViewModel(
5961
mutableEventFeedback.value = it
6062
}, {
6163
Timber.e(it, "Error fetching events feedback")
64+
mutablePopMessage.value = resource.getString(R.string.error_fetching_event_section_message,
65+
resource.getString(R.string.feedback))
6266
})
6367
}
6468

@@ -68,9 +72,10 @@ class EventDetailsViewModel(
6872
compositeDisposable += eventService.submitFeedback(feedback)
6973
.withDefaultSchedulers()
7074
.subscribe({
71-
//Do Nothing
75+
mutablePopMessage.value = resource.getString(R.string.feedback_submitted)
76+
mutableSubmittedFeedback.value = it
7277
}, {
73-
it.message.toString() == "HTTP 400 BAD REQUEST"
78+
mutablePopMessage.value = resource.getString(R.string.error_submitting_feedback)
7479
})
7580
}
7681
fun fetchEventSpeakers(id: Long) {
@@ -80,7 +85,8 @@ class EventDetailsViewModel(
8085
//Do Nothing
8186
}, {
8287
Timber.e(it, "Error fetching speaker for event id %d", id)
83-
mutableError.value = resource.getString(R.string.error_fetching_event_message)
88+
mutablePopMessage.value = resource.getString(R.string.error_fetching_event_section_message,
89+
resource.getString(R.string.speakers))
8490
})
8591
}
8692

@@ -96,15 +102,16 @@ class EventDetailsViewModel(
96102
//Do Nothing
97103
}, {
98104
Timber.e(it, "Error fetching sponsor for event id %d", id)
99-
mutableError.value = resource.getString(R.string.error_fetching_event_message)
105+
mutablePopMessage.value = resource.getString(R.string.error_fetching_event_section_message,
106+
resource.getString(R.string.sponsors))
100107
})
101108
}
102109

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

105112
fun loadEvent(id: Long) {
106-
if (id.equals(-1)) {
107-
mutableError.value = resource.getString(R.string.error_fetching_event_message)
113+
if (id == -1L) {
114+
mutablePopMessage.value = resource.getString(R.string.error_fetching_event_message)
108115
return
109116
}
110117
compositeDisposable += eventService.getEvent(id)
@@ -117,7 +124,7 @@ class EventDetailsViewModel(
117124
mutableEvent.value = it
118125
}, {
119126
Timber.e(it, "Error fetching event %d", id)
120-
mutableError.value = resource.getString(R.string.error_fetching_event_message)
127+
mutablePopMessage.value = resource.getString(R.string.error_fetching_event_message)
121128
})
122129
}
123130

@@ -127,6 +134,8 @@ class EventDetailsViewModel(
127134
.subscribe({
128135
mutableEventSessions.value = it
129136
}, {
137+
mutablePopMessage.value = resource.getString(R.string.error_fetching_event_section_message,
138+
resource.getString(R.string.sessions))
130139
Timber.e(it, "Error fetching events sessions")
131140
})
132141
}
@@ -145,7 +154,7 @@ class EventDetailsViewModel(
145154
Timber.d("Success")
146155
}, {
147156
Timber.e(it, "Error")
148-
mutableError.value = resource.getString(R.string.error)
157+
mutablePopMessage.value = resource.getString(R.string.error)
149158
})
150159
}
151160

app/src/main/java/org/fossasia/openevent/general/event/feedback/FeedbackRecyclerAdapter.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import androidx.recyclerview.widget.RecyclerView
66
import org.fossasia.openevent.general.R
77

88
class FeedbackRecyclerAdapter : RecyclerView.Adapter<FeedbackViewHolder>() {
9-
val feedbackList = ArrayList<Feedback>()
9+
private val feedbackList = ArrayList<Feedback>()
1010

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

18+
fun add(feedback: Feedback) {
19+
feedbackList.add(0, feedback)
20+
notifyItemInserted(0)
21+
}
22+
1823
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FeedbackViewHolder {
1924
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_feedback, parent, false)
2025
return FeedbackViewHolder(view)

app/src/main/res/values/strings.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,9 @@
302302
<string name="provide_name_message">Please provide first name and last name!</string>
303303
<string name="user_update_error_message">Error updating user!</string>
304304
<string name="user_update_success_message">User updated successfully!</string>
305+
<string name="error_fetching_event_section_message">"Error fetching %1$s for the event</string>
306+
<string name="error_submitting_feedback">Fail on submitting the feedback</string>
307+
<string name="success_submitting_feedback">Feedback submitted</string>
305308
<string name="failure">Failure</string>
306309

307310
<!--social link fragment-->
@@ -326,6 +329,7 @@
326329
<string name="free_stuff">Free stuff only</string>
327330
<string name="speakers">Speakers</string>
328331
<string name="sponsors">Sponsors</string>
332+
<string name="sessions">Sessions</string>
329333
<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>
330334
<string name="sort_by_name">name</string>
331335
<string name="sort_by_date">starts-at</string>

0 commit comments

Comments
 (0)