From 11345edeafb5e61ed6af2a948ece91d4af53be0e Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Mon, 12 Jan 2026 13:05:06 +0100 Subject: [PATCH] avoid Npe in ConversationInfoActivity conversationUser must be known before continuing (see crash below) Also minor refactoring. Exception java.lang.NullPointerException: at com.nextcloud.talk.conversationinfo.ConversationInfoActivity.handleParticipants (ConversationInfoActivity.kt:812) at com.nextcloud.talk.conversationinfo.ConversationInfoActivity.access$handleParticipants (ConversationInfoActivity.kt:117) at com.nextcloud.talk.conversationinfo.ConversationInfoActivity$getListOfParticipants$1.onNext (ConversationInfoActivity.kt:867) at com.nextcloud.talk.conversationinfo.ConversationInfoActivity$getListOfParticipants$1.onNext (ConversationInfoActivity.kt:860) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal (ObservableObserveOn.java:201) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run (ObservableObserveOn.java:255) at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run (HandlerScheduler.java:124) at android.os.Handler.handleCallback (Handler.java:942) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loopOnce (Looper.java:211) at android.os.Looper.loop (Looper.java:300) at android.app.ActivityThread.main (ActivityThread.java:8227) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:580) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1028) Signed-off-by: Marcel Hibbe --- .../ConversationInfoActivity.kt | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt index 2cd4e29b5a..6f6720780d 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt @@ -189,18 +189,34 @@ class ConversationInfoActivity : NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) binding = ActivityConversationInfoBinding.inflate(layoutInflater) - setupActionBar() setContentView(binding.root) - initSystemBars() - viewModel = - ViewModelProvider(this, viewModelFactory)[ConversationInfoViewModel::class.java] + setupActionBar() + initSystemBars() - conversationUser = currentUserProviderOld.currentUser.blockingGet() + conversationToken = requireNotNull( + intent.getStringExtra(KEY_ROOM_TOKEN) + ) { "Missing room token" } - conversationToken = intent.getStringExtra(KEY_ROOM_TOKEN)!! hasAvatarSpacing = intent.getBooleanExtra(BundleKeys.KEY_ROOM_ONE_TO_ONE, false) - credentials = ApiUtils.getCredentials(conversationUser.username, conversationUser.token)!! + + viewModel = ViewModelProvider(this, viewModelFactory)[ConversationInfoViewModel::class.java] + + lifecycleScope.launch { + currentUserProvider.getCurrentUser() + .onSuccess { user -> + conversationUser = user + credentials = ApiUtils.getCredentials(user.username, user.token)!! + databaseStorageModule = DatabaseStorageModule(user, conversationToken) + viewModel.getRoom(user, conversationToken) + initObservers() + } + .onFailure { + Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show() + Log.e(TAG, "Failed to get current user") + finish() + } + } } override fun onStart() { @@ -216,10 +232,6 @@ class ConversationInfoActivity : override fun onResume() { super.onResume() - if (databaseStorageModule == null) { - databaseStorageModule = DatabaseStorageModule(conversationUser, conversationToken) - } - binding.deleteConversationAction.setOnClickListener { showDeleteConversationDialog() } binding.leaveConversationAction.setOnClickListener { leaveConversation() } binding.clearConversationHistory.setOnClickListener { showClearHistoryDialog() } @@ -233,15 +245,12 @@ class ConversationInfoActivity : } binding.listBansButton.setOnClickListener { listBans() } - viewModel.getRoom(conversationUser, conversationToken) - themeTextViews() themeSwitchPreferences() binding.addParticipantsAction.visibility = GONE binding.progressBar.let { viewThemeUtils.platform.colorCircularProgressBar(it, ColorRole.PRIMARY) } - initObservers() } private fun initObservers() {