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

github.com/nextcloud/talk-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hibbe <dev@mhibbe.de>2022-10-20 19:39:42 +0300
committerMarcel Hibbe <dev@mhibbe.de>2022-10-24 14:03:53 +0300
commit436770d8440667200e43d8a50e57f01a0ff218db (patch)
tree98651b7f69ffc52a5455bbff14d89b6bbe523cb0
parent3e0620db0aa383f7b864435fcb6d36106603815f (diff)
simplify logic for server selection screen
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
-rw-r--r--app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt159
-rw-r--r--app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt4
-rw-r--r--app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt2
-rw-r--r--app/src/main/res/layout/controller_server_selection.xml2
4 files changed, 86 insertions, 81 deletions
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt
index e8f643260..1f12dd4f7 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt
@@ -21,6 +21,7 @@
*/
package com.nextcloud.talk.controllers
+import android.accounts.Account
import android.annotation.SuppressLint
import android.content.Intent
import android.content.pm.ActivityInfo
@@ -46,8 +47,7 @@ import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.databinding.ControllerServerSelectionBinding
import com.nextcloud.talk.models.json.generic.Status
import com.nextcloud.talk.users.UserManager
-import com.nextcloud.talk.utils.AccountUtils.findAccountsForUsers
-import com.nextcloud.talk.utils.AccountUtils.getAppNameBasedOnPackage
+import com.nextcloud.talk.utils.AccountUtils
import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.DisplayUtils
import com.nextcloud.talk.utils.UriUtils
@@ -99,82 +99,27 @@ class ServerSelectionController :
actionBar?.hide()
- binding.hostUrlInputHelperText.setText(
- String.format(
- resources!!.getString(R.string.nc_server_helper_text),
- resources!!.getString(R.string.nc_server_product_name)
- )
+ binding.hostUrlInputHelperText.text = String.format(
+ resources!!.getString(R.string.nc_server_helper_text),
+ resources!!.getString(R.string.nc_server_product_name)
)
binding.serverEntryTextInputLayout.setEndIconOnClickListener { checkServerAndProceed() }
+
if (resources!!.getBoolean(R.bool.hide_auth_cert)) {
binding.certTextView.visibility = View.GONE
}
- if (resources!!.getBoolean(R.bool.hide_provider) ||
- TextUtils.isEmpty(resources!!.getString(R.string.nc_providers_url)) &&
- TextUtils.isEmpty(resources!!.getString(R.string.nc_import_account_type))
- ) {
- binding.helperTextView.visibility = View.INVISIBLE
+
+ val loggedInUsers = userManager.users.blockingGet()
+ val availableAccounts = AccountUtils.findAvailableAccountsOnDevice(loggedInUsers)
+
+ if (isImportAccountNameSet() && availableAccounts.isNotEmpty()) {
+ showImportAccountsInfo(availableAccounts)
+ } else if (isAbleToShowProviderLink() && loggedInUsers.isEmpty()) {
+ showVisitProvidersInfo()
} else {
- if (
- (
- TextUtils.isEmpty(resources!!.getString(R.string.nc_import_account_type)) ||
- findAccountsForUsers(userManager.users.blockingGet()).isEmpty()
- ) &&
- userManager.users.blockingGet().isEmpty()
- ) {
- binding.helperTextView.setText(R.string.nc_get_from_provider)
- binding.helperTextView.setOnClickListener {
- val browserIntent = Intent(
- Intent.ACTION_VIEW,
- Uri.parse(
- resources!!
- .getString(R.string.nc_providers_url)
- )
- )
- startActivity(browserIntent)
- }
- } else if (findAccountsForUsers(userManager.users.blockingGet()).isNotEmpty()) {
- if (!TextUtils.isEmpty(
- getAppNameBasedOnPackage(resources!!.getString(R.string.nc_import_accounts_from))
- )
- ) {
- if (findAccountsForUsers(userManager.users.blockingGet()).size > 1) {
- binding.helperTextView.setText(
- String.format(
- resources!!.getString(R.string.nc_server_import_accounts),
- getAppNameBasedOnPackage(resources!!.getString(R.string.nc_import_accounts_from))
- )
- )
- } else {
- binding.helperTextView.setText(
- String.format(
- resources!!.getString(R.string.nc_server_import_account),
- getAppNameBasedOnPackage(resources!!.getString(R.string.nc_import_accounts_from))
- )
- )
- }
- } else {
- if (findAccountsForUsers(userManager.users.blockingGet()).size > 1) {
- binding.helperTextView.text = resources!!.getString(R.string.nc_server_import_accounts_plain)
- } else {
- binding.helperTextView.text = resources!!.getString(R.string.nc_server_import_account_plain)
- }
- }
- binding.helperTextView.setOnClickListener {
- val bundle = Bundle()
- bundle.putBoolean(KEY_IS_ACCOUNT_IMPORT, true)
- router.pushController(
- RouterTransaction.with(
- SwitchAccountController(bundle)
- )
- .pushChangeHandler(HorizontalChangeHandler())
- .popChangeHandler(HorizontalChangeHandler())
- )
- }
- } else {
- binding.helperTextView.visibility = View.INVISIBLE
- }
+ binding.importOrChooseProviderText.visibility = View.INVISIBLE
}
+
binding.serverEntryTextInputEditText.requestFocus()
if (!TextUtils.isEmpty(resources!!.getString(R.string.weblogin_url))) {
binding.serverEntryTextInputEditText.setText(resources!!.getString(R.string.weblogin_url))
@@ -189,6 +134,66 @@ class ServerSelectionController :
binding.certTextView.setOnClickListener { onCertClick() }
}
+ private fun isAbleToShowProviderLink(): Boolean {
+ return !resources!!.getBoolean(R.bool.hide_provider) &&
+ !TextUtils.isEmpty(resources!!.getString(R.string.nc_providers_url))
+ }
+
+ private fun showImportAccountsInfo(availableAccounts: List<Account>) {
+ if (!TextUtils.isEmpty(
+ AccountUtils.getAppNameBasedOnPackage(resources!!.getString(R.string.nc_import_accounts_from))
+ )
+ ) {
+ if (availableAccounts.size > 1) {
+ binding.importOrChooseProviderText.text = String.format(
+ resources!!.getString(R.string.nc_server_import_accounts),
+ AccountUtils.getAppNameBasedOnPackage(resources!!.getString(R.string.nc_import_accounts_from))
+ )
+ } else {
+ binding.importOrChooseProviderText.text = String.format(
+ resources!!.getString(R.string.nc_server_import_account),
+ AccountUtils.getAppNameBasedOnPackage(resources!!.getString(R.string.nc_import_accounts_from))
+ )
+ }
+ } else {
+ if (availableAccounts.size > 1) {
+ binding.importOrChooseProviderText.text =
+ resources!!.getString(R.string.nc_server_import_accounts_plain)
+ } else {
+ binding.importOrChooseProviderText.text = resources!!.getString(R.string.nc_server_import_account_plain)
+ }
+ }
+ binding.importOrChooseProviderText.setOnClickListener {
+ val bundle = Bundle()
+ bundle.putBoolean(KEY_IS_ACCOUNT_IMPORT, true)
+ router.pushController(
+ RouterTransaction.with(
+ SwitchAccountController(bundle)
+ )
+ .pushChangeHandler(HorizontalChangeHandler())
+ .popChangeHandler(HorizontalChangeHandler())
+ )
+ }
+ }
+
+ private fun showVisitProvidersInfo() {
+ binding.importOrChooseProviderText.setText(R.string.nc_get_from_provider)
+ binding.importOrChooseProviderText.setOnClickListener {
+ val browserIntent = Intent(
+ Intent.ACTION_VIEW,
+ Uri.parse(
+ resources!!
+ .getString(R.string.nc_providers_url)
+ )
+ )
+ startActivity(browserIntent)
+ }
+ }
+
+ private fun isImportAccountNameSet(): Boolean {
+ return !TextUtils.isEmpty(resources!!.getString(R.string.nc_import_account_type))
+ }
+
@SuppressLint("LongLogTag")
@Suppress("Detekt.TooGenericExceptionCaught")
private fun checkServerAndProceed() {
@@ -197,8 +202,8 @@ class ServerSelectionController :
var url: String = binding.serverEntryTextInputEditText.text.toString().trim { it <= ' ' }
binding.serverEntryTextInputEditText.isEnabled = false
showserverEntryProgressBar()
- if (binding.helperTextView.visibility != View.INVISIBLE) {
- binding.helperTextView.visibility = View.INVISIBLE
+ if (binding.importOrChooseProviderText.visibility != View.INVISIBLE) {
+ binding.importOrChooseProviderText.visibility = View.INVISIBLE
binding.certTextView.visibility = View.INVISIBLE
}
if (url.endsWith("/")) {
@@ -279,16 +284,16 @@ class ServerSelectionController :
binding.serverEntryTextInputEditText.isEnabled = true
- if (binding.helperTextView.visibility != View.INVISIBLE) {
- binding.helperTextView.visibility = View.VISIBLE
+ if (binding.importOrChooseProviderText.visibility != View.INVISIBLE) {
+ binding.importOrChooseProviderText.visibility = View.VISIBLE
binding.certTextView.visibility = View.VISIBLE
}
dispose()
}
}) {
hideserverEntryProgressBar()
- if (binding.helperTextView.visibility != View.INVISIBLE) {
- binding.helperTextView.visibility = View.VISIBLE
+ if (binding.importOrChooseProviderText.visibility != View.INVISIBLE) {
+ binding.importOrChooseProviderText.visibility = View.VISIBLE
binding.certTextView.visibility = View.VISIBLE
}
dispose()
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt b/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt
index d1bb10b8e..8bb1c5cc4 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt
@@ -44,7 +44,7 @@ import com.nextcloud.talk.databinding.ControllerGenericRvBinding
import com.nextcloud.talk.models.ImportAccount
import com.nextcloud.talk.models.json.participants.Participant
import com.nextcloud.talk.users.UserManager
-import com.nextcloud.talk.utils.AccountUtils.findAccountsForUsers
+import com.nextcloud.talk.utils.AccountUtils.findAvailableAccountsOnDevice
import com.nextcloud.talk.utils.AccountUtils.getInformationFromAccount
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_BASE_URL
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_IS_ACCOUNT_IMPORT
@@ -147,7 +147,7 @@ class SwitchAccountController(args: Bundle? = null) :
var account: Account
var importAccount: ImportAccount
var user: User
- for (accountObject in findAccountsForUsers(userManager.users.blockingGet())) {
+ for (accountObject in findAvailableAccountsOnDevice(userManager.users.blockingGet())) {
account = accountObject
importAccount = getInformationFromAccount(account)
participant = Participant()
diff --git a/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt
index 359f21880..10bffe4e4 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt
+++ b/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt
@@ -41,7 +41,7 @@ object AccountUtils {
private const val TAG = "AccountUtils"
private const val MIN_SUPPORTED_FILES_APP_VERSION = 30060151
- fun findAccountsForUsers(users: List<User>): List<Account> {
+ fun findAvailableAccountsOnDevice(users: List<User>): List<Account> {
val context = NextcloudTalkApplication.sharedApplication!!.applicationContext
val accMgr = AccountManager.get(context)
val accounts = accMgr.getAccountsByType(context.getString(R.string.nc_import_account_type))
diff --git a/app/src/main/res/layout/controller_server_selection.xml b/app/src/main/res/layout/controller_server_selection.xml
index c90817e39..68a5356c5 100644
--- a/app/src/main/res/layout/controller_server_selection.xml
+++ b/app/src/main/res/layout/controller_server_selection.xml
@@ -152,7 +152,7 @@
tools:visibility="visible" />
<TextView
- android:id="@+id/helper_text_view"
+ android:id="@+id/import_or_choose_provider_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="42dp"