From 0f7d6a19469cd364e4539f72b5c05929c514c84c Mon Sep 17 00:00:00 2001 From: ariskotsomitopoulos Date: Tue, 29 Mar 2022 16:26:47 +0300 Subject: [PATCH 1/4] Add loader to thread list --- .../list/viewmodel/ThreadListViewModel.kt | 8 ++++++ .../list/viewmodel/ThreadListViewState.kt | 1 + .../threads/list/views/ThreadListFragment.kt | 5 ++++ .../main/res/layout/fragment_thread_list.xml | 26 ++++++++++++++----- 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewModel.kt index 7f18d172e4..da09683b63 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewModel.kt @@ -113,7 +113,15 @@ class ThreadListViewModel @AssistedInject constructor(@Assisted val initialState private fun fetchThreadList() { viewModelScope.launch { + isLoading(true) room?.fetchThreadSummaries() + isLoading(false) + } + } + + private fun isLoading(show: Boolean) { + setState { + copy(isLoading = show) } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewState.kt b/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewState.kt index e08f70030b..2328da0b8a 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewState.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewState.kt @@ -27,6 +27,7 @@ data class ThreadListViewState( val threadSummaryList: Async> = Uninitialized, val rootThreadEventList: Async> = Uninitialized, val shouldFilterThreads: Boolean = false, + val isLoading: Boolean = false, val roomId: String ) : MavericksState { constructor(args: ThreadListArgs) : this(roomId = args.roomId) diff --git a/vector/src/main/java/im/vector/app/features/home/room/threads/list/views/ThreadListFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/threads/list/views/ThreadListFragment.kt index d5659efa49..ab9ca4d2f2 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/threads/list/views/ThreadListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/threads/list/views/ThreadListFragment.kt @@ -104,6 +104,11 @@ class ThreadListFragment @Inject constructor( override fun invalidate() = withState(threadListViewModel) { state -> renderEmptyStateIfNeeded(state) threadListController.update(state) + renderLoaderIfNeeded(state) + } + + private fun renderLoaderIfNeeded(state: ThreadListViewState) { + views.threadListProgressBar.isVisible = state.isLoading } private fun renderToolbar() { diff --git a/vector/src/main/res/layout/fragment_thread_list.xml b/vector/src/main/res/layout/fragment_thread_list.xml index 7e7c79f8c3..f0f7dff611 100644 --- a/vector/src/main/res/layout/fragment_thread_list.xml +++ b/vector/src/main/res/layout/fragment_thread_list.xml @@ -37,6 +37,21 @@ tools:listitem="@layout/item_thread" tools:visibility="gone" /> + + + + app:layout_constraintTop_toBottomOf="@id/threadListEmptyImageView" /> + app:layout_constraintTop_toBottomOf="@id/threadListEmptyTitleTextView" /> Date: Wed, 30 Mar 2022 12:32:08 +0300 Subject: [PATCH 2/4] Add changelog --- changelog.d/5562.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/5562.bugfix diff --git a/changelog.d/5562.bugfix b/changelog.d/5562.bugfix new file mode 100644 index 0000000000..02148e58fa --- /dev/null +++ b/changelog.d/5562.bugfix @@ -0,0 +1 @@ +Add loader in thread list \ No newline at end of file From f8a909b014ba92f9073fa2e2391cfeb217315cb0 Mon Sep 17 00:00:00 2001 From: ariskotsomitopoulos Date: Thu, 31 Mar 2022 14:07:49 +0300 Subject: [PATCH 3/4] Enhance naming --- .../room/threads/list/viewmodel/ThreadListViewModel.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewModel.kt index da09683b63..8840131f38 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewModel.kt @@ -113,15 +113,15 @@ class ThreadListViewModel @AssistedInject constructor(@Assisted val initialState private fun fetchThreadList() { viewModelScope.launch { - isLoading(true) + setLoading(true) room?.fetchThreadSummaries() - isLoading(false) + setLoading(false) } } - private fun isLoading(show: Boolean) { + private fun setLoading(isLoading: Boolean) { setState { - copy(isLoading = show) + copy(isLoading = isLoading) } } From 21541642ba8eaa748bbd6273ac9789c9251a0560 Mon Sep 17 00:00:00 2001 From: ariskotsomitopoulos Date: Thu, 31 Mar 2022 14:35:37 +0300 Subject: [PATCH 4/4] Exclude NegativeMargin from linter --- vector/src/main/res/layout/fragment_thread_list.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/vector/src/main/res/layout/fragment_thread_list.xml b/vector/src/main/res/layout/fragment_thread_list.xml index f0f7dff611..7918aaf178 100644 --- a/vector/src/main/res/layout/fragment_thread_list.xml +++ b/vector/src/main/res/layout/fragment_thread_list.xml @@ -46,6 +46,7 @@ android:layout_gravity="center_vertical" android:indeterminate="true" android:visibility="gone" + tools:ignore="NegativeMargin" android:layout_marginTop="-6dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"