Skip to content

Commit f6854d9

Browse files
authored
CMM-1037 Pagelist empty view (#22413)
* Added temp code to remove virtual homepage item * Removed empty view image and deleted img_illustration_pages_104dp * Removed empty view image, deleted img_illustration_pages_104dp, and added subtitle resource * Ensure subtitle appears for empty published view * Removed image resource from model * added missing `run` * Fixed tests * Fixed detekt errors
1 parent 08db599 commit f6854d9

File tree

10 files changed

+44
-94
lines changed

10 files changed

+44
-94
lines changed

WordPress/src/main/java/org/wordpress/android/ui/pages/PageItem.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,10 +183,10 @@ sealed class PageItem(open val type: Type) {
183183
data class Divider(val title: String = "") : PageItem(DIVIDER)
184184

185185
data class Empty(
186-
@StringRes val textResource: Int = R.string.empty_list_default,
186+
@StringRes val titleResource: Int = R.string.empty_list_default,
187+
@StringRes val subtitleResource: Int? = null,
187188
val isSearching: Boolean = false,
188-
val isButtonVisible: Boolean = true,
189-
val isImageVisible: Boolean = true
189+
val isButtonVisible: Boolean = true
190190
) : PageItem(EMPTY)
191191

192192
object VirtualHomepage : PageItem(VIRTUAL_HOMEPAGE) {

WordPress/src/main/java/org/wordpress/android/ui/pages/PageItemViewHolder.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,14 @@ sealed class PageItemViewHolder(internal val parent: ViewGroup, @LayoutRes layou
342342
@Suppress("DEPRECATION")
343343
override fun onBind(pageItem: PageItem) {
344344
(pageItem as Empty).apply {
345-
emptyView.title.text = emptyView.resources.getString(pageItem.textResource)
345+
emptyView.title.text = emptyView.resources.getString(pageItem.titleResource)
346+
347+
pageItem.subtitleResource?.let { subtitleResource ->
348+
emptyView.subtitle.text = emptyView.resources.getString(subtitleResource)
349+
emptyView.subtitle.visibility = View.VISIBLE
350+
} ?: run {
351+
emptyView.subtitle.visibility = View.GONE
352+
}
346353

347354
if (pageItem.isButtonVisible) {
348355
emptyView.button.setOnClickListener {
@@ -353,8 +360,6 @@ sealed class PageItemViewHolder(internal val parent: ViewGroup, @LayoutRes layou
353360
emptyView.button.visibility = View.GONE
354361
}
355362

356-
emptyView.image.visibility = if (pageItem.isImageVisible) View.VISIBLE else View.GONE
357-
358363
emptyView.updateLayoutForSearch(pageItem.isSearching, 0)
359364
}
360365
}

WordPress/src/main/java/org/wordpress/android/viewmodel/pages/PageListViewModel.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,15 +261,19 @@ class PageListViewModel @Inject constructor(
261261
_pages.postValue(
262262
listOf(
263263
Empty(
264-
R.string.pages_fetching,
264+
titleResource = R.string.pages_fetching,
265265
isButtonVisible = false,
266-
isImageVisible = false
267266
)
268267
)
269268
)
270269
} else {
271270
when (listType) {
272-
PUBLISHED -> _pages.postValue(listOf(Empty(R.string.pages_empty_published)))
271+
PUBLISHED -> _pages.postValue(listOf(
272+
Empty(
273+
titleResource = R.string.pages_empty_published,
274+
subtitleResource = R.string.pages_empty_published_subtitle
275+
)
276+
))
273277
SCHEDULED -> _pages.postValue(listOf(Empty(R.string.pages_empty_scheduled)))
274278
DRAFTS -> _pages.postValue(listOf(Empty(R.string.pages_empty_drafts)))
275279
TRASHED -> _pages.postValue(listOf(Empty(R.string.pages_empty_trashed)))

WordPress/src/main/java/org/wordpress/android/viewmodel/pages/PageParentSearchViewModel.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ class PageParentSearchViewModel
4141
if (pageItems != null) {
4242
loadFoundPages(pageItems)
4343
} else {
44-
_searchResult.value = listOf(Empty(R.string.pages_search_suggestion, true))
44+
_searchResult.value = listOf(
45+
Empty(titleResource = R.string.pages_search_suggestion, isSearching = true)
46+
)
4547
}
4648
}
4749

@@ -53,7 +55,9 @@ class PageParentSearchViewModel
5355
if (pageItems.isNotEmpty()) {
5456
_searchResult.value = pageItems
5557
} else {
56-
_searchResult.value = listOf(Empty(R.string.pages_empty_search_result, true))
58+
_searchResult.value = listOf(
59+
Empty(titleResource = R.string.pages_empty_search_result, isSearching = true)
60+
)
5761
}
5862
}
5963
}

WordPress/src/main/java/org/wordpress/android/viewmodel/pages/SearchListViewModel.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ class SearchListViewModel
6464

6565
pagesViewModel.checkIfNewPageButtonShouldBeVisible()
6666
} else {
67-
_searchResult.value = listOf(Empty(R.string.pages_search_suggestion, true))
67+
_searchResult.value = listOf(
68+
Empty(titleResource = R.string.pages_search_suggestion, isSearching = true)
69+
)
6870
}
6971
}
7072

@@ -89,7 +91,9 @@ class SearchListViewModel
8991
}
9092
_searchResult.value = pageItems
9193
} else {
92-
_searchResult.value = listOf(Empty(R.string.pages_empty_search_result, true))
94+
_searchResult.value = listOf(
95+
Empty(titleResource = R.string.pages_empty_search_result, isSearching = true)
96+
)
9397
}
9498
}
9599

