Skip to content

Commit c6b22a4

Browse files
committed
add: idle empty list state
Signed-off-by: alperozturk <alper_ozturk@proton.me>
1 parent 3bb1c7f commit c6b22a4

File tree

5 files changed

+49
-55
lines changed

5 files changed

+49
-55
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1604,7 +1604,7 @@ class FileDisplayActivity :
16041604
MainApp.isOnlyOnDevice() -> {
16051605
ocFileListFragment.setEmptyListMessage(EmptyListState.ONLY_ON_DEVICE)
16061606
}
1607-
result == true -> ocFileListFragment.setEmptyListMessage(SearchType.NO_SEARCH)
1607+
result == true -> ocFileListFragment.setEmptyListMessage(EmptyListState.IDLE)
16081608
else -> ocFileListFragment.setEmptyListMessage(EmptyListState.OFFLINE_MODE)
16091609
}
16101610
}

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

Lines changed: 32 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import android.view.Menu
2121
import android.view.MenuItem
2222
import android.view.View
2323
import androidx.activity.OnBackPressedCallback
24+
import androidx.lifecycle.lifecycleScope
2425
import androidx.localbroadcastmanager.content.LocalBroadcastManager
2526
import com.nextcloud.client.di.Injectable
2627
import com.nextcloud.utils.fileNameValidator.FileNameValidator
@@ -48,6 +49,8 @@ import com.owncloud.android.utils.DisplayUtils
4849
import com.owncloud.android.utils.ErrorMessageAdapter
4950
import com.owncloud.android.utils.FileSortOrder
5051
import com.owncloud.android.utils.PathUtils
52+
import kotlinx.coroutines.Dispatchers
53+
import kotlinx.coroutines.launch
5154
import java.io.File
5255
import javax.inject.Inject
5356

@@ -60,7 +63,6 @@ open class FolderPickerActivity :
6063
OnSortingOrderListener {
6164

6265
private var mSyncBroadcastReceiver: SyncBroadcastReceiver? = null
63-
private var mSyncInProgress = false
6466
private var mSearchOnlyFolders = false
6567
var isDoNotEnterEncryptedFolder = false
6668
private set
@@ -105,8 +107,13 @@ open class FolderPickerActivity :
105107
}
106108

107109
updateActionBarTitleAndHomeButtonByString(captionText)
108-
setBackgroundText()
109110
handleBackPress()
111+
listOfFilesFragment?.let {
112+
if (it.isEmpty) {
113+
it.setEmptyListMessage(EmptyListState.ADD_FOLDER)
114+
return
115+
}
116+
}
110117
}
111118

112119
override fun onDestroy() {
@@ -211,25 +218,6 @@ open class FolderPickerActivity :
211218
transaction.commit()
212219
}
213220

214-
/**
215-
* Show a text message on screen view for notifying user if content is loading or folder is empty
216-
*/
217-
private fun setBackgroundText() {
218-
val listFragment = listOfFilesFragment
219-
220-
if (listFragment == null) {
221-
Log_OC.e(TAG, "OCFileListFragment is null")
222-
}
223-
224-
listFragment?.let {
225-
if (mSyncInProgress) {
226-
it.setEmptyListMessage(EmptyListState.LOADING)
227-
} else {
228-
it.setEmptyListMessage(EmptyListState.ADD_FOLDER)
229-
}
230-
}
231-
}
232-
233221
protected val listOfFilesFragment: OCFileListFragment?
234222
get() {
235223
val listOfFiles = supportFragmentManager.findFragmentByTag(TAG_LIST_OF_FOLDERS)
@@ -259,21 +247,27 @@ open class FolderPickerActivity :
259247
}
260248

