diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java index cb7013cd1ce2..16478cd5b628 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -2507,8 +2507,7 @@ private void openFile(User user, String fileId) { setUser(user); if (fileId == null) { - dismissLoadingDialog(); - DisplayUtils.showSnackMessage(this, getString(R.string.error_retrieving_file)); + onFileRequestError(null); return; } @@ -2529,8 +2528,7 @@ private void openFileByPath(User user, String filepath) { setUser(user); if (filepath == null) { - dismissLoadingDialog(); - DisplayUtils.showSnackMessage(this, getString(R.string.error_retrieving_file)); + onFileRequestError(null); return; } @@ -2544,8 +2542,7 @@ private void openFileByPath(User user, String filepath) { try { client = clientFactory.create(user); } catch (ClientFactory.CreationException e) { - dismissLoadingDialog(); - DisplayUtils.showSnackMessage(this, getString(R.string.error_retrieving_file)); + onFileRequestError(null); return; } @@ -2554,9 +2551,17 @@ private void openFileByPath(User user, String filepath) { client, storageManager, user); - asyncRunner.postQuickTask(getRemoteFileTask, this::onFileRequestResult, null); + asyncRunner.postQuickTask(getRemoteFileTask, this::onFileRequestResult, this::onFileRequestError); + } + + private Unit onFileRequestError(Throwable throwable) { + dismissLoadingDialog(); + DisplayUtils.showSnackMessage(this, getString(R.string.error_retrieving_file)); + Log_OC.e(TAG, "Requesting file from remote failed!", throwable); + return null; } + private Unit onFileRequestResult(GetRemoteFileTask.Result result) { dismissLoadingDialog(); diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java b/app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java index 0298ef49bc0e..821d44ac3c7a 100755 --- a/app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java +++ b/app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java @@ -62,6 +62,8 @@ import com.owncloud.android.operations.RefreshFolderOperation; import com.owncloud.android.ui.activity.ConflictsResolveActivity; import com.owncloud.android.ui.activity.FileActivity; +import com.owncloud.android.ui.activity.FileDisplayActivity; +import com.owncloud.android.ui.preview.PreviewImageFragment; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.MimeTypeUtil; import com.owncloud.android.utils.theme.ViewThemeUtils; @@ -346,12 +348,15 @@ public void onBindViewHolder(SectionedViewHolder holder, int section, int relati itemViewHolder.binding.uploadRightButton.setOnClickListener(v -> removeUpload(item)); } itemViewHolder.binding.uploadRightButton.setVisibility(View.VISIBLE); - } else { // UploadStatus.UPLOAD_SUCCESS + } else { // UploadStatus.UPLOAD_SUCCEEDED itemViewHolder.binding.uploadRightButton.setVisibility(View.INVISIBLE); } itemViewHolder.binding.uploadListItemLayout.setOnClickListener(null); + // Set icon or thumbnail + itemViewHolder.binding.thumbnail.setImageResource(R.drawable.file); + // click on item if (item.getUploadStatus() == UploadStatus.UPLOAD_FAILED) { final UploadResult uploadResult = item.getLastResult(); @@ -381,12 +386,15 @@ public void onBindViewHolder(SectionedViewHolder holder, int section, int relati ); } }); - } else { - itemViewHolder.binding.uploadListItemLayout.setOnClickListener(v -> onUploadItemClick(item)); + } else if (item.getUploadStatus() == UploadStatus.UPLOAD_SUCCEEDED){ + itemViewHolder.binding.uploadListItemLayout.setOnClickListener(v -> onUploadedItemClick(item)); } - // Set icon or thumbnail - itemViewHolder.binding.thumbnail.setImageResource(R.drawable.file); + + // click on thumbnail to open locally + if (item.getUploadStatus() != UploadStatus.UPLOAD_SUCCEEDED){ + itemViewHolder.binding.thumbnail.setOnClickListener(v -> onUploadingItemClick(item)); + } /* * Cancellation needs do be checked and done before changing the drawable in fileIcon, or @@ -738,7 +746,10 @@ public final void loadUploadItemsFromDb() { notifyDataSetChanged(); } - private void onUploadItemClick(OCUpload file) { + /** + * Open local file. + */ + private void onUploadingItemClick(OCUpload file) { File f = new File(file.getLocalPath()); if (!f.exists()) { DisplayUtils.showSnackMessage(parentActivity, R.string.local_file_not_found_message); @@ -747,6 +758,30 @@ private void onUploadItemClick(OCUpload file) { } } + /** + * Open remote file. + */ + private void onUploadedItemClick(OCUpload upload) { + final OCFile file = parentActivity.getStorageManager().getFileByEncryptedRemotePath(upload.getRemotePath()); + if (file == null){ + DisplayUtils.showSnackMessage(parentActivity, R.string.error_retrieving_file); + Log_OC.i(TAG, "Could not find uploaded file on remote."); + return; + } + + if (PreviewImageFragment.canBePreviewed(file)){ + //show image preview and stay in uploads tab + Intent intent = FileDisplayActivity.openFileIntent(parentActivity, parentActivity.getUser().get(), file); + parentActivity.startActivity(intent); + }else{ + Intent intent = new Intent(parentActivity, FileDisplayActivity.class); + intent.setAction(Intent.ACTION_VIEW); + intent.putExtra(FileDisplayActivity.KEY_FILE_PATH, upload.getRemotePath()); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + parentActivity.startActivity(intent); + } + } + /** * Open file with app associates with its MIME type. If MIME type unknown, show list with all apps.