Skip to content

Commit da09608

Browse files
Merge pull request #14394 from nextcloud/backport/14332/stable-3.30
[stable-3.30] Bugfix - E2E Share File From Other Apps
2 parents 239048b + f556648 commit da09608

File tree

2 files changed

+67
-44
lines changed

2 files changed

+67
-44
lines changed

app/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,19 @@ public OCFile findDuplicatedFile(OCFile parentFolder, ServerFileInterface newFil
249249
return duplicatedFile;
250250
}
251251

252+
public String getFileNameBasedOnEncryptionStatus(OCFile file) {
253+
FileEntity entity = fileDao.getFileById(file.getFileId());
254+
if (entity == null) {
255+
return file.getFileName();
256+
}
257+
258+
if (file.isEncrypted()) {
259+
return entity.getEncryptedName();
260+
} else {
261+
return entity.getName();
262+
}
263+
}
264+
252265
public List<OCFile> getFolderImages(OCFile folder, boolean onlyOnDevice) {
253266
List<OCFile> imageList = new ArrayList<>();
254267

app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java

Lines changed: 54 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ private Activity getActivity() {
234234
public void onAccountChosen(@NonNull User user) {
235235
setAccount(user.toPlatformAccount(), false);
236236
initTargetFolder();
237-
populateDirectoryList();
237+
populateDirectoryList(null);
238238
}
239239

240240
@Override
@@ -258,7 +258,7 @@ private void browseToFolderIfItExists() {
258258
final OCFile fileByPath = getStorageManager().getFileByPath(full_path);
259259
if (fileByPath != null) {
260260
startSyncFolderOperation(fileByPath);
261-
populateDirectoryList();
261+
populateDirectoryList(null);
262262
} else {
263263
browseToRoot();
264264
preferences.setLastUploadPath(OCFile.ROOT_PATH);
@@ -290,7 +290,7 @@ protected void onDestroy() {
290290
public void onSortingOrderChosen(FileSortOrder newSortOrder) {
291291
preferences.setSortOrder(mFile, newSortOrder);
292292
sortButton.setText(DisplayUtils.getSortOrderStringId(newSortOrder));
293-
populateDirectoryList();
293+
populateDirectoryList(null);
294294
}
295295

296296
@Override
@@ -310,8 +310,10 @@ public void selectFile(OCFile file) {
310310
}
311311

312312
startSyncFolderOperation(file);
313-
mParents.push(file.getFileName());
314-
populateDirectoryList();
313+
314+
String filename = fileDataStorageManager.getFileNameBasedOnEncryptionStatus(file);
315+
mParents.push(filename);
316+
populateDirectoryList(file);
315317
}
316318
}
317319

@@ -712,7 +714,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
712714
// account at this point
713715
// since account setup can set only one account at time
714716
setAccount(accounts[0], false);
715-
populateDirectoryList();
717+
populateDirectoryList(null);
716718
}
717719
}
718720
}
@@ -727,7 +729,7 @@ private void setupActionBarSubtitle() {
727729
}
728730
}
729731

