From 4ff347fc990b010f2f29e2bc4632b024c80eaa61 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 2 Mar 2026 18:32:19 +0100 Subject: [PATCH 1/3] properly switch between the accounts Signed-off-by: sowjanyakch --- app/src/main/AndroidManifest.xml | 10 ++--- .../ConversationsListActivity.kt | 37 +++++++++++++++++++ 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f21183776e9..4271e3e2e2a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -111,11 +111,6 @@ - - - - - @@ -173,6 +168,11 @@ android:name="android.service.chooser.chooser_target_service" android:value="androidx.sharetarget.ChooserTargetServiceCompat" /> + + + + + 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 0b726e6e89f..8a5f8145d2f 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -34,6 +34,10 @@ import androidx.work.WorkInfo import androidx.work.WorkManager import autodagger.AutoInjector 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 import com.nextcloud.talk.account.ServerSelectionActivity @@ -170,6 +174,8 @@ class ConversationsListActivity : BaseActivity() { private var selectedMessageId: String? = null private var pendingDirectShareToken: String? = null + lateinit var ecosystemManager: EcosystemManager + private val onBackPressedCallback = object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { if (forwardMessage) { @@ -183,6 +189,7 @@ class ConversationsListActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) + ecosystemManager = EcosystemManager(this@ConversationsListActivity) val targetUserId = intent.getLongExtra(KEY_INTERNAL_USER_ID, 0L) currentUser = if (targetUserId != 0L) { @@ -208,6 +215,9 @@ class ConversationsListActivity : BaseActivity() { ) } + intent?.let { + handleEcoSystemIntent(it) + } initObservers() } @@ -309,6 +319,33 @@ class ConversationsListActivity : BaseActivity() { onConversationOpsAction = { action, conversation -> handleConversationOpsAction(action, conversation) } ) + 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 ceeedc3904df88600720eeb582acf30e582f66f7 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 2 Mar 2026 18:43:48 +0100 Subject: [PATCH 2/3] 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 8a5f8145d2f..ad274f31e6c 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -226,6 +226,11 @@ class ConversationsListActivity : BaseActivity() { outState.putBoolean(KEY_ACCOUNT_DIALOG_VISIBLE, showAccountDialogState.value) } + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + handleEcoSystemIntent(intent) + } + private fun buildScreenState() = ConversationsListScreenState( currentUser = currentUser, @@ -335,6 +340,8 @@ class ConversationsListActivity : BaseActivity() { 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 28e6251fff2..b3f832966c2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -991,4 +991,5 @@ How to translate with transifex: Nextcloud app suggestions in account chooser dialog Turn on background blur Turn off background blur + Account not found From 5cd433a349941e62603d3b645e079abb0dd4d8ac Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Wed, 1 Apr 2026 12:05:00 +0200 Subject: [PATCH 3/3] modify snackbar to composable Signed-off-by: sowjanyakch --- .../talk/conversationlist/ConversationsListActivity.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 ad274f31e6c..742900ca004 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -34,10 +34,8 @@ import androidx.work.WorkInfo import androidx.work.WorkManager import autodagger.AutoInjector 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 import com.nextcloud.talk.account.ServerSelectionActivity @@ -341,7 +339,7 @@ class ConversationsListActivity : BaseActivity() { val intent = Intent(context, ConversationsListActivity::class.java) startActivity(intent) } else { - Snackbar.make(binding.root, R.string.nc_no_account_found, Snackbar.LENGTH_LONG).show() + showSnackbar(getString(R.string.nc_no_account_found)) } Log.d(TAG, accountName) }