WordPress/src/main/res/drawable/img_illustration_pages_104dp.xml

Lines changed: 0 additions & 75 deletions
This file was deleted.

WordPress/src/main/res/layout/page_empty_item.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
android:layout_width="match_parent"
1010
android:layout_height="match_parent"
1111
app:aevButton="@string/pages_empty_list_button"
12-
app:aevImage="@drawable/img_illustration_pages_104dp"
1312
app:aevTitle="@string/empty_list_default" />
1413

1514
</RelativeLayout>

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3597,7 +3597,8 @@
35973597
<string name="pages_delete_permanently">Delete Permanently</string>
35983598
<string name="pages_empty_search_result">No pages matching your search</string>
35993599
<string name="pages_search_suggestion">Search pages</string>
3600-
<string name="pages_empty_published">You haven\'t published any pages yet</string>
3600+
<string name="pages_empty_published">You haven\'t published any pages - yet!</string>
3601+
<string name="pages_empty_published_subtitle">Why not create one?</string>
36013602
<string name="pages_empty_drafts">You don\'t have any draft pages</string>
36023603
<string name="pages_empty_scheduled">You don\'t have any scheduled pages</string>
36033604
<string name="pages_empty_trashed">You don\'t have any trashed pages</string>

WordPress/src/test/java/org/wordpress/android/viewmodel/pages/PageParentSearchViewModelTest.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,20 @@ class PageParentSearchViewModelTest : BaseUnitTest() {
3838
fun `show empty item on start`() {
3939
searchPages.value = null
4040

41-
assertThat(viewModel.searchResult.value).containsOnly(Empty(R.string.pages_search_suggestion, true))
41+
assertThat(viewModel.searchResult.value).containsOnly(
42+
Empty(titleResource = R.string.pages_search_suggestion, isSearching = true)
43+
)
4244
}
4345

4446
@Test
4547
fun `show no matches on empty search results`() {
46-
searchPages.value = mutableListOf(Empty(R.string.pages_empty_search_result, false))
48+
searchPages.value = mutableListOf(
49+
Empty(titleResource = R.string.pages_empty_search_result, isSearching = false)
50+
)
4751

48-
assertThat(viewModel.searchResult.value).containsOnly(Empty(R.string.pages_empty_search_result, false))
52+
assertThat(viewModel.searchResult.value).containsOnly(
53+
Empty(titleResource = R.string.pages_empty_search_result, isSearching = false)
54+
)
4955
}
5056

5157
@Test

WordPress/src/test/java/org/wordpress/android/viewmodel/pages/SearchListViewModelTest.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,9 @@ class SearchListViewModelTest : BaseUnitTest() {
9898
fun `show empty item on start`() {
9999
searchPages.value = null
100100

101-
assertThat(viewModel.searchResult.value).containsOnly(Empty(R.string.pages_search_suggestion, true))
101+
assertThat(viewModel.searchResult.value).containsOnly(
102+
Empty(titleResource = R.string.pages_search_suggestion, isSearching = true)
103+
)
102104
}
103105

104106
@Test

0 commit comments

Comments
 (0)