diff --git a/build.gradle b/build.gradle index 31416a0440..a5e1242afa 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,16 @@ plugins { id "org.jlleitschuh.gradle.ktlint" version "10.2.1" } +// 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" @@ -51,7 +61,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.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 { @@ -87,6 +97,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 @@ -96,7 +108,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/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 diff --git a/dependencies_groups.gradle b/dependencies_groups.gradle index 45883f506d..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', @@ -39,6 +40,7 @@ ext.groups = [ regex: [ ], group: [ + 'ch.qos.logback', 'com.adevinta.android', 'com.airbnb.android', 'com.almworks.sqlite4java', @@ -48,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', @@ -113,6 +117,7 @@ ext.groups = [ 'info.picocli', 'io.arrow-kt', 'io.github.detekt.sarif4k', + 'io.github.microutils', 'io.github.reactivecircus.flowbinding', 'io.grpc', 'io.jsonwebtoken', 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/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 MXUsersDevicesMap.forEach(action: (String, String, T) -> Unit) } } -internal fun MXUsersDevicesMap.toDebugString() = +internal fun MXUsersDevicesMap.toDebugString() = map.entries.joinToString { "${it.key} [${it.value.keys.joinToString { it }}]" } internal fun MXUsersDevicesMap.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/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 @@ + + + + + ^pkg:maven/com\.pinterest\.ktlint/ktlint\-reporter\-checkstyle@.*$ + CVE-2019-10782 + + + + ^pkg:maven/com\.pinterest\.ktlint/ktlint\-reporter\-checkstyle@.*$ + CVE-2019-9658 + + diff --git a/tools/jitsi/build_jisti_libs.sh b/tools/jitsi/build_jisti_libs.sh index e352575775..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 @@ -25,8 +28,9 @@ cd jitsi-meet # This is commit after version 2.2.2, which does not compile # git checkout 5a934c071a5cbe64de275a25d0ed62d8193cdd03 -# Version android-sdk-3.10.0, commit 99e56e229dfa3c490096e37c3e5b76d2a3f23e32 -git checkout android-sdk-3.10.0 +# Changelog: https://github.com/jitsi/jitsi-meet-release-notes/blob/master/CHANGELOG-MOBILE-SDKS.md + +git checkout android-sdk-5.0.2 echo echo "##################################################" diff --git a/vector/build.gradle b/vector/build.gradle index f5984ff0c6..37345ad2c3 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-10227332@aar') // Jitsi - implementation('org.jitsi.react:jitsi-meet-sdk:3.10.0') { + 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' 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/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 @@ - + 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(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, - 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, + 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(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(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(initialState) { +class InviteUsersToRoomViewModel @AssistedInject constructor( + @Assisted initialState: InviteUsersToRoomViewState, + session: Session, + val stringProvider: StringProvider +) : VectorViewModel(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/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? = null - - // Group Flairs - private val mGroupsFlairCategory by lazy { - findPreference(VectorPreferences.SETTINGS_GROUPS_FLAIR_KEY)!! - } - - override fun bindPref() { - // Flair - refreshGroupFlairsList() - } - - // ============================================================================================================== - // Group flairs management - // ============================================================================================================== - - /** - * Force the refresh of the devices list.

- * 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> { - override fun onSuccess(publicisedGroups: Set) { - // 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) { - 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 { - 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/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(VectorPreferences.SETTINGS_MEDIA_SAVING_PERIOD_KEY)!!.let { diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index 59eb6e2911..96c9541da7 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -1041,7 +1041,8 @@ Choose Play shutter sound - Flair + + Flair 3 days 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 @@ - - - - - - \ No newline at end of file