730-
private void populateDirectoryList() {
732+
private void populateDirectoryList(OCFile file) {
731733
setupEmptyList();
732734
setupToolbar();
733735
ActionBar actionBar = getSupportActionBar();
@@ -743,7 +745,11 @@ private void populateDirectoryList() {
743745
if (TextUtils.isEmpty(current_dir)) {
744746
viewThemeUtils.files.themeActionBar(this, actionBar, R.string.uploader_top_message);
745747
} else {
746-
viewThemeUtils.files.themeActionBar(this, actionBar, current_dir);
748+
if (file != null) {
749+
viewThemeUtils.files.themeActionBar(this, actionBar, file.getFileName());
750+
} else {
751+
viewThemeUtils.files.themeActionBar(this, actionBar, current_dir);
752+
}
747753
}
748754

749755
actionBar.setDisplayHomeAsUpEnabled(notRoot);
@@ -754,37 +760,44 @@ private void populateDirectoryList() {
754760

755761
Log_OC.d(TAG, "Populating view with content of : " + full_path);
756762

757-
mFile = getStorageManager().getFileByPath(full_path);
758-
if (mFile != null) {
759-
List<OCFile> files = getStorageManager().getFolderContent(mFile, false);
763+
if (file != null) {
764+
mFile = file;
765+
} else {
766+
mFile = getStorageManager().getFileByPath(full_path);
767+
}
760768

761-
if (files.isEmpty()) {
762-
setMessageForEmptyList(R.string.file_list_empty_headline, R.string.empty,
763-
R.drawable.uploads);
764-
mEmptyListContainer.setVisibility(View.VISIBLE);
765-
binding.list.setVisibility(View.GONE);
766-
} else {
767-
mEmptyListContainer.setVisibility(View.GONE);
768-
files = sortFileList(files);
769-
setupReceiveExternalFilesAdapter(files);
770-
}
769+
if (mFile == null) {
770+
return;
771+
}
771772

772-
MaterialButton btnChooseFolder = binding.uploaderChooseFolder;
773-
viewThemeUtils.material.colorMaterialButtonPrimaryFilled(btnChooseFolder);
774-
btnChooseFolder.setOnClickListener(this);
773+
List<OCFile> files = getStorageManager().getFolderContent(mFile, false);
775774

776-
btnChooseFolder.setEnabled(mFile.canWrite());
775+
if (files.isEmpty()) {
776+
setMessageForEmptyList(R.string.file_list_empty_headline, R.string.empty,
777+
R.drawable.uploads);
778+
mEmptyListContainer.setVisibility(View.VISIBLE);
779+
binding.list.setVisibility(View.GONE);
780+
} else {
781+
mEmptyListContainer.setVisibility(View.GONE);
782+
files = sortFileList(files);
783+
setupReceiveExternalFilesAdapter(files);
784+
}
777785

778-
viewThemeUtils.platform.themeStatusBar(this);
786+
MaterialButton btnChooseFolder = binding.uploaderChooseFolder;
787+
viewThemeUtils.material.colorMaterialButtonPrimaryFilled(btnChooseFolder);
788+
btnChooseFolder.setOnClickListener(this);
779789

780-
viewThemeUtils.material.colorMaterialButtonPrimaryOutlined(binding.uploaderCancel);
781-
binding.uploaderCancel.setOnClickListener(this);
790+
btnChooseFolder.setEnabled(mFile.canWrite());
782791

783-
sortButton = binding.toolbarLayout.sortButton;
784-
FileSortOrder sortOrder = preferences.getSortOrderByFolder(mFile);
785-
sortButton.setText(DisplayUtils.getSortOrderStringId(sortOrder));
786-
sortButton.setOnClickListener(l -> openSortingOrderDialogFragment(getSupportFragmentManager(), sortOrder));
787-
}
792+
viewThemeUtils.platform.themeStatusBar(this);
793+
794+
viewThemeUtils.material.colorMaterialButtonPrimaryOutlined(binding.uploaderCancel);
795+
binding.uploaderCancel.setOnClickListener(this);
796+
797+
sortButton = binding.toolbarLayout.sortButton;
798+
FileSortOrder sortOrder = preferences.getSortOrderByFolder(mFile);
799+
sortButton.setText(DisplayUtils.getSortOrderStringId(sortOrder));
800+
sortButton.setOnClickListener(l -> openSortingOrderDialogFragment(getSupportFragmentManager(), sortOrder));
788801
}
789802

790803
private void setupReceiveExternalFilesAdapter(List<OCFile> files) {
@@ -979,19 +992,15 @@ public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationRe
979992
* @param operation Creation operation performed.
980993
* @param result Result of the creation.
981994
*/
982-
private void onCreateFolderOperationFinish(CreateFolderOperation operation,
983-
RemoteOperationResult result) {
995+
private void onCreateFolderOperationFinish(CreateFolderOperation operation, RemoteOperationResult result) {
984996
if (result.isSuccess()) {
985997
String remotePath = operation.getRemotePath().substring(0, operation.getRemotePath().length() - 1);
986998
String newFolder = remotePath.substring(remotePath.lastIndexOf('/') + 1);
987999
mParents.push(newFolder);
988-
populateDirectoryList();
1000+
populateDirectoryList(null);
9891001
} else {
9901002
try {
991-
DisplayUtils.showSnackMessage(
992-
this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources())
993-
);
994-
1003+
DisplayUtils.showSnackMessage(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()));
9951004
} catch (NotFoundException e) {
9961005
Log_OC.e(TAG, "Error while trying to show fail message ", e);
9971006
}
@@ -1043,8 +1052,10 @@ public boolean onCreateOptionsMenu(Menu menu) {
10431052

10441053
setupSearchView(menu);
10451054

1046-
MenuItem newFolderMenuItem = menu.findItem(R.id.action_create_dir);
1047-
newFolderMenuItem.setEnabled(mFile.canWrite());
1055+
if (mFile != null) {
1056+
MenuItem newFolderMenuItem = menu.findItem(R.id.action_create_dir);
1057+
newFolderMenuItem.setEnabled(mFile.canWrite());
1058+
}
10481059

10491060
return true;
10501061
}
@@ -1155,9 +1166,8 @@ public void onReceive(Context context, Intent intent) {
11551166
}
11561167

11571168
if (currentDir.getRemotePath().equals(syncFolderRemotePath)) {
1158-
populateDirectoryList();
1169+
populateDirectoryList(currentFile);
11591170
}
1160-
mFile = currentFile;
11611171
}
11621172

11631173
mSyncInProgress = !FileSyncAdapter.EVENT_FULL_SYNC_END.equals(event) &&

0 commit comments

Comments
 (0)