From ae9696e5277b280f8b7c109d6ad663329da070d9 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 2 Mar 2026 18:32:19 +0100 Subject: [PATCH 1/2] properly switch between the accounts Signed-off-by: sowjanyakch --- app/src/main/AndroidManifest.xml | 10 +++--- .../ConversationsListActivity.kt | 35 +++++++++++++++++++ 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 29ebb5715c..e9f7a969e4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -110,11 +110,6 @@ - - - - - @@ -156,6 +151,11 @@ android:exported="true" android:theme="@style/AppTheme"> + + + + + diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index 27050f040d..18b54475d9 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -67,6 +67,8 @@ import com.google.android.material.badge.ExperimentalBadgeUtils import com.google.android.material.button.MaterialButton import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar +import com.nextcloud.android.common.core.utils.ecosystem.AccountReceiverCallback +import com.nextcloud.android.common.core.utils.ecosystem.EcosystemManager import com.nextcloud.android.common.ui.theme.utils.ColorRole import com.nextcloud.talk.R import com.nextcloud.talk.account.BrowserLoginActivity @@ -243,6 +245,8 @@ class ConversationsListActivity : val searchBehaviorSubject = BehaviorSubject.createDefault(false) private lateinit var accountIconBadge: BadgeDrawable + lateinit var ecosystemManager: EcosystemManager + private val onBackPressedCallback = object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { if (forwardMessage) { @@ -256,6 +260,7 @@ class ConversationsListActivity : override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) + ecosystemManager = EcosystemManager(this@ConversationsListActivity) currentUser = currentUserProviderOld.currentUser.blockingGet() @@ -273,9 +278,39 @@ class ConversationsListActivity : forwardMessage = intent.getBooleanExtra(KEY_FORWARD_MSG_FLAG, false) onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + intent?.let { + handleEcoSystemIntent(it) + } initObservers() } + private fun handleEcoSystemIntent(intent: Intent) { + ecosystemManager.receiveAccount( + intent, + object : AccountReceiverCallback { + @SuppressLint("UseKtx") + override fun onAccountReceived(accountName: String) { + val users = userManager.users.blockingGet() + val baseUrl = accountName.substringAfterLast("@") + val accountName = accountName.substringBeforeLast("@") + val user = users.firstOrNull { user -> + user.username == accountName && baseUrl == user.baseUrl?.toUri()?.host + } + if (user != null) { + userManager.setUserAsActive(user) + val intent = Intent(context, ConversationsListActivity::class.java) + startActivity(intent) + } + Log.d(TAG, accountName) + } + + override fun onAccountError(reason: String) { + Log.d(TAG, "handleEcosystemIntent: $reason") + } + } + ) + } + override fun onPostCreate(savedInstanceState: Bundle?) { super.onPostCreate(savedInstanceState) From ebd313db201f62a9118393503d9b159fb24887ba Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 2 Mar 2026 18:43:48 +0100 Subject: [PATCH 2/2] show warning - account not found Signed-off-by: sowjanyakch --- .../talk/conversationlist/ConversationsListActivity.kt | 7 +++++++ app/src/main/res/values/strings.xml | 1 + 2 files changed, 8 insertions(+) diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index 18b54475d9..d52f8ac76f 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -284,6 +284,11 @@ class ConversationsListActivity : initObservers() } + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + handleEcoSystemIntent(intent) + } + private fun handleEcoSystemIntent(intent: Intent) { ecosystemManager.receiveAccount( intent, @@ -300,6 +305,8 @@ class ConversationsListActivity : userManager.setUserAsActive(user) val intent = Intent(context, ConversationsListActivity::class.java) startActivity(intent) + } else { + Snackbar.make(binding.root, R.string.nc_no_account_found, Snackbar.LENGTH_LONG).show() } Log.d(TAG, accountName) } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b67ed6e87c..16459728a9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -955,4 +955,5 @@ How to translate with transifex: No connection to server - Scheduled messages could not be loaded Show app switcher Nextcloud app suggestions in account chooser dialog + Account not found