diff --git a/presentation/src/main/java/org/cryptomator/presentation/ui/dialog/VaultIsRootFolderOfCloudDialog.kt b/presentation/src/main/java/org/cryptomator/presentation/ui/dialog/VaultIsRootFolderOfCloudDialog.kt new file mode 100644 index 00000000..1e084f01 --- /dev/null +++ b/presentation/src/main/java/org/cryptomator/presentation/ui/dialog/VaultIsRootFolderOfCloudDialog.kt @@ -0,0 +1,28 @@ +package org.cryptomator.presentation.ui.dialog + +import android.app.Activity +import android.content.DialogInterface +import androidx.appcompat.app.AlertDialog +import androidx.fragment.app.DialogFragment +import org.cryptomator.generator.Dialog +import org.cryptomator.presentation.R + +@Dialog(R.layout.dialog_vault_is_root_folder_of_cloud) +class VaultIsRootFolderOfCloudDialog : BaseDialog() { + + public override fun setupDialog(builder: AlertDialog.Builder): android.app.Dialog { + return builder // + .setTitle(R.string.dialog_vault_is_root_folder_of_cloud_title) // + .setNeutralButton(R.string.dialog_vaults_removed_during_migration_neutral_button) { dialog: DialogInterface, _: Int -> dialog.dismiss() } + .create() + } + + override fun setupView() {} + + companion object { + + fun newInstance(): DialogFragment { + return VaultIsRootFolderOfCloudDialog() + } + } +} diff --git a/presentation/src/main/java/org/cryptomator/presentation/workflow/AddExistingVaultWorkflow.java b/presentation/src/main/java/org/cryptomator/presentation/workflow/AddExistingVaultWorkflow.java index 80714856..29b03ba4 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/workflow/AddExistingVaultWorkflow.java +++ b/presentation/src/main/java/org/cryptomator/presentation/workflow/AddExistingVaultWorkflow.java @@ -18,6 +18,7 @@ import org.cryptomator.presentation.model.ProgressModel; import org.cryptomator.presentation.model.mappers.CloudModelMapper; import org.cryptomator.presentation.presenter.ChooseCloudServicePresenter; import org.cryptomator.presentation.presenter.VaultListPresenter; +import org.cryptomator.presentation.ui.dialog.VaultIsRootFolderOfCloudDialog; import java.io.Serializable; import java.util.Arrays; @@ -116,9 +117,13 @@ public class AddExistingVaultWorkflow extends Workflow result) { CloudFileModel masterkeyFile = result.getResult(); - state().masterkeyFile = masterkeyFile.toCloudNode(); - presenter().getView().showProgress(ProgressModel.GENERIC); - finish(); + if(!masterkeyFile.getPath().equals("/masterkey.cryptomator") && !masterkeyFile.getPath().equals("/vault.cryptomator")) { + state().masterkeyFile = masterkeyFile.toCloudNode(); + presenter().getView().showProgress(ProgressModel.GENERIC); + finish(); + } else { + presenter().getView().showDialog(VaultIsRootFolderOfCloudDialog.Companion.newInstance()); + } } @Override diff --git a/presentation/src/main/res/layout/dialog_vault_is_root_folder_of_cloud.xml b/presentation/src/main/res/layout/dialog_vault_is_root_folder_of_cloud.xml new file mode 100644 index 00000000..eb831c0a --- /dev/null +++ b/presentation/src/main/res/layout/dialog_vault_is_root_folder_of_cloud.xml @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index 9acb5d10..d9e1d827 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -415,11 +415,12 @@ Another app is displaying something on top of Cryptomator (e.g., a blue light filter or night mode app). For security reasons, Cryptomator is disabled.\n\nHow to enable Cryptomator Close - Please re-add vaults for %1s cloud While migrating to this app version we need to remove the following vaults from the app:\n%2s \n\nThose vaults aren\'t removed from the cloud but only from this app. Sorry for the inconvenience and please re-add these vaults to continue working with them. @string/dialog_unable_to_share_positive_button + Vault is root folder of the cloud connection + Create a new cloud connection where you select at least the parent folder of this vault folder as the root directory to add this vault. This setting is a security feature and prevents other apps from tricking users into doing things they do not wan\'t to do.\n\nBy disabling, you confirm that you are aware of the risks.