261249
private fun startSyncFolderOperation(folder: OCFile?, ignoreETag: Boolean) {
262-
val currentSyncTime = System.currentTimeMillis()
263-
mSyncInProgress = true
264-
265-
RefreshFolderOperation(
266-
folder,
267-
currentSyncTime,
268-
false,
269-
ignoreETag,
270-
storageManager,
271-
user.orElseThrow { RuntimeException("User not set") },
272-
applicationContext
273-
).also {
274-
it.execute(account, this, null, null)
250+
listOfFilesFragment?.setEmptyListMessage(EmptyListState.LOADING)
251+
lifecycleScope.launch(Dispatchers.IO) {
252+
val currentSyncTime = System.currentTimeMillis()
253+
val operation = RefreshFolderOperation(
254+
folder,
255+
currentSyncTime,
256+
false,
257+
ignoreETag,
258+
storageManager,
259+
user.orElseThrow { RuntimeException("User not set") },
260+
applicationContext
261+
)
262+
operation.execute(
263+
account,
264+
this@FolderPickerActivity,
265+
{ _, _ ->
266+
listOfFilesFragment?.setEmptyListMessage(EmptyListState.IDLE)
267+
},
268+
null
269+
)
275270
}
276-
setBackgroundText()
277271
}
278272

279273
override fun onResume() {
@@ -554,9 +548,7 @@ open class FolderPickerActivity :
554548
return
555549
}
556550

557-
if (FileSyncAdapter.EVENT_FULL_SYNC_START == event) {
558-
mSyncInProgress = true
559-
} else {
551+
if (FileSyncAdapter.EVENT_FULL_SYNC_START != event) {
560552
var (currentFile, currentDir) = getCurrentFileAndDirectory()
561553

562554
if (currentDir == null) {
@@ -572,22 +564,17 @@ open class FolderPickerActivity :
572564
file = currentFile
573565
}
574566

575-
mSyncInProgress = (
576-
FileSyncAdapter.EVENT_FULL_SYNC_END != event &&
577-
RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED != event
578-
)
579-
580567
checkCredentials(syncResult, event)
581568
}
582569

583570
DataHolderUtil.getInstance().delete(intent.getStringExtra(FileSyncAdapter.EXTRA_RESULT))
584-
Log_OC.d(TAG, "Setting progress visibility to $mSyncInProgress")
585-
setBackgroundText()
586571
} catch (e: RuntimeException) {
587572
Log_OC.e(TAG, "Error on broadcast receiver", e)
588573
// avoid app crashes after changing the serial id of RemoteOperationResult
589574
// in owncloud library with broadcast notifications pending to process
590575
DataHolderUtil.getInstance().delete(intent.getStringExtra(FileSyncAdapter.EXTRA_RESULT))
576+
} finally {
577+
listOfFilesFragment?.setEmptyListMessage(EmptyListState.IDLE)
591578
}
592579
}
593580

app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,14 @@ open class ExtendedListFragment :
548548
}
549549
}
550550

551+
private fun setIdleState() {
552+
Handler(Looper.getMainLooper()).post {
553+
mEmptyListIcon?.visibility = View.GONE
554+
mEmptyListHeadline?.text = ""
555+
mEmptyListMessage?.text = ""
556+
}
557+
}
558+
551559
/**
552560
* displays an empty list information with a headline, a message and an icon.
553561
*
@@ -704,13 +712,11 @@ open class ExtendedListFragment :
704712
true
705713
)
706714
}
715+
EmptyListState.IDLE -> {
716+
setIdleState()
717+
}
707718
else -> {
708-
setMessageForEmptyList(
709-
R.string.file_list_empty_headline,
710-
getEmptyListViewTextId(),
711-
R.drawable.ic_list_empty_folder,
712-
true
713-
)
719+
setIdleState()
714720
}
715721
}
716722
}

app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1806,11 +1806,11 @@ protected void setEmptyView(SearchEvent event) {
18061806
break;
18071807

18081808
default:
1809-
setEmptyListMessage(NO_SEARCH);
1809+
setEmptyListMessage(EmptyListState.IDLE);
18101810
break;
18111811
}
18121812
} else {
1813-
setEmptyListMessage(NO_SEARCH);
1813+
setEmptyListMessage(EmptyListState.IDLE);
18141814
}
18151815
}
18161816

app/src/main/java/com/owncloud/android/ui/fragment/SearchType.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,6 @@ enum class EmptyListState : Parcelable {
3232
ADD_FOLDER,
3333
ONLY_ON_DEVICE,
3434
LOCAL_FILE_LIST_EMPTY_FILE,
35-
LOCAL_FILE_LIST_EMPTY_FOLDER
35+
LOCAL_FILE_LIST_EMPTY_FOLDER,
36+
IDLE
3637
}

0 commit comments

Comments
 (0)