diff --git a/presentation/src/main/java/org/cryptomator/presentation/presenter/S3AddOrChangePresenter.kt b/presentation/src/main/java/org/cryptomator/presentation/presenter/S3AddOrChangePresenter.kt index 20fe2282..fc94ce3f 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/presenter/S3AddOrChangePresenter.kt +++ b/presentation/src/main/java/org/cryptomator/presentation/presenter/S3AddOrChangePresenter.kt @@ -39,6 +39,10 @@ class S3AddOrChangePresenter @Inject internal constructor( // statusMessage = getString(R.string.screen_s3_settings_msg_endpoint_and_region_not_empty) } + if (!endpoint.isNullOrEmpty() && region.isNullOrEmpty()) { + statusMessage = getString(R.string.screen_s3_settings_msg_endpoint_set_and_region_empty) + } + if (statusMessage != null) { Toast.makeText(context(), statusMessage, Toast.LENGTH_SHORT).show() } else { diff --git a/presentation/src/main/java/org/cryptomator/presentation/ui/fragment/S3AddOrChangeFragment.kt b/presentation/src/main/java/org/cryptomator/presentation/ui/fragment/S3AddOrChangeFragment.kt index d80feb76..8438ce78 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/ui/fragment/S3AddOrChangeFragment.kt +++ b/presentation/src/main/java/org/cryptomator/presentation/ui/fragment/S3AddOrChangeFragment.kt @@ -1,6 +1,7 @@ package org.cryptomator.presentation.ui.fragment import android.os.Bundle +import android.view.View import android.view.inputmethod.EditorInfo import com.google.android.material.switchmaterial.SwitchMaterial import org.cryptomator.generator.Fragment @@ -13,8 +14,9 @@ import kotlinx.android.synthetic.main.fragment_setup_s3.accessKeyEditText import kotlinx.android.synthetic.main.fragment_setup_s3.bucketEditText import kotlinx.android.synthetic.main.fragment_setup_s3.createCloudButton import kotlinx.android.synthetic.main.fragment_setup_s3.displayNameEditText -import kotlinx.android.synthetic.main.fragment_setup_s3.regionOrEndpointEditText -import kotlinx.android.synthetic.main.fragment_setup_s3.regionOrEndpointEditTextLayout +import kotlinx.android.synthetic.main.fragment_setup_s3.endpointEditText +import kotlinx.android.synthetic.main.fragment_setup_s3.ll_custom_s3 +import kotlinx.android.synthetic.main.fragment_setup_s3.regionEditText import kotlinx.android.synthetic.main.fragment_setup_s3.secretKeyEditText import kotlinx.android.synthetic.main.fragment_setup_s3.toggleCustomS3 import timber.log.Timber @@ -42,15 +44,14 @@ class S3AddOrChangeFragment : BaseFragment() { showEditableCloudContent(s3CloudModel) toggleCustomS3.setOnClickListener { switch -> - regionOrEndpointEditText.text?.clear() toggleUseAmazonS3((switch as SwitchMaterial).isChecked) } } private fun toggleUseAmazonS3(checked: Boolean) = if (checked) { - regionOrEndpointEditTextLayout.setHint(R.string.screen_s3_settings_region_label) + ll_custom_s3.visibility = View.GONE } else { - regionOrEndpointEditTextLayout.setHint(R.string.screen_s3_settings_endpoint_label) + ll_custom_s3.visibility = View.VISIBLE } private fun showEditableCloudContent(s3CloudModel: S3CloudModel?) { @@ -61,15 +62,17 @@ class S3AddOrChangeFragment : BaseFragment() { secretKeyEditText.setText(decrypt(s3CloudModel.secretKey())) bucketEditText.setText(s3CloudModel.s3Bucket()) + regionEditText.setText(s3CloudModel.s3Region()) + if (it.s3Endpoint().isNotEmpty()) { toggleCustomS3.isChecked = false - regionOrEndpointEditText.setText(s3CloudModel.s3Endpoint()) - regionOrEndpointEditTextLayout.setHint(R.string.screen_s3_settings_endpoint_label) + ll_custom_s3.visibility = View.VISIBLE + endpointEditText.setText(s3CloudModel.s3Endpoint()) } else { - regionOrEndpointEditText.setText(s3CloudModel.s3Region()) - regionOrEndpointEditTextLayout.setHint(R.string.screen_s3_settings_region_label) + toggleCustomS3.isChecked = false + ll_custom_s3.visibility = View.VISIBLE } - } ?: regionOrEndpointEditTextLayout.setHint(R.string.screen_s3_settings_region_label) + } } private fun decrypt(text: String?): String { @@ -92,9 +95,9 @@ class S3AddOrChangeFragment : BaseFragment() { val displayName = displayNameEditText.text.toString().trim() if (toggleCustomS3.isChecked) { - s3AddOrChangePresenter.checkUserInput(accessKey, secretKey, bucket, null, regionOrEndpointEditText.text.toString().trim(), cloudId, displayName) + s3AddOrChangePresenter.checkUserInput(accessKey, secretKey, bucket, null, regionEditText.text.toString().trim(), cloudId, displayName) } else { - s3AddOrChangePresenter.checkUserInput(accessKey, secretKey, bucket, regionOrEndpointEditText.text.toString().trim(), null, cloudId, displayName) + s3AddOrChangePresenter.checkUserInput(accessKey, secretKey, bucket, endpointEditText.text.toString().trim(), regionEditText.text.toString().trim(), cloudId, displayName) } } diff --git a/presentation/src/main/res/layout/fragment_setup_s3.xml b/presentation/src/main/res/layout/fragment_setup_s3.xml index deeb56e9..15e6c1f2 100644 --- a/presentation/src/main/res/layout/fragment_setup_s3.xml +++ b/presentation/src/main/res/layout/fragment_setup_s3.xml @@ -79,14 +79,14 @@ @@ -101,6 +101,31 @@ android:checked="true" android:text="@string/screen_s3_settings_amazon_s3_text" /> + + + + + + + + + +