From 5499854ec0ff883ed3ee8594e32350d76c83c6ea Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoit@matrix.org>
Date: Tue, 22 Mar 2022 14:05:33 +0100
Subject: [PATCH 1/9] Set up org.owasp.dependencycheck See
 https://github.com/jeremylong/DependencyCheck

---
 build.gradle | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/build.gradle b/build.gradle
index 31416a0440..fee8af8822 100644
--- a/build.gradle
+++ b/build.gradle
@@ -21,7 +21,7 @@ buildscript {
         classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3'
         classpath 'com.google.android.gms:oss-licenses-plugin:0.10.5'
         classpath "com.likethesalad.android:stem-plugin:2.0.0"
-
+        classpath 'org.owasp:dependency-check-gradle:7.0.0'
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
     }
@@ -32,6 +32,9 @@ plugins {
     id "org.jlleitschuh.gradle.ktlint" version "10.2.1"
 }
 
+// https://github.com/jeremylong/DependencyCheck
+apply plugin: 'org.owasp.dependencycheck'
+
 allprojects {
     apply plugin: "org.jlleitschuh.gradle.ktlint"
 

From 2b3951fe0483f1ad43e6357e6ca039129fe7f994 Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoit@matrix.org>
Date: Mon, 28 Mar 2022 16:17:27 +0200
Subject: [PATCH 2/9] Force ktlint to version 0.45.1. The ktlint plugin is
 using 0.42.1

---
 build.gradle               | 2 ++
 dependencies_groups.gradle | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/build.gradle b/build.gradle
index fee8af8822..b9792511d6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -90,6 +90,8 @@ allprojects {
 
     // See https://github.com/JLLeitschuh/ktlint-gradle#configuration
     ktlint {
+        // See https://github.com/pinterest/ktlint/releases/
+        version = "0.45.1"
         android = true
         ignoreFailures = false
         enableExperimentalRules = true
diff --git a/dependencies_groups.gradle b/dependencies_groups.gradle
index 45883f506d..6f155a0149 100644
--- a/dependencies_groups.gradle
+++ b/dependencies_groups.gradle
@@ -39,6 +39,7 @@ ext.groups = [
                 regex: [
                 ],
                 group: [
+                        'ch.qos.logback',
                         'com.adevinta.android',
                         'com.airbnb.android',
                         'com.almworks.sqlite4java',
@@ -113,6 +114,7 @@ ext.groups = [
                         'info.picocli',
                         'io.arrow-kt',
                         'io.github.detekt.sarif4k',
+                        'io.github.microutils',
                         'io.github.reactivecircus.flowbinding',
                         'io.grpc',
                         'io.jsonwebtoken',

From 4c406158716173308c4a8b662515ec6bef51b35e Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoit@matrix.org>
Date: Mon, 28 Mar 2022 16:31:30 +0200
Subject: [PATCH 3/9] Remove Flair Fragment (not used, and part of group, which
 will be removed)

---
 .../features/settings/VectorPreferences.kt    |   3 -
 .../settings/VectorSettingsFlairFragment.kt   | 170 ------------------
 vector/src/main/res/values/strings.xml        |   3 +-
 .../main/res/xml/vector_settings_flair.xml    |   8 -
 4 files changed, 2 insertions(+), 182 deletions(-)
 delete mode 100644 vector/src/main/java/im/vector/app/features/settings/VectorSettingsFlairFragment.kt
 delete mode 100644 vector/src/main/res/xml/vector_settings_flair.xml

diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
index 8d93edc0ec..8fce936428 100755
--- a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
@@ -111,9 +111,6 @@ class VectorPreferences @Inject constructor(private val context: Context) {
         private const val SETTINGS_PIN_UNREAD_MESSAGES_PREFERENCE_KEY = "SETTINGS_PIN_UNREAD_MESSAGES_PREFERENCE_KEY"
         private const val SETTINGS_PIN_MISSED_NOTIFICATIONS_PREFERENCE_KEY = "SETTINGS_PIN_MISSED_NOTIFICATIONS_PREFERENCE_KEY"
 
-        // flair
-        const val SETTINGS_GROUPS_FLAIR_KEY = "SETTINGS_GROUPS_FLAIR_KEY"
-
         // notifications
         const val SETTINGS_ENABLE_ALL_NOTIF_PREFERENCE_KEY = "SETTINGS_ENABLE_ALL_NOTIF_PREFERENCE_KEY"
         const val SETTINGS_ENABLE_THIS_DEVICE_PREFERENCE_KEY = "SETTINGS_ENABLE_THIS_DEVICE_PREFERENCE_KEY"
diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsFlairFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsFlairFragment.kt
deleted file mode 100644
index ec65e7d004..0000000000
--- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsFlairFragment.kt
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright 2019 New Vector Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package im.vector.app.features.settings
-
-import androidx.preference.PreferenceCategory
-import im.vector.app.R
-import im.vector.app.core.preference.ProgressBarPreference
-
-class VectorSettingsFlairFragment : VectorSettingsBaseFragment() {
-
-    override var titleRes = R.string.settings_flair
-    override val preferenceXmlRes = R.xml.vector_settings_flair
-
-    // current publicised group list
-    private var mPublicisedGroups: MutableSet<String>? = null
-
-    // Group Flairs
-    private val mGroupsFlairCategory by lazy {
-        findPreference<PreferenceCategory>(VectorPreferences.SETTINGS_GROUPS_FLAIR_KEY)!!
-    }
-
-    override fun bindPref() {
-        // Flair
-        refreshGroupFlairsList()
-    }
-
-    // ==============================================================================================================
-    // Group flairs management
-    // ==============================================================================================================
-
-    /**
-     * Force the refresh of the devices list.<br></br>
-     * The devices list is the list of the devices where the user as looged in.
-     * It can be any mobile device, as any browser.
-     */
-    private fun refreshGroupFlairsList() {
-        // display a spinner while refreshing
-        if (0 == mGroupsFlairCategory.preferenceCount) {
-            activity?.let {
-                val preference = ProgressBarPreference(it)
-                mGroupsFlairCategory.addPreference(preference)
-            }
-        }
-
-        /*
-        TODO
-        session.groupsManager.getUserPublicisedGroups(session.myUserId, true, object : MatrixCallback<Set<String>> {
-            override fun onSuccess(publicisedGroups: Set<String>) {
-                // clear everything
-                mGroupsFlairCategory.removeAll()
-
-                if (publicisedGroups.isEmpty()) {
-                    val vectorGroupPreference = Preference(activity)
-                    vectorGroupPreference.title = resources.getString(R.string.settings_without_flair)
-                    mGroupsFlairCategory.addPreference(vectorGroupPreference)
-                } else {
-                    buildGroupsList(publicisedGroups)
-                }
-            }
-
-            override fun onNetworkError(e: Exception) {
-                // NOP
-            }
-
-            override fun onMatrixError(e: MatrixError) {
-                // NOP
-            }
-
-            override fun onUnexpectedError(e: Exception) {
-                // NOP
-            }
-        })
-        */
-    }
-
-    /**
-     * Build the groups list.
-     *
-     * @param publicisedGroups the publicised groups list.
-     */
-    private fun buildGroupsList(publicisedGroups: Set<String>) {
-        var isNewList = true
-
-        mPublicisedGroups?.let {
-            if (it.size == publicisedGroups.size) {
-                isNewList = !it.containsAll(publicisedGroups)
-            }
-        }
-
-        if (isNewList) {
-            /*
-            TODO
-            val joinedGroups = ArrayList(session.groupsManager.joinedGroups)
-            Collections.sort(joinedGroups, Group.mGroupsComparator)
-
-            mPublicisedGroups = publicisedGroups.toMutableSet()
-
-            for ((prefIndex, group) in joinedGroups.withIndex()) {
-                val vectorGroupPreference = VectorGroupPreference(activity!!)
-                vectorGroupPreference.key = DEVICES_PREFERENCE_KEY_BASE + prefIndex
-
-                vectorGroupPreference.setGroup(group, session)
-                vectorGroupPreference.title = group.displayName
-                vectorGroupPreference.summary = group.groupId
-
-                vectorGroupPreference.isChecked = publicisedGroups.contains(group.groupId)
-                mGroupsFlairCategory.addPreference(vectorGroupPreference)
-
-                vectorGroupPreference.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue ->
-                    if (newValue is Boolean) {
-                        /*
-                         *  if mPublicisedGroup is null somehow, then
-                         *  we cant check it contains groupId or not
-                         *  so set isFlaired to false
-                        */
-                        val isFlaired = mPublicisedGroups?.contains(group.groupId) ?: false
-
-                        if (newValue != isFlaired) {
-                            displayLoadingView()
-                            session.groupsManager.updateGroupPublicity(group.groupId, newValue, object : MatrixCallback<Unit> {
-                                override fun onSuccess(info: Void?) {
-                                    hideLoadingView()
-                                    if (newValue) {
-                                        mPublicisedGroups?.add(group.groupId)
-                                    } else {
-                                        mPublicisedGroups?.remove(group.groupId)
-                                    }
-                                }
-
-                                private fun onError() {
-                                    hideLoadingView()
-                                    // restore default value
-                                    vectorGroupPreference.isChecked = publicisedGroups.contains(group.groupId)
-                                }
-
-                                override fun onNetworkError(e: Exception) {
-                                    onError()
-                                }
-
-                                override fun onMatrixError(e: MatrixError) {
-                                    onError()
-                                }
-
-                                override fun onUnexpectedError(e: Exception) {
-                                    onError()
-                                }
-                            })
-                        }
-                    }
-                    true
-                }
-            }
-                */
-        }
-    }
-}
diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml
index a276e07b1e..e444a3b0bb 100644
--- a/vector/src/main/res/values/strings.xml
+++ b/vector/src/main/res/values/strings.xml
@@ -1041,7 +1041,8 @@
     <string name="media_source_choose">Choose</string>
     <string name="settings_play_shutter_sound">Play shutter sound</string>
 
-    <string name="settings_flair">Flair</string>
+    <!-- TODO Remove -->
+    <string name="settings_flair" tools:ignore="MissingTranslation">Flair</string>
 
     <!-- medias saving settings -->
     <string name="media_saving_period_3_days">3 days</string>
diff --git a/vector/src/main/res/xml/vector_settings_flair.xml b/vector/src/main/res/xml/vector_settings_flair.xml
deleted file mode 100644
index ac7ae83d24..0000000000
--- a/vector/src/main/res/xml/vector_settings_flair.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <im.vector.app.core.preference.VectorPreferenceCategory
-        android:key="SETTINGS_GROUPS_FLAIR_KEY"
-        android:title="@string/settings_flair" />
-
-</androidx.preference.PreferenceScreen>
\ No newline at end of file

From ff1fb63bf69d0dfb27a45bad54ce49774bdf745d Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoit@matrix.org>
Date: Mon, 28 Mar 2022 16:35:03 +0200
Subject: [PATCH 4/9] Fix some ktlint issues, ignore some others

---
 build.gradle                                  | 11 +++++++++-
 .../crypto/gossiping/WithHeldTests.kt         |  2 +-
 .../sdk/internal/crypto/CryptoModule.kt       |  3 +--
 .../crypto/model/MXUsersDevicesMap.kt         |  2 +-
 .../sdk/internal/crypto/tools/HkdfSha256.kt   |  2 +-
 .../DefaultVerificationService.kt             | 16 +++++++--------
 .../session/cache/DefaultCacheService.kt      |  6 +++---
 .../user/accountdata/DirectChatsHelper.kt     |  5 +++--
 .../widgets/DefaultWidgetPostAPIMediator.kt   |  8 ++++----
 .../app/features/debug/TestLinkifyActivity.kt |  4 ++--
 .../vector/app/features/badge/BadgeProxy.kt   |  4 ++--
 .../createdirect/CreateDirectRoomViewModel.kt |  9 +++++----
 .../restore/KeysBackupRestoreActivity.kt      |  2 +-
 .../home/room/detail/TimelineFragment.kt      |  2 +-
 .../action/MessageActionsViewModel.kt         | 20 +++++++++----------
 .../reactions/ViewReactionsViewModel.kt       |  8 ++++----
 .../invite/InviteUsersToRoomViewModel.kt      | 11 +++++-----
 .../app/features/login/LoginViewModel.kt      |  2 +-
 .../app/features/login2/LoginViewModel2.kt    |  2 +-
 .../NotificationBroadcastReceiver.kt          |  2 +-
 .../RoomPreviewNoPreviewFragment.kt           | 16 +++++----------
 .../settings/VectorSettingsGeneralFragment.kt |  2 +-
 .../VectorSettingsPreferencesFragment.kt      |  2 +-
 23 files changed, 72 insertions(+), 69 deletions(-)

diff --git a/build.gradle b/build.gradle
index b9792511d6..8ac546ac54 100644
--- a/build.gradle
+++ b/build.gradle
@@ -101,7 +101,16 @@ allprojects {
                 "spacing-between-declarations-with-comments",
                 "no-multi-spaces",
                 "experimental:spacing-between-declarations-with-annotations",
-                "experimental:annotation"
+                "experimental:annotation",
+                // - Missing newline after "("
+                // - Missing newline before ")"
+                "wrapping",
+                // - Unnecessary trailing comma before ")"
+                "experimental:trailing-comma",
+                // - A block comment in between other elements on the same line is disallowed
+                "experimental:comment-wrapping",
+                // - A KDoc comment after any other element on the same line must be separated by a new line
+                "experimental:kdoc-wrapping",
         ]
     }
 }
diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/gossiping/WithHeldTests.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/gossiping/WithHeldTests.kt
index 65c65660b5..e8f6eea460 100644
--- a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/gossiping/WithHeldTests.kt
+++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/gossiping/WithHeldTests.kt
@@ -138,7 +138,7 @@ class WithHeldTests : InstrumentedTest {
 
     @Test
     @Ignore("This test will be ignored until it is fixed")
-    fun  test_WithHeldNoOlm() {
+    fun test_WithHeldNoOlm() {
         val testData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoom()
         val aliceSession = testData.firstSession
         val bobSession = testData.secondSession!!
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/CryptoModule.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/CryptoModule.kt
index 3130a6382f..2265526484 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/CryptoModule.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/CryptoModule.kt
@@ -137,8 +137,7 @@ internal abstract class CryptoModule {
         @JvmStatic
         @Provides
         @CryptoDatabase
-        fun providesClearCacheTask(@CryptoDatabase
-                                   realmConfiguration: RealmConfiguration): ClearCacheTask {
+        fun providesClearCacheTask(@CryptoDatabase realmConfiguration: RealmConfiguration): ClearCacheTask {
             return RealmClearCacheTask(realmConfiguration)
         }
 
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXUsersDevicesMap.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXUsersDevicesMap.kt
index 662541428e..bdb00dce8e 100755
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXUsersDevicesMap.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXUsersDevicesMap.kt
@@ -130,7 +130,7 @@ inline fun <T> MXUsersDevicesMap<T>.forEach(action: (String, String, T) -> Unit)
     }
 }
 
-internal  fun <T> MXUsersDevicesMap<T>.toDebugString() =
+internal fun <T> MXUsersDevicesMap<T>.toDebugString() =
         map.entries.joinToString { "${it.key} [${it.value.keys.joinToString { it }}]" }
 
 internal fun <T> MXUsersDevicesMap<T>.toDebugCount() =
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/tools/HkdfSha256.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/tools/HkdfSha256.kt
index 6839ccd326..04ce0d8500 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/tools/HkdfSha256.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/tools/HkdfSha256.kt
@@ -70,7 +70,7 @@ object HkdfSha256 {
            T(2) = HMAC-Hash(PRK, T(1) | info | 0x02)
            T(3) = HMAC-Hash(PRK, T(2) | info | 0x03)
            ...
-        */
+         */
         val n = ceil(outputLength.toDouble() / HASH_LEN.toDouble()).toInt()
 
         var stepHash = ByteArray(0) // T(0) empty string (zero length)
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/verification/DefaultVerificationService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/verification/DefaultVerificationService.kt
index 388ecb9659..bd623575fa 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/verification/DefaultVerificationService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/verification/DefaultVerificationService.kt
@@ -364,14 +364,14 @@ internal class DefaultVerificationService @Inject constructor(
         dispatchRequestAdded(pendingVerificationRequest)
 
         /*
-        * After the m.key.verification.ready event is sent, either party can send an m.key.verification.start event
-        * to begin the verification.
-        * If both parties send an m.key.verification.start event, and they both specify the same verification method,
-        * then the event sent by the user whose user ID is the smallest is used, and the other m.key.verification.start
-        * event is ignored.
-        * In the case of a single user verifying two of their devices, the device ID is compared instead.
-        * If both parties send an m.key.verification.start event, but they specify different verification methods,
-        * the verification should be cancelled with a code of m.unexpected_message.
+         * After the m.key.verification.ready event is sent, either party can send an m.key.verification.start event
+         * to begin the verification.
+         * If both parties send an m.key.verification.start event, and they both specify the same verification method,
+         * then the event sent by the user whose user ID is the smallest is used, and the other m.key.verification.start
+         * event is ignored.
+         * In the case of a single user verifying two of their devices, the device ID is compared instead.
+         * If both parties send an m.key.verification.start event, but they specify different verification methods,
+         * the verification should be cancelled with a code of m.unexpected_message.
          */
     }
 
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/cache/DefaultCacheService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/cache/DefaultCacheService.kt
index 6d0cd37e1f..93b0dba13e 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/cache/DefaultCacheService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/cache/DefaultCacheService.kt
@@ -21,9 +21,9 @@ import org.matrix.android.sdk.internal.di.SessionDatabase
 import org.matrix.android.sdk.internal.task.TaskExecutor
 import javax.inject.Inject
 
-internal class DefaultCacheService @Inject constructor(@SessionDatabase
-                                                       private val clearCacheTask: ClearCacheTask,
-                                                       private val taskExecutor: TaskExecutor
+internal class DefaultCacheService @Inject constructor(
+        @SessionDatabase private val clearCacheTask: ClearCacheTask,
+        private val taskExecutor: TaskExecutor
 ) : CacheService {
 
     override suspend fun clearCache() {
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/user/accountdata/DirectChatsHelper.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/user/accountdata/DirectChatsHelper.kt
index c7b125b5d6..c4fbdc75ab 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/user/accountdata/DirectChatsHelper.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/user/accountdata/DirectChatsHelper.kt
@@ -24,8 +24,9 @@ import org.matrix.android.sdk.internal.di.SessionDatabase
 import org.matrix.android.sdk.internal.session.sync.model.accountdata.DirectMessagesContent
 import javax.inject.Inject
 
-internal class DirectChatsHelper @Inject constructor(@SessionDatabase
-                                                     private val realmConfiguration: RealmConfiguration) {
+internal class DirectChatsHelper @Inject constructor(
+        @SessionDatabase private val realmConfiguration: RealmConfiguration
+) {
 
     /**
      * @return a map of userId <-> list of roomId
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/widgets/DefaultWidgetPostAPIMediator.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/widgets/DefaultWidgetPostAPIMediator.kt
index 07f7c7cb86..1fa5e5f771 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/widgets/DefaultWidgetPostAPIMediator.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/widgets/DefaultWidgetPostAPIMediator.kt
@@ -88,10 +88,10 @@ internal class DefaultWidgetPostAPIMediator @Inject constructor(private val mosh
     }
 
     /*
-   * *********************************************************************************************
-   * Message sending methods
-   * *********************************************************************************************
-   */
+     * *********************************************************************************************
+     * Message sending methods
+     * *********************************************************************************************
+     */
 
     /**
      * Send a boolean response
diff --git a/vector/src/debug/java/im/vector/app/features/debug/TestLinkifyActivity.kt b/vector/src/debug/java/im/vector/app/features/debug/TestLinkifyActivity.kt
index 88e55d6760..59c60e0e15 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/TestLinkifyActivity.kt
+++ b/vector/src/debug/java/im/vector/app/features/debug/TestLinkifyActivity.kt
@@ -93,7 +93,7 @@ class TestLinkifyActivity : AppCompatActivity() {
                                         .show()
                             }
                         })
-                        */
+                         */
                     }
 
                     subViews.testLinkifyCustomText.apply {
@@ -108,7 +108,7 @@ class TestLinkifyActivity : AppCompatActivity() {
                                         .show()
                             }
                         })
-                        */
+                         */
 
                         // TODO Call VectorLinkify.addLinks(text)
                     }
diff --git a/vector/src/main/java/im/vector/app/features/badge/BadgeProxy.kt b/vector/src/main/java/im/vector/app/features/badge/BadgeProxy.kt
index 3df33b0c9b..fb597d1ef9 100644
--- a/vector/src/main/java/im/vector/app/features/badge/BadgeProxy.kt
+++ b/vector/src/main/java/im/vector/app/features/badge/BadgeProxy.kt
@@ -90,7 +90,7 @@ object BadgeProxy {
                 }
             }
         }
-        */
+         */
     }
 
     /**
@@ -124,6 +124,6 @@ object BadgeProxy {
             Timber.v("## updateBadgeCount(): badge update count=$unreadRoomsCount")
             updateBadgeCount(aContext, unreadRoomsCount)
         }
-        */
+         */
     }
 }
diff --git a/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomViewModel.kt b/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomViewModel.kt
index d3011496d2..9ce8e68dab 100644
--- a/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomViewModel.kt
@@ -38,10 +38,11 @@ import org.matrix.android.sdk.api.session.permalinks.PermalinkParser
 import org.matrix.android.sdk.api.session.room.model.create.CreateRoomParams
 import org.matrix.android.sdk.api.session.user.model.User
 
-class CreateDirectRoomViewModel @AssistedInject constructor(@Assisted
-                                                            initialState: CreateDirectRoomViewState,
-                                                            private val rawService: RawService,
-                                                            val session: Session) :
+class CreateDirectRoomViewModel @AssistedInject constructor(
+        @Assisted initialState: CreateDirectRoomViewState,
+        private val rawService: RawService,
+        val session: Session
+) :
         VectorViewModel<CreateDirectRoomViewState, CreateDirectRoomAction, CreateDirectRoomViewEvents>(initialState) {
 
     @AssistedFactory
diff --git a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt
index 6e5d7f5fab..a4f6587be4 100644
--- a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/restore/KeysBackupRestoreActivity.kt
@@ -52,7 +52,7 @@ class KeysBackupRestoreActivity : SimpleFragmentActivity() {
         super.onBackPressed()
     }
 
-    @Inject  lateinit var activeSessionHolder: ActiveSessionHolder
+    @Inject lateinit var activeSessionHolder: ActiveSessionHolder
 
     override fun initUiAndData() {
         super.initUiAndData()
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt
index 9c754e042c..81b037e016 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt
@@ -1669,7 +1669,7 @@ class TimelineFragment @Inject constructor(
             is MessageComposerViewEvents.SlashCommandNotSupportedInThreads -> {
                 displayCommandError(getString(R.string.command_not_supported_in_threads, sendMessageResult.command.command))
             }
-        } // 
+        }
 
         lockSendButton = false
     }
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/action/MessageActionsViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/action/MessageActionsViewModel.kt
index bd4e93b25d..aaaecb0a13 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/action/MessageActionsViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/action/MessageActionsViewModel.kt
@@ -69,16 +69,16 @@ import org.matrix.android.sdk.flow.unwrap
 /**
  * Information related to an event and used to display preview in contextual bottom sheet.
  */
-class MessageActionsViewModel @AssistedInject constructor(@Assisted
-                                                          private val initialState: MessageActionState,
-                                                          private val eventHtmlRenderer: Lazy<EventHtmlRenderer>,
-                                                          private val htmlCompressor: VectorHtmlCompressor,
-                                                          private val session: Session,
-                                                          private val noticeEventFormatter: NoticeEventFormatter,
-                                                          private val errorFormatter: ErrorFormatter,
-                                                          private val stringProvider: StringProvider,
-                                                          private val pillsPostProcessorFactory: PillsPostProcessor.Factory,
-                                                          private val vectorPreferences: VectorPreferences
+class MessageActionsViewModel @AssistedInject constructor(
+        @Assisted private val initialState: MessageActionState,
+        private val eventHtmlRenderer: Lazy<EventHtmlRenderer>,
+        private val htmlCompressor: VectorHtmlCompressor,
+        private val session: Session,
+        private val noticeEventFormatter: NoticeEventFormatter,
+        private val errorFormatter: ErrorFormatter,
+        private val stringProvider: StringProvider,
+        private val pillsPostProcessorFactory: PillsPostProcessor.Factory,
+        private val vectorPreferences: VectorPreferences
 ) : VectorViewModel<MessageActionState, MessageActionsAction, EmptyViewEvents>(initialState) {
 
     private val informationData = initialState.informationData
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/reactions/ViewReactionsViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/reactions/ViewReactionsViewModel.kt
index 25d6f907b5..29b8c207df 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/reactions/ViewReactionsViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/reactions/ViewReactionsViewModel.kt
@@ -56,10 +56,10 @@ data class ReactionInfo(
 /**
  * Used to display the list of members that reacted to a given event
  */
-class ViewReactionsViewModel @AssistedInject constructor(@Assisted
-                                                         initialState: DisplayReactionsViewState,
-                                                         session: Session,
-                                                         private val dateFormatter: VectorDateFormatter
+class ViewReactionsViewModel @AssistedInject constructor(
+        @Assisted initialState: DisplayReactionsViewState,
+        session: Session,
+        private val dateFormatter: VectorDateFormatter
 ) : VectorViewModel<DisplayReactionsViewState, EmptyAction, EmptyViewEvents>(initialState) {
 
     private val roomId = initialState.roomId
diff --git a/vector/src/main/java/im/vector/app/features/invite/InviteUsersToRoomViewModel.kt b/vector/src/main/java/im/vector/app/features/invite/InviteUsersToRoomViewModel.kt
index 891194040e..42f08c334e 100644
--- a/vector/src/main/java/im/vector/app/features/invite/InviteUsersToRoomViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/invite/InviteUsersToRoomViewModel.kt
@@ -28,16 +28,15 @@ import im.vector.app.core.resources.StringProvider
 import im.vector.app.features.userdirectory.PendingSelection
 import kotlinx.coroutines.flow.asFlow
 import kotlinx.coroutines.flow.catch
-import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.launch
 import org.matrix.android.sdk.api.session.Session
 
-class InviteUsersToRoomViewModel @AssistedInject constructor(@Assisted
-                                                             initialState: InviteUsersToRoomViewState,
-                                                             session: Session,
-                                                             val stringProvider: StringProvider) :
-    VectorViewModel<InviteUsersToRoomViewState, InviteUsersToRoomAction, InviteUsersToRoomViewEvents>(initialState) {
+class InviteUsersToRoomViewModel @AssistedInject constructor(
+        @Assisted initialState: InviteUsersToRoomViewState,
+        session: Session,
+        val stringProvider: StringProvider
+) : VectorViewModel<InviteUsersToRoomViewState, InviteUsersToRoomAction, InviteUsersToRoomViewEvents>(initialState) {
 
     private val room = session.getRoom(initialState.roomId)!!
 
diff --git a/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt b/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt
index 246c3ad464..73f5c064e7 100644
--- a/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt
@@ -275,7 +275,7 @@ class LoginViewModel @AssistedInject constructor(
                            code = MatrixError.FORBIDDEN,
                            message = "Registration is disabled"
                    ), 403))
-                */
+                 */
             } catch (failure: Throwable) {
                 if (failure !is CancellationException) {
                     _viewEvents.post(LoginViewEvents.Failure(failure))
diff --git a/vector/src/main/java/im/vector/app/features/login2/LoginViewModel2.kt b/vector/src/main/java/im/vector/app/features/login2/LoginViewModel2.kt
index 8125c6e089..62f0007104 100644
--- a/vector/src/main/java/im/vector/app/features/login2/LoginViewModel2.kt
+++ b/vector/src/main/java/im/vector/app/features/login2/LoginViewModel2.kt
@@ -771,7 +771,7 @@ class LoginViewModel2 @AssistedInject constructor(
                                             ),
                                             httpCode = 403
                                     )
-                                     */
+                                 */
 
                                 LoginViewEvents2.OpenSignUpChooseUsernameScreen
                             } catch (throwable: Throwable) {
diff --git a/vector/src/main/java/im/vector/app/features/notifications/NotificationBroadcastReceiver.kt b/vector/src/main/java/im/vector/app/features/notifications/NotificationBroadcastReceiver.kt
index 01c1117ab2..505f4cc4a0 100644
--- a/vector/src/main/java/im/vector/app/features/notifications/NotificationBroadcastReceiver.kt
+++ b/vector/src/main/java/im/vector/app/features/notifications/NotificationBroadcastReceiver.kt
@@ -202,7 +202,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() {
                 VectorApp.getInstance().notificationDrawerManager.refreshNotificationDrawer(null)
             }
         })
-        */
+         */
     }
 
     private fun getReplyMessage(intent: Intent?): String? {
diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt
index 6d0195fae3..90f1a4785d 100644
--- a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt
@@ -110,8 +110,7 @@ class RoomPreviewNoPreviewFragment @Inject constructor(
                     PeekingState.FOUND     -> {
                         // show join buttons
                         views.roomPreviewNoPreviewJoin.isVisible = true
-                        renderState(bestName, state.matrixItem(), state.roomTopic
-                                /**, state.roomType*/)
+                        renderState(bestName, state.matrixItem(), state.roomTopic)
                         if (state.fromEmailInvite != null && !state.isEmailBoundToAccount) {
                             views.roomPreviewNoPreviewLabel.text =
                                     span {
@@ -152,15 +151,13 @@ class RoomPreviewNoPreviewFragment @Inject constructor(
                         views.roomPreviewNoPreviewJoin.isVisible = true
                         views.roomPreviewNoPreviewLabel.isVisible = true
                         views.roomPreviewNoPreviewLabel.setText(R.string.room_preview_no_preview_join)
-                        renderState(bestName, state.matrixItem().takeIf { state.roomAlias != null }, state.roomTopic
-                                /**, state.roomType*/)
+                        renderState(bestName, state.matrixItem().takeIf { state.roomAlias != null }, state.roomTopic)
                     }
                     else                   -> {
                         views.roomPreviewNoPreviewJoin.isVisible = false
                         views.roomPreviewNoPreviewLabel.isVisible = true
                         views.roomPreviewNoPreviewLabel.setText(R.string.room_preview_not_found)
-                        renderState(bestName, null, state.roomTopic
-                                /**, state.roomType*/)
+                        renderState(bestName, null, state.roomTopic)
                     }
                 }
             }
@@ -168,16 +165,13 @@ class RoomPreviewNoPreviewFragment @Inject constructor(
                 // Render with initial state, no peeking
                 views.roomPreviewPeekingProgress.isVisible = false
                 views.roomPreviewNoPreviewJoin.isVisible = true
-                renderState(bestName, state.matrixItem(), state.roomTopic
-                        /**, state.roomType*/)
+                renderState(bestName, state.matrixItem(), state.roomTopic)
                 views.roomPreviewNoPreviewLabel.isVisible = false
             }
         }
     }
 
-    private fun renderState(roomName: String, matrixItem: MatrixItem?, topic: String?
-            /**, roomType: String?*/
-    ) {
+    private fun renderState(roomName: String, matrixItem: MatrixItem?, topic: String?) {
         // Toolbar
         if (matrixItem != null) {
             views.roomPreviewNoPreviewToolbarAvatar.isVisible = true
diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsGeneralFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsGeneralFragment.kt
index ffb9fc4af4..db6b4002a0 100644
--- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsGeneralFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsGeneralFragment.kt
@@ -359,7 +359,7 @@ class VectorSettingsGeneralFragment @Inject constructor(
             startActivityForResult(intent, REQUEST_PHONEBOOK_COUNTRY)
             true
         }
-        */
+         */
     }
 
     // ==============================================================================================================
diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt
index 50e32ae453..fa020c8d26 100644
--- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt
@@ -117,7 +117,7 @@ class VectorSettingsPreferencesFragment @Inject constructor(
                 false
             }
         }
-        */
+         */
 
         // update keep medias period
         findPreference<VectorPreference>(VectorPreferences.SETTINGS_MEDIA_SAVING_PERIOD_KEY)!!.let {

From 2055e7a27d1684a42ccc92778ffcd9a248590574 Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoitm@matrix.org>
Date: Tue, 29 Mar 2022 13:26:41 +0200
Subject: [PATCH 5/9] Add link to the changelog

---
 docs/jitsi.md                   | 2 ++
 tools/jitsi/build_jisti_libs.sh | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/docs/jitsi.md b/docs/jitsi.md
index 55cedaedb1..1b4e0a37b4 100644
--- a/docs/jitsi.md
+++ b/docs/jitsi.md
@@ -18,6 +18,8 @@ The generated maven repository is then host in the project https://github.com/ve
 
 Update the script `./tools/jitsi/build_jisti_libs.sh` with the tag of the project `https://github.com/jitsi/jitsi-meet`.
 
+Latest tag can be found from this page: https://github.com/jitsi/jitsi-meet-release-notes/blob/master/CHANGELOG-MOBILE-SDKS.md
+
 Currently we are building the version with the tag `android-sdk-3.10.0`.
 
 ### Run the build script
diff --git a/tools/jitsi/build_jisti_libs.sh b/tools/jitsi/build_jisti_libs.sh
index e352575775..25002fd379 100755
--- a/tools/jitsi/build_jisti_libs.sh
+++ b/tools/jitsi/build_jisti_libs.sh
@@ -25,6 +25,8 @@ cd jitsi-meet
 # This is commit after version 2.2.2, which does not compile
 # git checkout 5a934c071a5cbe64de275a25d0ed62d8193cdd03
 
+# Changelog: https://github.com/jitsi/jitsi-meet-release-notes/blob/master/CHANGELOG-MOBILE-SDKS.md
+
 # Version android-sdk-3.10.0, commit 99e56e229dfa3c490096e37c3e5b76d2a3f23e32
 git checkout android-sdk-3.10.0
 

From 0d2d1339e09da8dc9c9b4e414aa415368f0b0f15 Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoit@matrix.org>
Date: Tue, 29 Mar 2022 16:01:46 +0200
Subject: [PATCH 6/9] Bump Jitsi lib from 3.10.0 to 5.0.1

---
 build.gradle                        | 2 +-
 dependencies_groups.gradle          | 3 +++
 tools/jitsi/build_jisti_libs.sh     | 3 +--
 vector/build.gradle                 | 4 ++--
 vector/src/main/AndroidManifest.xml | 2 +-
 5 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/build.gradle b/build.gradle
index 8ac546ac54..8b527ccf83 100644
--- a/build.gradle
+++ b/build.gradle
@@ -54,7 +54,7 @@ allprojects {
         }
         // Jitsi repo
         maven {
-            url "https://github.com/vector-im/jitsi_libre_maven/raw/main/android-sdk-3.10.0"
+            url "https://github.com/vector-im/jitsi_libre_maven/raw/main/android-sdk-5.0.1"
             // Note: to test Jitsi release you can use a local file like this:
             // url "file:///Users/bmarty/workspaces/jitsi_libre_maven/android-sdk-3.10.0"
             content {
diff --git a/dependencies_groups.gradle b/dependencies_groups.gradle
index 6f155a0149..9e70a1de42 100644
--- a/dependencies_groups.gradle
+++ b/dependencies_groups.gradle
@@ -7,6 +7,7 @@ ext.groups = [
                         'com.github.chrisbanes',
                         'com.github.hyuwah',
                         'com.github.jetradarmobile',
+                        'com.github.MatrixFrog',
                         'com.github.tapadoo',
                         'com.github.vector-im',
                         'com.github.yalantis',
@@ -49,10 +50,12 @@ ext.groups = [
                         'com.beust',
                         'com.davemorrissey.labs',
                         'com.dropbox.core',
+                        'com.facebook.fbjni',
                         'com.facebook.fresco',
                         'com.facebook.infer.annotation',
                         'com.facebook.soloader',
                         'com.facebook.stetho',
+                        'com.facebook.yoga',
                         'com.fasterxml',
                         'com.fasterxml.jackson',
                         'com.fasterxml.jackson.core',
diff --git a/tools/jitsi/build_jisti_libs.sh b/tools/jitsi/build_jisti_libs.sh
index 25002fd379..4220dd1551 100755
--- a/tools/jitsi/build_jisti_libs.sh
+++ b/tools/jitsi/build_jisti_libs.sh
@@ -27,8 +27,7 @@ cd jitsi-meet
 
 # Changelog: https://github.com/jitsi/jitsi-meet-release-notes/blob/master/CHANGELOG-MOBILE-SDKS.md
 
-# Version android-sdk-3.10.0, commit 99e56e229dfa3c490096e37c3e5b76d2a3f23e32
-git checkout android-sdk-3.10.0
+git checkout android-sdk-5.0.1
 
 echo
 echo "##################################################"
diff --git a/vector/build.gradle b/vector/build.gradle
index 9f8471bc18..1ab9dd8251 100644
--- a/vector/build.gradle
+++ b/vector/build.gradle
@@ -470,10 +470,10 @@ dependencies {
     // WebRTC
     // org.webrtc:google-webrtc is for development purposes only
     // implementation 'org.webrtc:google-webrtc:1.0.+'
-    implementation('com.facebook.react:react-native-webrtc:1.92.1-jitsi-9093212@aar')
+    implementation('com.facebook.react:react-native-webrtc:1.94.2-jitsi-10226524@aar')
 
     // Jitsi
-    implementation('org.jitsi.react:jitsi-meet-sdk:3.10.0') {
+    implementation('org.jitsi.react:jitsi-meet-sdk:5.0.1') {
         exclude group: 'com.google.firebase'
         exclude group: 'com.google.android.gms'
         exclude group: 'com.android.installreferrer'
diff --git a/vector/src/main/AndroidManifest.xml b/vector/src/main/AndroidManifest.xml
index 1ffe8a2be8..eada664216 100644
--- a/vector/src/main/AndroidManifest.xml
+++ b/vector/src/main/AndroidManifest.xml
@@ -49,7 +49,7 @@
     <!--<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />-->
 
     <!-- Jitsi SDK is now API23+ -->
-    <uses-sdk tools:overrideLibrary="org.jitsi.meet.sdk,com.oney.WebRTCModule,com.learnium.RNDeviceInfo,com.reactnativecommunity.asyncstorage,com.ocetnik.timer,com.calendarevents,com.reactnativecommunity.netinfo,com.kevinresol.react_native_default_preference,com.rnimmersive,com.corbt.keepawake,com.BV.LinearGradient,com.horcrux.svg,com.oblador.performance,com.reactnativecommunity.slider,com.brentvatne.react" />
+    <uses-sdk tools:overrideLibrary="org.jitsi.meet.sdk,com.oney.WebRTCModule,com.learnium.RNDeviceInfo,com.reactnativecommunity.asyncstorage,com.ocetnik.timer,com.calendarevents,com.reactnativecommunity.netinfo,com.kevinresol.react_native_default_preference,com.rnimmersive,com.corbt.keepawake,com.BV.LinearGradient,com.horcrux.svg,com.oblador.performance,com.reactnativecommunity.slider,com.brentvatne.react,com.reactnativecommunity.clipboard,com.swmansion.gesturehandler.react,org.linusu,org.reactnative.maskedview,com.reactnativepagerview,com.swmansion.reanimated,com.th3rdwave.safeareacontext,com.swmansion.rnscreens,org.devio.rn.splashscreen,com.reactnativecommunity.webview" />
 
     <!-- Adding CAMERA permission prevents Chromebooks to see the application on the PlayStore -->
     <!-- Tell that the Camera is not mandatory to install the application -->

From 587948c1b97337370523b3d358116ed07d0ae0b2 Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoit@matrix.org>
Date: Tue, 29 Mar 2022 18:24:44 +0200
Subject: [PATCH 7/9] Bump Jitsi lib from 5.0.1 to 5.0.2
 https://github.com/jitsi/jitsi-meet-release-notes/blob/master/CHANGELOG-MOBILE-SDKS.md#502-2022-03-29

---
 build.gradle                    | 2 +-
 tools/jitsi/build_jisti_libs.sh | 5 ++++-
 vector/build.gradle             | 4 ++--
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/build.gradle b/build.gradle
index 8b527ccf83..6ad0663c6d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -54,7 +54,7 @@ allprojects {
         }
         // Jitsi repo
         maven {
-            url "https://github.com/vector-im/jitsi_libre_maven/raw/main/android-sdk-5.0.1"
+            url "https://github.com/vector-im/jitsi_libre_maven/raw/main/android-sdk-5.0.2"
             // Note: to test Jitsi release you can use a local file like this:
             // url "file:///Users/bmarty/workspaces/jitsi_libre_maven/android-sdk-3.10.0"
             content {
diff --git a/tools/jitsi/build_jisti_libs.sh b/tools/jitsi/build_jisti_libs.sh
index 4220dd1551..445dc5e0fe 100755
--- a/tools/jitsi/build_jisti_libs.sh
+++ b/tools/jitsi/build_jisti_libs.sh
@@ -17,6 +17,9 @@ cd ..
 rm -rf jitsi-meet
 git clone https://github.com/jitsi/jitsi-meet
 
+# Android SDK
+export ANDROID_SDK_ROOT=~/Library/Android/sdk
+
 # We want a libre build!
 export LIBRE_BUILD=true
 
@@ -27,7 +30,7 @@ cd jitsi-meet
 
 # Changelog: https://github.com/jitsi/jitsi-meet-release-notes/blob/master/CHANGELOG-MOBILE-SDKS.md
 
-git checkout android-sdk-5.0.1
+git checkout android-sdk-5.0.2
 
 echo
 echo "##################################################"
diff --git a/vector/build.gradle b/vector/build.gradle
index 1ab9dd8251..8ccec79902 100644
--- a/vector/build.gradle
+++ b/vector/build.gradle
@@ -470,10 +470,10 @@ dependencies {
     // WebRTC
     // org.webrtc:google-webrtc is for development purposes only
     // implementation 'org.webrtc:google-webrtc:1.0.+'
-    implementation('com.facebook.react:react-native-webrtc:1.94.2-jitsi-10226524@aar')
+    implementation('com.facebook.react:react-native-webrtc:1.94.2-jitsi-10227332@aar')
 
     // Jitsi
-    implementation('org.jitsi.react:jitsi-meet-sdk:5.0.1') {
+    implementation('org.jitsi.react:jitsi-meet-sdk:5.0.2') {
         exclude group: 'com.google.firebase'
         exclude group: 'com.google.android.gms'
         exclude group: 'com.android.installreferrer'

From 963b2dfa572e384ee510ea9add03e651452224c6 Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoit@matrix.org>
Date: Tue, 29 Mar 2022 19:38:10 +0200
Subject: [PATCH 8/9] Ignore false positive on static analysis tools Until
 2023-01-01Z !

---
 build.gradle                           |  7 +++++++
 tools/dependencycheck/suppressions.xml | 17 +++++++++++++++++
 2 files changed, 24 insertions(+)
 create mode 100644 tools/dependencycheck/suppressions.xml

diff --git a/build.gradle b/build.gradle
index 6ad0663c6d..a5e1242afa 100644
--- a/build.gradle
+++ b/build.gradle
@@ -35,6 +35,13 @@ plugins {
 // https://github.com/jeremylong/DependencyCheck
 apply plugin: 'org.owasp.dependencycheck'
 
+dependencyCheck {
+    // See https://jeremylong.github.io/DependencyCheck/general/suppression.html
+    suppressionFiles = [
+            "./tools/dependencycheck/suppressions.xml"
+    ]
+}
+
 allprojects {
     apply plugin: "org.jlleitschuh.gradle.ktlint"
 
diff --git a/tools/dependencycheck/suppressions.xml b/tools/dependencycheck/suppressions.xml
new file mode 100644
index 0000000000..758b1a87f3
--- /dev/null
+++ b/tools/dependencycheck/suppressions.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
+    <suppress until="2023-01-01Z">
+        <notes><![CDATA[
+      file name: ktlint-reporter-checkstyle-0.45.1.jar
+      ]]></notes>
+        <packageUrl regex="true">^pkg:maven/com\.pinterest\.ktlint/ktlint\-reporter\-checkstyle@.*$</packageUrl>
+        <cve>CVE-2019-10782</cve>
+    </suppress>
+    <suppress until="2023-01-01Z">
+        <notes><![CDATA[
+   file name: ktlint-reporter-checkstyle-0.45.1.jar
+   ]]></notes>
+        <packageUrl regex="true">^pkg:maven/com\.pinterest\.ktlint/ktlint\-reporter\-checkstyle@.*$</packageUrl>
+        <cve>CVE-2019-9658</cve>
+    </suppress>
+</suppressions>

From f4f5beff152ebcfe623aa84ae9155bf16c733cf9 Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoitm@matrix.org>
Date: Wed, 30 Mar 2022 09:54:02 +0200
Subject: [PATCH 9/9] Add changelogs

---
 changelog.d/5654.feature | 1 +
 changelog.d/5654.misc    | 1 +
 2 files changed, 2 insertions(+)
 create mode 100644 changelog.d/5654.feature
 create mode 100644 changelog.d/5654.misc

diff --git a/changelog.d/5654.feature b/changelog.d/5654.feature
new file mode 100644
index 0000000000..52a41ef37a
--- /dev/null
+++ b/changelog.d/5654.feature
@@ -0,0 +1 @@
+Update Jitsi lib from 3.10.0 to 5.0.2
\ No newline at end of file
diff --git a/changelog.d/5654.misc b/changelog.d/5654.misc
new file mode 100644
index 0000000000..26e2ed5a1c
--- /dev/null
+++ b/changelog.d/5654.misc
@@ -0,0 +1 @@
+Setup the plugin org.owasp.dependencycheck
\ No newline at end of file