Skip to content

Commit b4aff05

Browse files
Merge pull request #15475 from nextcloud/fix/empty-list-text-state-handling
fix: empty list state handling
2 parents a7f50c1 + 48ce57e commit b4aff05

File tree

9 files changed

+194
-179
lines changed

9 files changed

+194
-179
lines changed

app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import com.owncloud.android.AbstractIT
2424
import com.owncloud.android.R
2525
import com.owncloud.android.lib.common.utils.Log_OC
2626
import com.owncloud.android.ui.activity.FileDisplayActivity
27+
import com.owncloud.android.ui.fragment.EmptyListState
2728
import com.owncloud.android.utils.EspressoIdlingResource
2829
import com.owncloud.android.utils.ScreenshotTest
2930
import org.junit.After
@@ -68,7 +69,7 @@ class FileDisplayActivityScreenshotIT : AbstractIT() {
6869
listOfFilesFragment?.let {
6970
it.setFabEnabled(false)
7071
resetScrolling(true)
71-
it.setEmptyListLoadingMessage()
72+
it.setEmptyListMessage(EmptyListState.LOADING)
7273
it.isLoading = false
7374
}
7475
}
@@ -98,7 +99,7 @@ class FileDisplayActivityScreenshotIT : AbstractIT() {
9899
val fragment = sut.listOfFilesFragment
99100
Assert.assertNotNull(fragment)
100101
fragment!!.setFabEnabled(false)
101-
fragment.setEmptyListLoadingMessage()
102+
fragment.setEmptyListMessage(EmptyListState.LOADING)
102103
fragment.isLoading = false
103104
EspressoIdlingResource.decrement()
104105

@@ -113,7 +114,7 @@ class FileDisplayActivityScreenshotIT : AbstractIT() {
113114

114115
EspressoIdlingResource.increment()
115116
fragment.setFabEnabled(false)
116-
fragment.setEmptyListLoadingMessage()
117+
fragment.setEmptyListMessage(EmptyListState.LOADING)
117118
fragment.isLoading = false
118119
EspressoIdlingResource.decrement()
119120

@@ -146,7 +147,7 @@ class FileDisplayActivityScreenshotIT : AbstractIT() {
146147

147148
listOfFilesFragment?.let {
148149
it.setFabEnabled(false)
149-
it.setEmptyListLoadingMessage()
150+
it.setEmptyListMessage(EmptyListState.LOADING)
150151
it.isLoading = false
151152
}
152153
}

app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ import com.owncloud.android.ui.dialog.TermsOfServiceDialog
120120
import com.owncloud.android.ui.events.SearchEvent
121121
import com.owncloud.android.ui.events.SyncEventFinished
122122
import com.owncloud.android.ui.events.TokenPushEvent
123+
import com.owncloud.android.ui.fragment.EmptyListState
123124
import com.owncloud.android.ui.fragment.FileDetailFragment
124125
import com.owncloud.android.ui.fragment.FileFragment
125126
import com.owncloud.android.ui.fragment.GalleryFragment
@@ -191,7 +192,11 @@ class FileDisplayActivity :
191192

192193
private var mWaitingToPreview: OCFile? = null
193194

194-
private var mSyncInProgress = false
195+
private var mSyncInProgress: Boolean = false
196+
set(value) {
197+
field = value
198+
setBackgroundText()
199+
}
195200

196201
private var mWaitingToSend: OCFile? = null
197202

@@ -1435,8 +1440,10 @@ class FileDisplayActivity :
14351440
) {
14361441
mLastSslUntrustedServerResult = syncResult
14371442
}
1438-
} catch (e: java.lang.RuntimeException) {
1443+
} catch (_: java.lang.RuntimeException) {
14391444
safelyDeleteResult(intent)
1445+
} finally {
1446+
mSyncInProgress = false
14401447
}
14411448
}
14421449
}
@@ -1486,7 +1493,6 @@ class FileDisplayActivity :
14861493
Log_OC.d(TAG, "Setting progress visibility to $mSyncInProgress")
14871494

14881495
handleScrollBehaviour(fileListFragment)
1489-
setBackgroundText()
14901496
}
14911497

