Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortobiasKaminsky <tobias@kaminsky.me>2022-11-01 12:19:15 +0300
committertobiasKaminsky <tobias@kaminsky.me>2022-11-01 12:41:08 +0300
commit6f826bbd8d5a341e163d61e250bca97a3ea57977 (patch)
treead9e9e6104364bf0ecf48ee42bb6776f4b04f302
parent12f04c83359f27ec8f5b2a32104c3d86ed2c7114 (diff)
Show warning when trying to access an encrypted folder, when not yet setup
Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
-rwxr-xr-xapp/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java12
-rw-r--r--app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java31
-rwxr-xr-xapp/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java11
-rw-r--r--app/src/main/res/values/strings.xml1
4 files changed, 34 insertions, 21 deletions
diff --git a/app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
index a24572d606..a6f37ac247 100755
--- a/app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
+++ b/app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
@@ -35,7 +35,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources.NotFoundException;
-import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -86,6 +85,7 @@ import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
import com.owncloud.android.ui.dialog.MultipleAccountsDialog;
import com.owncloud.android.ui.dialog.SortingOrderDialogFragment;
import com.owncloud.android.ui.fragment.TaskRetainerFragment;
+import com.owncloud.android.ui.helpers.FileOperationsHelper;
import com.owncloud.android.ui.helpers.UriUploader;
import com.owncloud.android.utils.DataHolderUtil;
import com.owncloud.android.utils.DisplayUtils;
@@ -647,7 +647,15 @@ public class ReceiveExternalFilesActivity extends FileActivity
if (files.size() < position) {
throw new IndexOutOfBoundsException("Incorrect item selected");
}
- if (files.get(position).isFolder()) {
+ OCFile ocFile = files.get(position);
+ if (ocFile.isFolder()) {
+ if (ocFile.isEncrypted() &&
+ !FileOperationsHelper.isEndToEndEncryptionSetup(this, getUser().orElseThrow(IllegalAccessError::new))) {
+ DisplayUtils.showSnackMessage(this, R.string.e2e_not_yet_setup);
+
+ return;
+ }
+
OCFile folderToEnter = files.get(position);
startSyncFolderOperation(folderToEnter);
mParents.push(folderToEnter.getFileName());
diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java
index b9c84e9cf0..87e1b8b6a4 100644
--- a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java
+++ b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java
@@ -964,31 +964,17 @@ public class OCFileListFragment extends ExtendedListFragment implements
return;
}
// check if keys are stored
- ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(
- getContext().getContentResolver());
-
-
- String publicKey = arbitraryDataProvider.getValue(user, EncryptionUtils.PUBLIC_KEY);
- String privateKey = arbitraryDataProvider.getValue(user, EncryptionUtils.PRIVATE_KEY);
-
- if (publicKey.isEmpty() || privateKey.isEmpty()) {
- Log_OC.d(TAG, "no public key for " + user.getAccountName());
-
- SetupEncryptionDialogFragment dialog = SetupEncryptionDialogFragment.newInstance(user,
- position);
- dialog.setTargetFragment(this, SetupEncryptionDialogFragment.SETUP_ENCRYPTION_REQUEST_CODE);
- dialog.show(getFragmentManager(), SetupEncryptionDialogFragment.SETUP_ENCRYPTION_DIALOG_TAG);
- } else {
+ if (FileOperationsHelper.isEndToEndEncryptionSetup(requireContext(), user)) {
// update state and view of this fragment
searchFragment = false;
mHideFab = false;
if (mContainerActivity instanceof FolderPickerActivity &&
- ((FolderPickerActivity) mContainerActivity)
- .isDoNotEnterEncryptedFolder()) {
+ ((FolderPickerActivity) mContainerActivity)
+ .isDoNotEnterEncryptedFolder()) {
Snackbar.make(getRecyclerView(),
- R.string.copy_move_to_encrypted_folder_not_supported,
- Snackbar.LENGTH_LONG).show();
+ R.string.copy_move_to_encrypted_folder_not_supported,
+ Snackbar.LENGTH_LONG).show();
} else {
listDirectory(file, MainApp.isOnlyOnDevice(), false);
// then, notify parent activity to let it update its state and view
@@ -996,6 +982,13 @@ public class OCFileListFragment extends ExtendedListFragment implements
// save index and top position
saveIndexAndTopPosition(position);
}
+ } else {
+ Log_OC.d(TAG, "no public key for " + user.getAccountName());
+
+ SetupEncryptionDialogFragment dialog = SetupEncryptionDialogFragment.newInstance(user,
+ position);
+ dialog.setTargetFragment(this, SetupEncryptionDialogFragment.SETUP_ENCRYPTION_REQUEST_CODE);
+ dialog.show(getFragmentManager(), SetupEncryptionDialogFragment.SETUP_ENCRYPTION_DIALOG_TAG);
}
} else {
// update state and view of this fragment
diff --git a/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java b/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java
index b0a751130a..e3d0e2389a 100755
--- a/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java
+++ b/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java
@@ -53,6 +53,7 @@ import com.nextcloud.client.network.ConnectivityService;
import com.nextcloud.java.util.Optional;
import com.owncloud.android.MainApp;
import com.owncloud.android.R;
+import com.owncloud.android.datamodel.ArbitraryDataProvider;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.files.FileMenuFilter;
@@ -82,6 +83,7 @@ import com.owncloud.android.ui.events.FavoriteEvent;
import com.owncloud.android.ui.events.FileLockEvent;
import com.owncloud.android.ui.events.SyncEventFinished;
import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.EncryptionUtils;
import com.owncloud.android.utils.FileStorageUtils;
import com.owncloud.android.utils.PermissionUtil;
import com.owncloud.android.utils.UriUtils;
@@ -1116,4 +1118,13 @@ public class FileOperationsHelper {
return stat.getBlockSizeLong() * stat.getAvailableBlocksLong();
}
+
+ public static boolean isEndToEndEncryptionSetup(Context context, User user) {
+ ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(context.getContentResolver());
+
+ String publicKey = arbitraryDataProvider.getValue(user, EncryptionUtils.PUBLIC_KEY);
+ String privateKey = arbitraryDataProvider.getValue(user, EncryptionUtils.PRIVATE_KEY);
+
+ return !publicKey.isEmpty() && !privateKey.isEmpty();
+ }
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 87126e1409..cf9069de00 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1052,4 +1052,5 @@
<string name="icon_for_empty_list">Icon for empty list</string>
<string name="no_items">No items</string>
<string name="check_back_later_or_reload">Check back later or reload.</string>
+ <string name="e2e_not_yet_setup">E2E not yet setup</string>
</resources>