@@ -19,6 +19,7 @@ package im.vector.app.features.home.room.threads.list.views
19
19
import android.os.Bundle
20
20
import android.view.LayoutInflater
21
21
import android.view.Menu
22
+ import android.view.MenuInflater
22
23
import android.view.MenuItem
23
24
import android.view.View
24
25
import android.view.ViewGroup
@@ -70,6 +71,16 @@ class ThreadListFragment @Inject constructor(
70
71
analyticsScreenName = MobileScreen .ScreenName .ThreadList
71
72
}
72
73
74
+ override fun onCreateOptionsMenu (menu : Menu , inflater : MenuInflater ) {
75
+ super .onCreateOptionsMenu(menu, inflater)
76
+
77
+ menu.findItem(R .id.menu_thread_list_filter)?.let { menuItem ->
78
+ menuItem.actionView.setOnClickListener {
79
+ onOptionsItemSelected(menuItem)
80
+ }
81
+ }
82
+ }
83
+
73
84
override fun onOptionsItemSelected (item : MenuItem ): Boolean {
74
85
return when (item.itemId) {
75
86
R .id.menu_thread_list_filter -> {
@@ -82,6 +93,9 @@ class ThreadListFragment @Inject constructor(
82
93
83
94
override fun onPrepareOptionsMenu (menu : Menu ) {
84
95
withState(threadListViewModel) { state ->
96
+ val filterIcon = menu.findItem(R .id.menu_thread_list_filter).actionView
97
+ val filterBadge = filterIcon.findViewById<View >(R .id.threadListFilterBadge)
98
+ filterBadge.isVisible = state.shouldFilterThreads
85
99
when (threadListViewModel.canHomeserverUseThreading()) {
86
100
true -> menu.findItem(R .id.menu_thread_list_filter).isVisible = ! state.threadSummaryList.invoke().isNullOrEmpty()
87
101
false -> menu.findItem(R .id.menu_thread_list_filter).isVisible = ! state.rootThreadEventList.invoke().isNullOrEmpty()
@@ -146,9 +160,9 @@ class ThreadListFragment @Inject constructor(
146
160
147
161
override fun onThreadSummaryClicked (threadSummary : ThreadSummary ) {
148
162
val roomThreadDetailArgs = ThreadTimelineArgs (
149
- roomId = threadSummary .roomId,
150
- displayName = threadSummary.rootThreadSenderInfo .displayName,
151
- avatarUrl = threadSummary.rootThreadSenderInfo .avatarUrl,
163
+ roomId = threadListArgs .roomId,
164
+ displayName = threadListArgs .displayName,
165
+ avatarUrl = threadListArgs .avatarUrl,
152
166
roomEncryptionTrustLevel = null ,
153
167
rootThreadEventId = threadSummary.rootEventId
154
168
)
@@ -157,9 +171,9 @@ class ThreadListFragment @Inject constructor(
157
171
158
172
override fun onThreadListClicked (timelineEvent : TimelineEvent ) {
159
173
val threadTimelineArgs = ThreadTimelineArgs (
160
- roomId = timelineEvent .roomId,
161
- displayName = timelineEvent.senderInfo .displayName,
162
- avatarUrl = timelineEvent.senderInfo .avatarUrl,
174
+ roomId = threadListArgs .roomId,
175
+ displayName = threadListArgs .displayName,
176
+ avatarUrl = threadListArgs .avatarUrl,
163
177
roomEncryptionTrustLevel = null ,
164
178
rootThreadEventId = timelineEvent.eventId
165
179
)
0 commit comments