14921498
private fun handleRemovedFileFromServer(currentFile: OCFile?, currentDir: OCFile?): OCFile? {
@@ -1592,36 +1598,18 @@ class FileDisplayActivity :
15921598
* Show a text message on screen view for notifying user if content is loading or folder is empty
15931599
*/
15941600
private fun setBackgroundText() {
1595-
val ocFileListFragment = this.listOfFilesFragment
1596-
if (ocFileListFragment != null) {
1597-
if (mSyncInProgress ||
1598-
file.fileLength > 0 &&
1599-
storageManager.getFolderContent(
1600-
file,
1601-
false
1602-
).isEmpty()
1603-
) {
1604-
ocFileListFragment.setEmptyListLoadingMessage()
1605-
} else {
1606-
if (MainApp.isOnlyOnDevice()) {
1607-
ocFileListFragment.setMessageForEmptyList(
1608-
R.string.file_list_empty_headline,
1609-
R.string.file_list_empty_on_device,
1610-
R.drawable.ic_list_empty_folder,
1611-
true
1612-
)
1613-
} else {
1614-
connectivityService.isNetworkAndServerAvailable { result: Boolean? ->
1615-
if (result == true) {
1616-
ocFileListFragment.setEmptyListMessage(SearchType.NO_SEARCH)
1617-
} else {
1618-
ocFileListFragment.setEmptyListMessage(SearchType.OFFLINE_MODE)
1619-
}
1620-
}
1601+
val ocFileListFragment = listOfFilesFragment ?: return
1602+
connectivityService.isNetworkAndServerAvailable { result: Boolean? ->
1603+
when {
1604+
mSyncInProgress && result == true -> {
1605+
ocFileListFragment.setEmptyListMessage(EmptyListState.LOADING)
16211606
}
1607+
MainApp.isOnlyOnDevice() -> {
1608+
ocFileListFragment.setEmptyListMessage(EmptyListState.ONLY_ON_DEVICE)
1609+
}
1610+
result == true -> ocFileListFragment.setEmptyListMessage(SearchType.NO_SEARCH)
1611+
else -> ocFileListFragment.setEmptyListMessage(EmptyListState.OFFLINE_MODE)
16221612
}
1623-
} else {
1624-
Log_OC.e(TAG, "OCFileListFragment is null")
16251613
}
16261614
}
16271615

@@ -2379,7 +2367,7 @@ class FileDisplayActivity :
23792367
if (fragment != null && fragment !is GalleryFragment) {
23802368
fragment.setLoading(true)
23812369
}
2382-
setBackgroundText()
2370+
mSyncInProgress = false
23832371
}, DELAY_TO_REQUEST_REFRESH_OPERATION_LATER)
23842372
}
23852373
}

app/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import com.owncloud.android.syncadapter.FileSyncAdapter
4040
import com.owncloud.android.ui.dialog.CreateFolderDialogFragment
4141
import com.owncloud.android.ui.dialog.SortingOrderDialogFragment.OnSortingOrderListener
4242
import com.owncloud.android.ui.events.SearchEvent
43+
import com.owncloud.android.ui.fragment.EmptyListState
4344
import com.owncloud.android.ui.fragment.FileFragment
4445
import com.owncloud.android.ui.fragment.OCFileListFragment
4546
import com.owncloud.android.utils.DataHolderUtil
@@ -221,15 +222,10 @@ open class FolderPickerActivity :
221222
}
222223

223224
listFragment?.let {
224-
if (!mSyncInProgress) {
225-
it.setMessageForEmptyList(
226-
R.string.folder_list_empty_headline,
227-
R.string.file_list_empty_moving,
228-
R.drawable.ic_list_empty_create_folder,
229-
true
230-
)
225+
if (mSyncInProgress) {
226+
it.setEmptyListMessage(EmptyListState.LOADING)
231227
} else {
232-
it.setEmptyListLoadingMessage()
228+
it.setEmptyListMessage(EmptyListState.ADD_FOLDER)
233229
}
234230
}
235231
}

0 commit comments

Comments
 (0)