Skip to content

Commit cdada2a

Browse files
Merge pull request #17039 from nextcloud/check-npe-refresh-details
fix(file-details): refresh from fda
2 parents 3dc628c + d90f2d8 commit cdada2a

1 file changed

Lines changed: 51 additions & 40 deletions

File tree

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

Lines changed: 51 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -837,54 +837,65 @@ class FileDisplayActivity :
837837
downloadedRemotePath: String,
838838
success: Boolean
839839
) {
840-
val leftFragment = this.leftFragment
841-
if (leftFragment is FileDetailFragment) {
842-
val waitedPreview = mWaitingToPreview != null && mWaitingToPreview?.remotePath == downloadedRemotePath
843-
val fileInFragment = leftFragment.file
844-
if (fileInFragment != null && downloadedRemotePath != fileInFragment.remotePath) {
845-
// the user browsed to other file ; forget the automatic preview
846-
mWaitingToPreview = null
847-
} else if (downloadEvent == FileDownloadEventBroadcaster.ACTION_DOWNLOAD_ENQUEUED) {
848-
// grant that the details fragment updates the progress bar
840+
val leftFragment = this.leftFragment as? FileDetailFragment ?: return
841+
val fileInFragment = leftFragment.file
842+
843+
if (fileInFragment != null && downloadedRemotePath != fileInFragment.remotePath) {
844+
mWaitingToPreview = null
845+
return
846+
}
847+
848+
when (downloadEvent) {
849+
FileDownloadEventBroadcaster.ACTION_DOWNLOAD_ENQUEUED -> {
849850
leftFragment.listenForTransferProgress()
850851
leftFragment.updateFileDetails(true, false)
851-
} else if (downloadEvent == FileDownloadEventBroadcaster.ACTION_DOWNLOAD_COMPLETED) {
852-
// update the details panel
853-
var detailsFragmentChanged = false
854-
if (waitedPreview) {
855-
if (success) {
856-
// update the file from database, for the local storage path
857-
mWaitingToPreview = mWaitingToPreview?.fileId?.let { storageManager.getFileById(it) }
858-
859-
if (PreviewMediaActivity.Companion.canBePreviewed(mWaitingToPreview)) {
860-
mWaitingToPreview?.let {
861-
startMediaPreview(it, 0, true, true, true, true)
862-
detailsFragmentChanged = true
863-
}
864-
} else if (MimeTypeUtil.isVCard(mWaitingToPreview?.mimeType)) {
865-
startContactListFragment(mWaitingToPreview)
866-
detailsFragmentChanged = true
867-
} else if (PreviewTextFileFragment.canBePreviewed(mWaitingToPreview)) {
868-
startTextPreview(mWaitingToPreview, true)
869-
detailsFragmentChanged = true
870-
} else if (MimeTypeUtil.isPDF(mWaitingToPreview)) {
871-
mWaitingToPreview?.let {
872-
startPdfPreview(it)
873-
detailsFragmentChanged = true
874-
}
875-
} else {
876-
fileOperationsHelper.openFile(mWaitingToPreview)
877-
}
878-
}
879-
mWaitingToPreview = null
880-
}
881-
if (!detailsFragmentChanged) {
852+
}
853+
854+
FileDownloadEventBroadcaster.ACTION_DOWNLOAD_COMPLETED -> {
855+
val waitedPreview = mWaitingToPreview?.remotePath == downloadedRemotePath
856+
val previewStarted = waitedPreview && tryStartWaitingPreview(success)
857+
mWaitingToPreview = null
858+
if (!previewStarted) {
882859
leftFragment.updateFileDetails(false, success)
883860
}
884861
}
885862
}
886863
}
887864

865+
private fun tryStartWaitingPreview(success: Boolean): Boolean {
866+
if (!success) return false
867+
868+
mWaitingToPreview = mWaitingToPreview?.fileId?.let { storageManager.getFileById(it) }
869+
val file = mWaitingToPreview ?: return false
870+
871+
return when {
872+
PreviewMediaActivity.canBePreviewed(file) -> {
873+
startMediaPreview(file, 0, true, true, true, true)
874+
true
875+
}
876+
877+
MimeTypeUtil.isVCard(file.mimeType) -> {
878+
startContactListFragment(file)
879+
true
880+
}
881+
882+
PreviewTextFileFragment.canBePreviewed(file) -> {
883+
startTextPreview(file, true)
884+
true
885+
}
886+
887+
MimeTypeUtil.isPDF(file) -> {
888+
startPdfPreview(file)
889+
true
890+
}
891+
892+
else -> {
893+
fileOperationsHelper.openFile(file)
894+
false
895+
}
896+
}
897+
}
898+
888899
override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
889900
if (mDrawerMenuItemstoShowHideList != null) {
890901
val drawerOpen = isDrawerOpen

0 commit comments

Comments
 (0)