From c70c45631370a92e63c9f1ff15d7d55e4528b5f7 Mon Sep 17 00:00:00 2001
From: Pierre Nicolas <pierre.nicolas@savoirfairelinux.com>
Date: Wed, 18 Oct 2023 11:45:38 -0400
Subject: [PATCH] call: prevent initIncoming action flow to crash

First shot to prevent it to crash.
GitLab: #1405

Change-Id: I0e495e2ca34aa3eccf2827862dc0da6d4aa0f849
---
 .../java/cx/ring/fragments/CallFragment.kt    | 27 ++++++++++---------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/jami-android/app/src/main/java/cx/ring/fragments/CallFragment.kt b/jami-android/app/src/main/java/cx/ring/fragments/CallFragment.kt
index f450a37ca..f16c86bba 100644
--- a/jami-android/app/src/main/java/cx/ring/fragments/CallFragment.kt
+++ b/jami-android/app/src/main/java/cx/ring/fragments/CallFragment.kt
@@ -885,29 +885,32 @@ class CallFragment : BaseSupportFragment<CallPresenter, CallView>(), CallView,
 
         if(callMediaHandlers == null) callMediaHandlers = PluginUtils.getInstalledPlugins(binding.pluginslistContainer.context)
         pluginsAdapter = PluginsAdapter(
-            callMediaHandlers!!,
-            object : PluginsAdapter.PluginListItemListener {
-                override fun onPluginItemClicked(pluginDetails: PluginDetails) {
-                }
+            mList = callMediaHandlers!!,
+            listener = object : PluginsAdapter.PluginListItemListener {
+                override fun onPluginItemClicked(pluginDetails: PluginDetails) {}
+
                 override fun onPluginEnabled(pluginDetails: PluginDetails) {
                     pluginDetails.isRunning = !pluginDetails.isRunning
-                    if(!isChoosePluginMode) {
+                    if (!isChoosePluginMode) {
                         presenter.startPlugin(pluginDetails.handlerId!!)
                         isChoosePluginMode = true
                     } else {
                         if (pluginDetails.isRunning) {
                             presenter.toggleCallMediaHandler(pluginDetails.handlerId!!, true)
-                        }
-                        else {
+                        } else {
                             presenter.toggleCallMediaHandler(pluginDetails.handlerId!!, false)
-                            for(handler in callMediaHandlers!!) if (handler.isRunning) break else {
-                                presenter.stopPlugin()
-                                isChoosePluginMode = false
-                            }
+                            for (handler in callMediaHandlers!!)
+                                if (handler.isRunning) break
+                                else {
+                                    presenter.stopPlugin()
+                                    isChoosePluginMode = false
+                                }
                         }
                     }
                 }
-            }, participantInfo[0].call?.account)
+            },
+            accountId = if (participantInfo.isNotEmpty()) participantInfo[0].call?.account else null
+        )
         binding.pluginslistContainer.adapter = pluginsAdapter
     }
 
-- 
GitLab