diff --git a/.editorconfig b/.editorconfig index 3682168027..ac30459c21 100644 --- a/.editorconfig +++ b/.editorconfig @@ -14,10 +14,19 @@ ij_smart_tabs = false ij_visual_guides = none ij_wrap_on_typing = false -# Ktlint rule, for more information see https://pinterest.github.io/ktlint/faq/#why-is-editorconfig-property-disabled_rules-deprecated-and-how-do-i-resolve-this +# Ktlint rule, for more information see https://pinterest.github.io/ktlint/1.1.1/faq/#how-do-i-enable-or-disable-a-rule ktlint_standard_wrapping = disabled ktlint_standard_trailing-comma-on-call-site = disabled - +ktlint_standard_trailing-comma-on-declaration-site = disabled +ktlint_standard_multiline-expression-wrapping = disabled +ktlint_standard_string-template-indent = disabled +ktlint_standard_spacing-between-declarations-with-annotations = disabled +ktlint_standard_function-signature = disabled +ktlint_standard_annotation = disabled +ktlint_standard_parameter-list-wrapping = disabled +ktlint_standard_indent = disabled +ktlint_standard_blank-line-before-declaration = disabled +ktlint_function_naming_ignore_when_annotated_with=Composable [*.java] ij_java_align_consecutive_assignments = false diff --git a/anvilcodegen/src/main/kotlin/io/element/android/anvilcodegen/ContributesNodeCodeGenerator.kt b/anvilcodegen/src/main/kotlin/io/element/android/anvilcodegen/ContributesNodeCodeGenerator.kt index 576a52df89..d9e58f6482 100644 --- a/anvilcodegen/src/main/kotlin/io/element/android/anvilcodegen/ContributesNodeCodeGenerator.kt +++ b/anvilcodegen/src/main/kotlin/io/element/android/anvilcodegen/ContributesNodeCodeGenerator.kt @@ -58,7 +58,6 @@ import java.io.File */ @AutoService(CodeGenerator::class) class ContributesNodeCodeGenerator : CodeGenerator { - override fun isApplicable(context: AnvilContext): Boolean = true override fun generateCode(codeGenDir: File, module: ModuleDescriptor, projectFiles: Collection): Collection { diff --git a/app/src/main/kotlin/io/element/android/x/ElementXApplication.kt b/app/src/main/kotlin/io/element/android/x/ElementXApplication.kt index 03f0b20429..437c6700f5 100644 --- a/app/src/main/kotlin/io/element/android/x/ElementXApplication.kt +++ b/app/src/main/kotlin/io/element/android/x/ElementXApplication.kt @@ -27,7 +27,6 @@ import io.element.android.x.initializer.CrashInitializer import io.element.android.x.initializer.TracingInitializer class ElementXApplication : Application(), DaggerComponentOwner { - override val daggerComponent: AppComponent = DaggerAppComponent.factory().create(this) override fun onCreate() { diff --git a/app/src/main/kotlin/io/element/android/x/MainActivity.kt b/app/src/main/kotlin/io/element/android/x/MainActivity.kt index 00d8a48d9a..99d940c5f5 100644 --- a/app/src/main/kotlin/io/element/android/x/MainActivity.kt +++ b/app/src/main/kotlin/io/element/android/x/MainActivity.kt @@ -51,7 +51,6 @@ import timber.log.Timber private val loggerTag = LoggerTag("MainActivity") class MainActivity : NodeActivity() { - private lateinit var mainNode: MainNode private lateinit var appBindings: AppBindings diff --git a/app/src/main/kotlin/io/element/android/x/MainNode.kt b/app/src/main/kotlin/io/element/android/x/MainNode.kt index 94cd7fa7e1..e4f16d323e 100644 --- a/app/src/main/kotlin/io/element/android/x/MainNode.kt +++ b/app/src/main/kotlin/io/element/android/x/MainNode.kt @@ -48,7 +48,6 @@ class MainNode( plugins = plugins, ), DaggerComponentOwner { - override val daggerComponent = (context as DaggerComponentOwner).daggerComponent override fun resolve(navTarget: RootNavTarget, buildContext: BuildContext): Node { @@ -68,5 +67,4 @@ class MainNode( @Parcelize object RootNavTarget : Parcelable - } diff --git a/app/src/main/kotlin/io/element/android/x/di/AppBindings.kt b/app/src/main/kotlin/io/element/android/x/di/AppBindings.kt index 96439ff973..a6ce26c237 100644 --- a/app/src/main/kotlin/io/element/android/x/di/AppBindings.kt +++ b/app/src/main/kotlin/io/element/android/x/di/AppBindings.kt @@ -27,8 +27,12 @@ import io.element.android.libraries.matrix.api.tracing.TracingService @ContributesTo(AppScope::class) interface AppBindings { fun snackbarDispatcher(): SnackbarDispatcher + fun tracingService(): TracingService + fun bugReporter(): BugReporter + fun lockScreenService(): LockScreenService + fun preferencesStore(): PreferencesStore } diff --git a/app/src/main/kotlin/io/element/android/x/di/AppComponent.kt b/app/src/main/kotlin/io/element/android/x/di/AppComponent.kt index d614556413..4e8c631281 100644 --- a/app/src/main/kotlin/io/element/android/x/di/AppComponent.kt +++ b/app/src/main/kotlin/io/element/android/x/di/AppComponent.kt @@ -28,9 +28,11 @@ import io.element.android.libraries.di.SingleIn @SingleIn(AppScope::class) @MergeComponent(AppScope::class) interface AppComponent : NodeFactoriesBindings { - @Component.Factory interface Factory { - fun create(@ApplicationContext @BindsInstance context: Context): AppComponent + fun create( + @ApplicationContext @BindsInstance + context: Context + ): AppComponent } } diff --git a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt index 037cec1e71..995dcf61e5 100644 --- a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt +++ b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt @@ -46,7 +46,6 @@ import java.io.File @Module @ContributesTo(AppScope::class) object AppModule { - @Provides fun providesBaseDirectory(@ApplicationContext context: Context): File { return File(context.filesDir, "sessions") @@ -82,14 +81,20 @@ object AppModule { buildType = buildType, applicationName = context.getString(R.string.app_name), applicationId = BuildConfig.APPLICATION_ID, - lowPrivacyLoggingEnabled = false, // TODO EAx Config.LOW_PRIVACY_LOG_ENABLE, + // TODO EAx Config.LOW_PRIVACY_LOG_ENABLE, + lowPrivacyLoggingEnabled = false, versionName = BuildConfig.VERSION_NAME, versionCode = BuildConfig.VERSION_CODE, - gitRevision = "TODO", // BuildConfig.GIT_REVISION, - gitRevisionDate = "TODO", // BuildConfig.GIT_REVISION_DATE, - gitBranchName = "TODO", // BuildConfig.GIT_BRANCH_NAME, - flavorDescription = "TODO", // BuildConfig.FLAVOR_DESCRIPTION, - flavorShortDescription = "TODO", // BuildConfig.SHORT_FLAVOR_DESCRIPTION, + // BuildConfig.GIT_REVISION, + gitRevision = "TODO", + // BuildConfig.GIT_REVISION_DATE, + gitRevisionDate = "TODO", + // BuildConfig.GIT_BRANCH_NAME, + gitBranchName = "TODO", + // BuildConfig.FLAVOR_DESCRIPTION, + flavorDescription = "TODO", + // BuildConfig.SHORT_FLAVOR_DESCRIPTION, + flavorShortDescription = "TODO", ) @Provides diff --git a/app/src/main/kotlin/io/element/android/x/di/DefaultRoomComponentFactory.kt b/app/src/main/kotlin/io/element/android/x/di/DefaultRoomComponentFactory.kt index 44fc54570d..830ca4a65d 100644 --- a/app/src/main/kotlin/io/element/android/x/di/DefaultRoomComponentFactory.kt +++ b/app/src/main/kotlin/io/element/android/x/di/DefaultRoomComponentFactory.kt @@ -26,7 +26,6 @@ import javax.inject.Inject class DefaultRoomComponentFactory @Inject constructor( private val roomComponentBuilder: RoomComponent.Builder ) : RoomComponentFactory { - override fun create(room: MatrixRoom): Any { return roomComponentBuilder.room(room).build() } diff --git a/app/src/main/kotlin/io/element/android/x/di/DefaultSessionComponentFactory.kt b/app/src/main/kotlin/io/element/android/x/di/DefaultSessionComponentFactory.kt index 922d25f6af..7ea85e81a8 100644 --- a/app/src/main/kotlin/io/element/android/x/di/DefaultSessionComponentFactory.kt +++ b/app/src/main/kotlin/io/element/android/x/di/DefaultSessionComponentFactory.kt @@ -26,7 +26,6 @@ import javax.inject.Inject class DefaultSessionComponentFactory @Inject constructor( private val sessionComponentBuilder: SessionComponent.Builder ) : SessionComponentFactory { - override fun create(client: MatrixClient): Any { return sessionComponentBuilder.client(client).build() } diff --git a/app/src/main/kotlin/io/element/android/x/di/RoomComponent.kt b/app/src/main/kotlin/io/element/android/x/di/RoomComponent.kt index 68c700bdb8..55d0b9c653 100644 --- a/app/src/main/kotlin/io/element/android/x/di/RoomComponent.kt +++ b/app/src/main/kotlin/io/element/android/x/di/RoomComponent.kt @@ -29,7 +29,6 @@ import io.element.android.libraries.matrix.api.room.MatrixRoom @SingleIn(RoomScope::class) @MergeSubcomponent(RoomScope::class) interface RoomComponent : NodeFactoriesBindings { - @Subcomponent.Builder interface Builder { @BindsInstance diff --git a/app/src/main/kotlin/io/element/android/x/di/SessionComponent.kt b/app/src/main/kotlin/io/element/android/x/di/SessionComponent.kt index 54e8c27498..4ef2840e8e 100644 --- a/app/src/main/kotlin/io/element/android/x/di/SessionComponent.kt +++ b/app/src/main/kotlin/io/element/android/x/di/SessionComponent.kt @@ -29,7 +29,6 @@ import io.element.android.libraries.matrix.api.MatrixClient @SingleIn(SessionScope::class) @MergeSubcomponent(SessionScope::class) interface SessionComponent : NodeFactoriesBindings { - @Subcomponent.Builder interface Builder { @BindsInstance diff --git a/app/src/main/kotlin/io/element/android/x/initializer/CrashInitializer.kt b/app/src/main/kotlin/io/element/android/x/initializer/CrashInitializer.kt index c947bc20e3..af381c2dcf 100644 --- a/app/src/main/kotlin/io/element/android/x/initializer/CrashInitializer.kt +++ b/app/src/main/kotlin/io/element/android/x/initializer/CrashInitializer.kt @@ -21,7 +21,6 @@ import androidx.startup.Initializer import io.element.android.features.rageshake.impl.crash.VectorUncaughtExceptionHandler class CrashInitializer : Initializer { - override fun create(context: Context) { VectorUncaughtExceptionHandler(context).activate() } diff --git a/app/src/main/kotlin/io/element/android/x/initializer/TracingInitializer.kt b/app/src/main/kotlin/io/element/android/x/initializer/TracingInitializer.kt index 8dc0bf0e0e..5a7bf0fb82 100644 --- a/app/src/main/kotlin/io/element/android/x/initializer/TracingInitializer.kt +++ b/app/src/main/kotlin/io/element/android/x/initializer/TracingInitializer.kt @@ -31,7 +31,6 @@ import io.element.android.x.di.AppBindings import timber.log.Timber class TracingInitializer : Initializer { - override fun create(context: Context) { val appBindings = context.bindings() val tracingService = appBindings.tracingService() diff --git a/app/src/test/kotlin/io/element/android/x/intent/IntentProviderImplTest.kt b/app/src/test/kotlin/io/element/android/x/intent/IntentProviderImplTest.kt index 9f0cde38cf..340af6f4a8 100644 --- a/app/src/test/kotlin/io/element/android/x/intent/IntentProviderImplTest.kt +++ b/app/src/test/kotlin/io/element/android/x/intent/IntentProviderImplTest.kt @@ -31,7 +31,6 @@ import org.robolectric.RuntimeEnvironment @RunWith(RobolectricTestRunner::class) class IntentProviderImplTest { - @Test fun `test getViewRoomIntent with Session`() { val sut = createIntentProviderImpl() diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/LockScreenConfig.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/LockScreenConfig.kt index edeb0c0643..02586bea0d 100644 --- a/appconfig/src/main/kotlin/io/element/android/appconfig/LockScreenConfig.kt +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/LockScreenConfig.kt @@ -25,48 +25,27 @@ import kotlin.time.Duration.Companion.seconds /** * Configuration for the lock screen feature. + * @property isPinMandatory Whether the PIN is mandatory or not. + * @property pinBlacklist Some PINs are forbidden. + * @property pinSize The size of the PIN. + * @property maxPinCodeAttemptsBeforeLogout Number of attempts before the user is logged out. + * @property gracePeriod Time period before locking the app once backgrounded. + * @property isStrongBiometricsEnabled Authentication with strong methods (fingerprint, some face/iris unlock implementations) is supported. + * @property isWeakBiometricsEnabled Authentication with weak methods (most face/iris unlock implementations) is supported. */ data class LockScreenConfig( - /** - * Whether the PIN is mandatory or not. - */ val isPinMandatory: Boolean, - - /** - * Some PINs are forbidden. - */ val pinBlacklist: Set, - - /** - * The size of the PIN. - */ val pinSize: Int, - - /** - * Number of attempts before the user is logged out. - */ val maxPinCodeAttemptsBeforeLogout: Int, - - /** - * Time period before locking the app once backgrounded. - */ val gracePeriod: Duration, - - /** - * Authentication with strong methods (fingerprint, some face/iris unlock implementations) is supported. - */ val isStrongBiometricsEnabled: Boolean, - - /** - * Authentication with weak methods (most face/iris unlock implementations) is supported. - */ val isWeakBiometricsEnabled: Boolean, ) @ContributesTo(AppScope::class) @Module object LockScreenConfigModule { - @Provides fun providesLockScreenConfig(): LockScreenConfig = LockScreenConfig( isPinMandatory = false, diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/MatrixConfiguration.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/MatrixConfiguration.kt index e4d6ee7ca2..2dcdb6e458 100644 --- a/appconfig/src/main/kotlin/io/element/android/appconfig/MatrixConfiguration.kt +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/MatrixConfiguration.kt @@ -17,6 +17,6 @@ package io.element.android.appconfig object MatrixConfiguration { - const val matrixToPermalinkBaseUrl: String = "https://matrix.to/#/" + const val MATRIX_TO_PERMALINK_BASE_URL: String = "https://matrix.to/#/" val clientPermalinkBaseUrl: String? = null } diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt index 30940cbcaf..8d41a2a207 100644 --- a/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt @@ -18,8 +18,8 @@ package io.element.android.appconfig object NotificationConfig { // TODO EAx Implement and set to true at some point - const val supportMarkAsReadAction = false + const val SUPPORT_MARK_AS_READ_ACTION = false // TODO EAx Implement and set to true at some point - const val supportQuickReplyAction = false + const val SUPPORT_QUICK_REPLY_ACTION = false } diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/PushConfig.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/PushConfig.kt index 1836a5acb6..592c7c4b9e 100644 --- a/appconfig/src/main/kotlin/io/element/android/appconfig/PushConfig.kt +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/PushConfig.kt @@ -20,5 +20,5 @@ object PushConfig { /** * Note: pusher_app_id cannot exceed 64 chars. */ - const val pusher_app_id: String = "im.vector.app.android" + const val PUSHER_APP_ID: String = "im.vector.app.android" } diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/RoomListConfig.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/RoomListConfig.kt index b464d9794c..b6565a2129 100644 --- a/appconfig/src/main/kotlin/io/element/android/appconfig/RoomListConfig.kt +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/RoomListConfig.kt @@ -17,8 +17,8 @@ package io.element.android.appconfig object RoomListConfig { - const val showInviteMenuItem = false - const val showReportProblemMenuItem = false + const val SHOW_INVITE_MENU_ITEM = false + const val SHOW_REPORT_PROBLEM_MENU_ITEM = false - const val hasDropdownMenu = showInviteMenuItem || showReportProblemMenuItem + const val HAS_DROP_DOWN_MENU = SHOW_INVITE_MENU_ITEM || SHOW_REPORT_PROBLEM_MENU_ITEM } diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/SecureBackupConfig.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/SecureBackupConfig.kt index 61f015d239..47ce0e48c6 100644 --- a/appconfig/src/main/kotlin/io/element/android/appconfig/SecureBackupConfig.kt +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/SecureBackupConfig.kt @@ -17,5 +17,5 @@ package io.element.android.appconfig object SecureBackupConfig { - const val LearnMoreUrl: String = "https://element.io/help#encryption5" + const val LEARN_MORE_URL: String = "https://element.io/help#encryption5" } diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/TimelineConfig.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/TimelineConfig.kt index 625282f1e8..c309e01277 100644 --- a/appconfig/src/main/kotlin/io/element/android/appconfig/TimelineConfig.kt +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/TimelineConfig.kt @@ -17,5 +17,5 @@ package io.element.android.appconfig object TimelineConfig { - const val maxReadReceiptToDisplay = 3 + const val MAX_READ_RECEIPT_TO_DISPLAY = 3 } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/BackstackExt.kt b/appnav/src/main/kotlin/io/element/android/appnav/BackstackExt.kt index 36b267debb..b42330795a 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/BackstackExt.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/BackstackExt.kt @@ -40,4 +40,3 @@ fun BackStack.removeLast(element: T) { } ?: return accept(Remove(lastExpectedNavElement.key)) } - diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInEventProcessor.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInEventProcessor.kt index 6bf7687fef..b59c1cebdf 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInEventProcessor.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInEventProcessor.kt @@ -36,7 +36,6 @@ class LoggedInEventProcessor @Inject constructor( roomMembershipObserver: RoomMembershipObserver, sessionVerificationService: SessionVerificationService, ) { - private var observingJob: Job? = null private val displayLeftRoomMessage = roomMembershipObserver.updates diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 884681766e..3985128b21 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -111,7 +111,6 @@ class LoggedInFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins ) { - interface Callback : Plugin { fun onOpenBugReport() } @@ -138,7 +137,7 @@ class LoggedInFlowNode @AssistedInject constructor( }, onStop = { coroutineScope.launch { - //Counterpart startSync is done in observeSyncStateAndNetworkStatus method. + // Counterpart startSync is done in observeSyncStateAndNetworkStatus method. syncService.stopSync() } }, diff --git a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt index c9dcd62048..42c9869523 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -81,7 +81,6 @@ class RootFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins ) { - override fun onBuilt() { matrixClientsHolder.restoreWithSavedState(buildContext.savedStateMap) super.onBuilt() @@ -268,10 +267,9 @@ class RootFlowNode @AssistedInject constructor( } private suspend fun attachSession(sessionId: SessionId): LoggedInAppScopeFlowNode { - //TODO handle multi-session + // TODO handle multi-session return waitForChildAttached { navTarget -> navTarget is NavTarget.LoggedInFlow && navTarget.sessionId == sessionId } } } - diff --git a/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixClientsHolder.kt b/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixClientsHolder.kt index f75725b1bb..517becef2a 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixClientsHolder.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixClientsHolder.kt @@ -37,7 +37,6 @@ private const val SAVE_INSTANCE_KEY = "io.element.android.x.di.MatrixClientsHold @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) class MatrixClientsHolder @Inject constructor(private val authenticationService: MatrixAuthenticationService) : MatrixClientProvider { - private val sessionIdsToMatrixClient = ConcurrentHashMap() private val restoreMutex = Mutex() @@ -65,8 +64,9 @@ class MatrixClientsHolder @Inject constructor(private val authenticationService: @Suppress("UNCHECKED_CAST") fun restoreWithSavedState(state: SavedStateMap?) { Timber.d("Restore state") - if (state == null || sessionIdsToMatrixClient.isNotEmpty()) return Unit.also { + if (state == null || sessionIdsToMatrixClient.isNotEmpty()) { Timber.w("Restore with non-empty map") + return } val sessionIds = state[SAVE_INSTANCE_KEY] as? Array Timber.d("Restore matrix session keys = ${sessionIds?.map { it.value }}") diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInEvents.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInEvents.kt deleted file mode 100644 index be784ea7c9..0000000000 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInEvents.kt +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 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 io.element.android.appnav.loggedin - -// sealed interface LoggedInEvents { -// data object MyEvent : LoggedInEvents -// } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInNode.kt index 5ddbb164d8..a61e6b69b6 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInNode.kt @@ -35,7 +35,6 @@ class LoggedInNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins ) { - @Composable override fun View(modifier: Modifier) { val loggedInState = loggedInPresenter.present() diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt index 7683b7278f..a9c4a6ecf8 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt @@ -35,7 +35,6 @@ class LoggedInPresenter @Inject constructor( private val networkMonitor: NetworkMonitor, private val pushService: PushService, ) : Presenter { - @Composable override fun present(): LoggedInState { LaunchedEffect(Unit) { diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/SyncStateView.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/SyncStateView.kt index 43b770f327..9522d8835f 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/SyncStateView.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/SyncStateView.kt @@ -59,15 +59,15 @@ fun SyncStateView( ) { Row( modifier = Modifier - .background(color = ElementTheme.colors.bgSubtleSecondary) - .padding(horizontal = 24.dp, vertical = 10.dp), + .background(color = ElementTheme.colors.bgSubtleSecondary) + .padding(horizontal = 24.dp, vertical = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(10.dp) ) { CircularProgressIndicator( modifier = Modifier - .progressSemantics() - .size(12.dp), + .progressSemantics() + .size(12.dp), color = ElementTheme.colors.textPrimary, strokeWidth = 1.5.dp, ) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/LoadingRoomState.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/LoadingRoomState.kt index 3836fbff74..0798979812 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/LoadingRoomState.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/LoadingRoomState.kt @@ -47,7 +47,6 @@ open class LoadingRoomStateProvider : PreviewParameterProvider @SingleIn(SessionScope::class) class LoadingRoomStateFlowFactory @Inject constructor(private val matrixClient: MatrixClient) { - fun create(lifecycleScope: CoroutineScope, roomId: RoomId): StateFlow = getRoomFlow(roomId) .map { room -> diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt index be9ca0ce4b..b45207b034 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt @@ -66,7 +66,6 @@ class RoomFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins ) { - data class Inputs( val roomId: RoomId, val initialElement: RoomLoadedFlowNode.NavTarget = RoomLoadedFlowNode.NavTarget.Messages, @@ -136,4 +135,3 @@ class RoomFlowNode @AssistedInject constructor( ) } } - diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomLoadedFlowNode.kt index 045823be6f..d6ea4fc533 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomLoadedFlowNode.kt @@ -71,7 +71,6 @@ class RoomLoadedFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins, ), DaggerComponentOwner { - interface Callback : Plugin { fun onOpenRoom(roomId: RoomId) fun onForwardedToSingleRoom(roomId: RoomId) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/root/RootNavStateFlowFactory.kt b/appnav/src/main/kotlin/io/element/android/appnav/root/RootNavStateFlowFactory.kt index e6a46f5950..13c0204f79 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/root/RootNavStateFlowFactory.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/root/RootNavStateFlowFactory.kt @@ -41,7 +41,6 @@ class RootNavStateFlowFactory @Inject constructor( private val matrixClientsHolder: MatrixClientsHolder, private val loginUserStory: LoginUserStory, ) { - private var currentCacheIndex = 0 fun create(savedStateMap: SavedStateMap?): Flow { diff --git a/appnav/src/main/kotlin/io/element/android/appnav/root/RootPresenter.kt b/appnav/src/main/kotlin/io/element/android/appnav/root/RootPresenter.kt index cffc4cf35c..8ec673ceec 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/root/RootPresenter.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/root/RootPresenter.kt @@ -30,7 +30,6 @@ class RootPresenter @Inject constructor( private val rageshakeDetectionPresenter: RageshakeDetectionPresenter, private val appErrorStateService: AppErrorStateService, ) : Presenter { - @Composable override fun present(): RootState { val rageshakeDetectionState = rageshakeDetectionPresenter.present() diff --git a/appnav/src/test/kotlin/io/element/android/appnav/RoomFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/RoomFlowNodeTest.kt index 09ca595080..ecc6a5dad0 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/RoomFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/RoomFlowNodeTest.kt @@ -41,7 +41,6 @@ import org.junit.Rule import org.junit.Test class RoomFlowNodeTest { - @get:Rule val instantTaskExecutorRule = InstantTaskExecutorRule() @@ -49,7 +48,6 @@ class RoomFlowNodeTest { val mainDispatcherRule = MainDispatcherRule() private class FakeMessagesEntryPoint : MessagesEntryPoint { - var nodeId: String? = null var callback: MessagesEntryPoint.Callback? = null @@ -68,12 +66,10 @@ class RoomFlowNodeTest { } private class FakeRoomDetailsEntryPoint : RoomDetailsEntryPoint { - var nodeId: String? = null override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomDetailsEntryPoint.NodeBuilder { return object : RoomDetailsEntryPoint.NodeBuilder { - override fun params(params: RoomDetailsEntryPoint.Params): RoomDetailsEntryPoint.NodeBuilder { return this } diff --git a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt index d7b951fbbc..079ccab17a 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt @@ -36,7 +36,6 @@ import org.junit.Rule import org.junit.Test class LoggedInPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/appnav/src/test/kotlin/io/element/android/appnav/room/LoadingRoomStateFlowFactoryTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/room/LoadingRoomStateFlowFactoryTest.kt index 6997f07233..58e35b2d58 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/room/LoadingRoomStateFlowFactoryTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/room/LoadingRoomStateFlowFactoryTest.kt @@ -28,25 +28,24 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class LoadingRoomStateFlowFactoryTest { - @Test fun `flow should emit Loading and then Loaded when there is a room in cache`() = runTest { - val room = FakeMatrixRoom(sessionId= A_SESSION_ID, roomId = A_ROOM_ID) + val room = FakeMatrixRoom(sessionId = A_SESSION_ID, roomId = A_ROOM_ID) val matrixClient = FakeMatrixClient(A_SESSION_ID).apply { givenGetRoomResult(A_ROOM_ID, room) } val flowFactory = LoadingRoomStateFlowFactory(matrixClient) flowFactory .create(this, A_ROOM_ID) - .test { - assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loading) - assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loaded(room)) - } + .test { + assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loading) + assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loaded(room)) + } } @Test fun `flow should emit Loading and then Loaded when there is a room in cache after SS is loaded`() = runTest { - val room = FakeMatrixRoom(sessionId= A_SESSION_ID, roomId = A_ROOM_ID) + val room = FakeMatrixRoom(sessionId = A_SESSION_ID, roomId = A_ROOM_ID) val roomListService = FakeRoomListService() val matrixClient = FakeMatrixClient(A_SESSION_ID, roomListService = roomListService) val flowFactory = LoadingRoomStateFlowFactory(matrixClient) diff --git a/build.gradle.kts b/build.gradle.kts index 3031f0b4e7..dfd0c009e9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -60,7 +60,7 @@ allprojects { config.from(files("$rootDir/tools/detekt/detekt.yml")) } dependencies { - detektPlugins("io.nlopez.compose.rules:detekt:0.3.8") + detektPlugins("io.nlopez.compose.rules:detekt:0.3.9") } // KtLint @@ -72,7 +72,7 @@ allprojects { configure { // See https://github.com/pinterest/ktlint/releases/ // TODO Regularly check for new version here ^ - version.set("0.48.2") + version.set("1.1.1") android.set(true) ignoreFailures.set(false) enableExperimentalRules.set(true) @@ -100,8 +100,8 @@ allprojects { kotlinOptions.allWarningsAsErrors = project.properties["allWarningsAsErrors"] == "true" kotlinOptions { - // Uncomment to suppress Compose Kotlin compiler compatibility warning /* + // Uncomment to suppress Compose Kotlin compiler compatibility warning freeCompilerArgs += listOf( "-P", "plugin:androidx.compose.compiler.plugins.kotlin:suppressKotlinVersionCompatibilityCheck=true" @@ -194,7 +194,7 @@ subprojects { // Workaround for https://github.com/airbnb/Showkase/issues/335 subprojects { - tasks.withType() { + tasks.withType { doLast { fileTree(layout.buildDirectory).apply { include("**/*ShowkaseExtension*.kt") }.files.forEach { file -> ReplaceRegExp().apply { @@ -216,13 +216,15 @@ subprojects { if (project.findProperty("composeCompilerReports") == "true") { freeCompilerArgs += listOf( "-P", - "plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=${project.layout.buildDirectory.asFile.get().absolutePath}/compose_compiler" + "plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" + + "${project.layout.buildDirectory.asFile.get().absolutePath}/compose_compiler" ) } if (project.findProperty("composeCompilerMetrics") == "true") { freeCompilerArgs += listOf( "-P", - "plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=${project.layout.buildDirectory.asFile.get().absolutePath}/compose_compiler" + "plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=" + + "${project.layout.buildDirectory.asFile.get().absolutePath}/compose_compiler" ) } } diff --git a/changelog.d/2156.bugfix b/changelog.d/2156.bugfix new file mode 100644 index 0000000000..45c7d882c6 --- /dev/null +++ b/changelog.d/2156.bugfix @@ -0,0 +1 @@ +Improve rendering of voice messages in the timeline in large displays diff --git a/features/analytics/api/src/main/kotlin/io/element/android/features/analytics/api/preferences/AnalyticsPreferencesView.kt b/features/analytics/api/src/main/kotlin/io/element/android/features/analytics/api/preferences/AnalyticsPreferencesView.kt index 9678068a3c..c9820c6556 100644 --- a/features/analytics/api/src/main/kotlin/io/element/android/features/analytics/api/preferences/AnalyticsPreferencesView.kt +++ b/features/analytics/api/src/main/kotlin/io/element/android/features/analytics/api/preferences/AnalyticsPreferencesView.kt @@ -25,8 +25,8 @@ import io.element.android.features.analytics.api.AnalyticsOptInEvents import io.element.android.features.analytics.api.R import io.element.android.libraries.designsystem.components.LINK_TAG import io.element.android.libraries.designsystem.components.list.ListItemContent -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.text.buildAnnotatedStringWithStyledPart import io.element.android.libraries.designsystem.theme.components.ListItem import io.element.android.libraries.designsystem.theme.components.ListSupportingText diff --git a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInNode.kt b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInNode.kt index 480ccfa512..368efa856c 100644 --- a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInNode.kt +++ b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInNode.kt @@ -37,7 +37,6 @@ class AnalyticsOptInNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: AnalyticsOptInPresenter, ) : Node(buildContext, plugins = plugins) { - private fun onClickTerms(activity: Activity, darkTheme: Boolean) { activity.openUrlInChromeCustomTab(null, darkTheme, AnalyticsConfig.POLICY_LINK) } diff --git a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInPresenter.kt b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInPresenter.kt index 3cd2203dbe..43a8304674 100644 --- a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInPresenter.kt +++ b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInPresenter.kt @@ -30,7 +30,6 @@ class AnalyticsOptInPresenter @Inject constructor( private val buildMeta: BuildMeta, private val analyticsService: AnalyticsService, ) : Presenter { - @Composable override fun present(): AnalyticsOptInState { val localCoroutineScope = rememberCoroutineScope() diff --git a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInStateProvider.kt b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInStateProvider.kt index 544e4a5649..a66ad2a176 100644 --- a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInStateProvider.kt +++ b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInStateProvider.kt @@ -19,8 +19,7 @@ package io.element.android.features.analytics.impl import androidx.compose.ui.tooling.preview.PreviewParameterProvider import javax.inject.Inject -open class AnalyticsOptInStateProvider @Inject constructor( -) : PreviewParameterProvider { +open class AnalyticsOptInStateProvider @Inject constructor() : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( aAnalyticsOptInState(), diff --git a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/preferences/DefaultAnalyticsPreferencesPresenter.kt b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/preferences/DefaultAnalyticsPreferencesPresenter.kt index 8b46ff3fa3..d095dddc5f 100644 --- a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/preferences/DefaultAnalyticsPreferencesPresenter.kt +++ b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/preferences/DefaultAnalyticsPreferencesPresenter.kt @@ -36,7 +36,6 @@ class DefaultAnalyticsPreferencesPresenter @Inject constructor( private val analyticsService: AnalyticsService, private val buildMeta: BuildMeta, ) : AnalyticsPreferencesPresenter { - @Composable override fun present(): AnalyticsPreferencesState { val localCoroutineScope = rememberCoroutineScope() diff --git a/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInPresenterTest.kt b/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInPresenterTest.kt index 3dcb4674df..94a87abf6b 100644 --- a/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInPresenterTest.kt +++ b/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInPresenterTest.kt @@ -30,7 +30,6 @@ import org.junit.Rule import org.junit.Test class AnalyticsOptInPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() @@ -70,4 +69,3 @@ class AnalyticsOptInPresenterTest { } } } - diff --git a/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/preferences/AnalyticsPreferencesPresenterTest.kt b/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/preferences/AnalyticsPreferencesPresenterTest.kt index 494468c530..24e17db20e 100644 --- a/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/preferences/AnalyticsPreferencesPresenterTest.kt +++ b/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/preferences/AnalyticsPreferencesPresenterTest.kt @@ -29,7 +29,6 @@ import org.junit.Rule import org.junit.Test class AnalyticsPreferencesPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() @@ -82,4 +81,3 @@ class AnalyticsPreferencesPresenterTest { } } } - diff --git a/features/call/src/main/kotlin/io/element/android/features/call/CallForegroundService.kt b/features/call/src/main/kotlin/io/element/android/features/call/CallForegroundService.kt index 7396ff34ab..5f12ace0ac 100644 --- a/features/call/src/main/kotlin/io/element/android/features/call/CallForegroundService.kt +++ b/features/call/src/main/kotlin/io/element/android/features/call/CallForegroundService.kt @@ -30,7 +30,6 @@ import io.element.android.features.call.ui.ElementCallActivity import io.element.android.libraries.designsystem.utils.CommonDrawables class CallForegroundService : Service() { - companion object { fun start(context: Context) { val intent = Intent(context, CallForegroundService::class.java) diff --git a/features/call/src/main/kotlin/io/element/android/features/call/data/WidgetMessage.kt b/features/call/src/main/kotlin/io/element/android/features/call/data/WidgetMessage.kt index 2b38f6850b..0d9be99cf7 100644 --- a/features/call/src/main/kotlin/io/element/android/features/call/data/WidgetMessage.kt +++ b/features/call/src/main/kotlin/io/element/android/features/call/data/WidgetMessage.kt @@ -28,11 +28,11 @@ data class WidgetMessage( @SerialName("action") val action: Action, @SerialName("data") val data: JsonElement? = null, ) { - @Serializable enum class Direction { @SerialName("fromWidget") FromWidget, + @SerialName("toWidget") ToWidget } @@ -41,6 +41,7 @@ data class WidgetMessage( enum class Action { @SerialName("im.vector.hangup") HangUp, + @SerialName("send_event") SendEvent, } diff --git a/features/call/src/main/kotlin/io/element/android/features/call/ui/CallScreenPresenter.kt b/features/call/src/main/kotlin/io/element/android/features/call/ui/CallScreenPresenter.kt index d43557c6b1..1ec75ed47d 100644 --- a/features/call/src/main/kotlin/io/element/android/features/call/ui/CallScreenPresenter.kt +++ b/features/call/src/main/kotlin/io/element/android/features/call/ui/CallScreenPresenter.kt @@ -63,7 +63,6 @@ class CallScreenPresenter @AssistedInject constructor( private val matrixClientsProvider: MatrixClientProvider, private val appCoroutineScope: CoroutineScope, ) : Presenter { - @AssistedFactory interface Factory { fun create(callType: CallType, navigator: CallScreenNavigator): CallScreenPresenter @@ -224,6 +223,4 @@ class CallScreenPresenter @AssistedInject constructor( navigator.close() widgetDriver?.close() } - } - diff --git a/features/call/src/main/kotlin/io/element/android/features/call/utils/CallIntentDataParser.kt b/features/call/src/main/kotlin/io/element/android/features/call/utils/CallIntentDataParser.kt index 0814216745..c9f4532951 100644 --- a/features/call/src/main/kotlin/io/element/android/features/call/utils/CallIntentDataParser.kt +++ b/features/call/src/main/kotlin/io/element/android/features/call/utils/CallIntentDataParser.kt @@ -20,7 +20,6 @@ import android.net.Uri import javax.inject.Inject class CallIntentDataParser @Inject constructor() { - private val validHttpSchemes = sequenceOf("https") fun parse(data: String?): String? { diff --git a/features/call/src/main/kotlin/io/element/android/features/call/utils/WebViewWidgetMessageInterceptor.kt b/features/call/src/main/kotlin/io/element/android/features/call/utils/WebViewWidgetMessageInterceptor.kt index e11529f068..c4676ac9dc 100644 --- a/features/call/src/main/kotlin/io/element/android/features/call/utils/WebViewWidgetMessageInterceptor.kt +++ b/features/call/src/main/kotlin/io/element/android/features/call/utils/WebViewWidgetMessageInterceptor.kt @@ -28,7 +28,6 @@ import kotlinx.coroutines.flow.MutableSharedFlow class WebViewWidgetMessageInterceptor( private val webView: WebView, ) : WidgetMessageInterceptor { - companion object { // We call both the WebMessageListener and the JavascriptInterface objects in JS with this // 'listenerName' so they can both receive the data from the WebView when @@ -56,7 +55,7 @@ class WebViewWidgetMessageInterceptor( || !message.data.response && message.data.api == "fromWidget") { let json = JSON.stringify(event.data) ${"console.log('message sent: ' + json);".takeIf { BuildConfig.DEBUG } } - ${LISTENER_NAME}.postMessage(json); + $LISTENER_NAME.postMessage(json); } else { ${"console.log('message received (ignored): ' + JSON.stringify(event.data));".takeIf { BuildConfig.DEBUG } } } diff --git a/features/call/src/main/kotlin/io/element/android/features/call/utils/WidgetMessageSerializer.kt b/features/call/src/main/kotlin/io/element/android/features/call/utils/WidgetMessageSerializer.kt index 5ed9db028c..aa7424e9a3 100644 --- a/features/call/src/main/kotlin/io/element/android/features/call/utils/WidgetMessageSerializer.kt +++ b/features/call/src/main/kotlin/io/element/android/features/call/utils/WidgetMessageSerializer.kt @@ -20,7 +20,6 @@ import io.element.android.features.call.data.WidgetMessage import kotlinx.serialization.json.Json object WidgetMessageSerializer { - private val coder = Json { ignoreUnknownKeys = true } fun deserialize(message: String): Result { diff --git a/features/call/src/test/kotlin/io/element/android/features/call/MapWebkitPermissionsTest.kt b/features/call/src/test/kotlin/io/element/android/features/call/MapWebkitPermissionsTest.kt index fa60b348b1..6a24698efa 100644 --- a/features/call/src/test/kotlin/io/element/android/features/call/MapWebkitPermissionsTest.kt +++ b/features/call/src/test/kotlin/io/element/android/features/call/MapWebkitPermissionsTest.kt @@ -23,7 +23,6 @@ import io.element.android.features.call.ui.mapWebkitPermissions import org.junit.Test class MapWebkitPermissionsTest { - @Test fun `given Webkit's RESOURCE_AUDIO_CAPTURE returns Android's RECORD_AUDIO permission`() { val permission = mapWebkitPermissions(arrayOf(PermissionRequest.RESOURCE_AUDIO_CAPTURE)) diff --git a/features/call/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt b/features/call/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt index 2b5365118e..8eecc94e78 100644 --- a/features/call/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt +++ b/features/call/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt @@ -48,7 +48,6 @@ import org.junit.Rule import org.junit.Test class CallScreenPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() @@ -191,7 +190,7 @@ class CallScreenPresenterTest { moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - consumeItemsUntilTimeout() + consumeItemsUntilTimeout() assertThat(matrixClient.syncService().syncState.value).isEqualTo(SyncState.Running) diff --git a/features/call/src/test/kotlin/io/element/android/features/call/ui/FakeCallScreenNavigator.kt b/features/call/src/test/kotlin/io/element/android/features/call/ui/FakeCallScreenNavigator.kt index 498503cb15..23e0cf9027 100644 --- a/features/call/src/test/kotlin/io/element/android/features/call/ui/FakeCallScreenNavigator.kt +++ b/features/call/src/test/kotlin/io/element/android/features/call/ui/FakeCallScreenNavigator.kt @@ -17,10 +17,10 @@ package io.element.android.features.call.ui class FakeCallScreenNavigator : CallScreenNavigator { - var closeCalled = false - private set + var closeCalled = false + private set - override fun close() { - closeCalled = true - } + override fun close() { + closeCalled = true } +} diff --git a/features/call/src/test/kotlin/io/element/android/features/call/utils/CallIntentDataParserTest.kt b/features/call/src/test/kotlin/io/element/android/features/call/utils/CallIntentDataParserTest.kt index eb8e756182..093b6aab3b 100644 --- a/features/call/src/test/kotlin/io/element/android/features/call/utils/CallIntentDataParserTest.kt +++ b/features/call/src/test/kotlin/io/element/android/features/call/utils/CallIntentDataParserTest.kt @@ -24,7 +24,6 @@ import java.net.URLEncoder @RunWith(RobolectricTestRunner::class) class CallIntentDataParserTest { - private val callIntentDataParser = CallIntentDataParser() @Test @@ -117,7 +116,7 @@ class CallIntentDataParserTest { @Test fun `Element Call url with url extra param appPrompt gets url extracted`() { doTest( - url = "${VALID_CALL_URL_WITH_PARAM}&appPrompt=true", + url = "$VALID_CALL_URL_WITH_PARAM&appPrompt=true", expectedResult = "$VALID_CALL_URL_WITH_PARAM#?$EXTRA_PARAMS" ) } @@ -125,7 +124,7 @@ class CallIntentDataParserTest { @Test fun `Element Call url with url extra param in fragment appPrompt gets url extracted`() { doTest( - url = "${VALID_CALL_URL_WITH_PARAM}#?appPrompt=true", + url = "$VALID_CALL_URL_WITH_PARAM#?appPrompt=true", expectedResult = "$VALID_CALL_URL_WITH_PARAM#?appPrompt=false&confineToRoom=true" ) } @@ -133,7 +132,7 @@ class CallIntentDataParserTest { @Test fun `Element Call url with url extra param in fragment appPrompt and other gets url extracted`() { doTest( - url = "${VALID_CALL_URL_WITH_PARAM}#?appPrompt=true&otherParam=maybe", + url = "$VALID_CALL_URL_WITH_PARAM#?appPrompt=true&otherParam=maybe", expectedResult = "$VALID_CALL_URL_WITH_PARAM#?appPrompt=false&otherParam=maybe&confineToRoom=true" ) } @@ -141,7 +140,7 @@ class CallIntentDataParserTest { @Test fun `Element Call url with url extra param confineToRoom gets url extracted`() { doTest( - url = "${VALID_CALL_URL_WITH_PARAM}&confineToRoom=false", + url = "$VALID_CALL_URL_WITH_PARAM&confineToRoom=false", expectedResult = "$VALID_CALL_URL_WITH_PARAM#?$EXTRA_PARAMS" ) } @@ -149,7 +148,7 @@ class CallIntentDataParserTest { @Test fun `Element Call url with url extra param in fragment confineToRoom gets url extracted`() { doTest( - url = "${VALID_CALL_URL_WITH_PARAM}#?confineToRoom=false", + url = "$VALID_CALL_URL_WITH_PARAM#?confineToRoom=false", expectedResult = "$VALID_CALL_URL_WITH_PARAM#?confineToRoom=true&appPrompt=false" ) } @@ -157,7 +156,7 @@ class CallIntentDataParserTest { @Test fun `Element Call url with url extra param in fragment confineToRoom and more gets url extracted`() { doTest( - url = "${VALID_CALL_URL_WITH_PARAM}#?confineToRoom=false&otherParam=maybe", + url = "$VALID_CALL_URL_WITH_PARAM#?confineToRoom=false&otherParam=maybe", expectedResult = "$VALID_CALL_URL_WITH_PARAM#?confineToRoom=true&otherParam=maybe&appPrompt=false" ) } @@ -165,7 +164,7 @@ class CallIntentDataParserTest { @Test fun `Element Call url with url fragment gets url extracted`() { doTest( - url = "${VALID_CALL_URL_WITH_PARAM}#fragment", + url = "$VALID_CALL_URL_WITH_PARAM#fragment", expectedResult = "$VALID_CALL_URL_WITH_PARAM#fragment?$EXTRA_PARAMS" ) } @@ -173,7 +172,7 @@ class CallIntentDataParserTest { @Test fun `Element Call url with url fragment with params gets url extracted`() { doTest( - url = "${VALID_CALL_URL_WITH_PARAM}#fragment?otherParam=maybe", + url = "$VALID_CALL_URL_WITH_PARAM#fragment?otherParam=maybe", expectedResult = "$VALID_CALL_URL_WITH_PARAM#fragment?otherParam=maybe&$EXTRA_PARAMS" ) } @@ -181,7 +180,7 @@ class CallIntentDataParserTest { @Test fun `Element Call url with url fragment with other params gets url extracted`() { doTest( - url = "${VALID_CALL_URL_WITH_PARAM}#?otherParam=maybe", + url = "$VALID_CALL_URL_WITH_PARAM#?otherParam=maybe", expectedResult = "$VALID_CALL_URL_WITH_PARAM#?otherParam=maybe&$EXTRA_PARAMS" ) } @@ -189,7 +188,7 @@ class CallIntentDataParserTest { @Test fun `Element Call url with empty fragment`() { doTest( - url = "${VALID_CALL_URL_WITH_PARAM}#", + url = "$VALID_CALL_URL_WITH_PARAM#", expectedResult = "$VALID_CALL_URL_WITH_PARAM#?$EXTRA_PARAMS" ) } @@ -197,7 +196,7 @@ class CallIntentDataParserTest { @Test fun `Element Call url with empty fragment query`() { doTest( - url = "${VALID_CALL_URL_WITH_PARAM}#?", + url = "$VALID_CALL_URL_WITH_PARAM#?", expectedResult = "$VALID_CALL_URL_WITH_PARAM#?$EXTRA_PARAMS" ) } diff --git a/features/call/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt b/features/call/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt index f7f17d794d..50d8c54998 100644 --- a/features/call/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt +++ b/features/call/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt @@ -32,7 +32,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class DefaultCallWidgetProviderTest { - @Test fun `getWidget - fails if the session does not exist`() = runTest { val provider = createProvider(matrixClientProvider = FakeMatrixClientProvider { Result.failure(Exception("Session not found")) }) diff --git a/features/call/src/test/kotlin/io/element/android/features/call/utils/FakeCallWidgetProvider.kt b/features/call/src/test/kotlin/io/element/android/features/call/utils/FakeCallWidgetProvider.kt index 69ae340648..27e47ee708 100644 --- a/features/call/src/test/kotlin/io/element/android/features/call/utils/FakeCallWidgetProvider.kt +++ b/features/call/src/test/kotlin/io/element/android/features/call/utils/FakeCallWidgetProvider.kt @@ -24,19 +24,18 @@ import io.element.android.libraries.matrix.test.widget.FakeWidgetDriver class FakeCallWidgetProvider( private val widgetDriver: FakeWidgetDriver = FakeWidgetDriver(), private val url: String = "https://call.element.io", - ) : CallWidgetProvider { +) : CallWidgetProvider { + var getWidgetCalled = false + private set - var getWidgetCalled = false - private set - - override suspend fun getWidget( - sessionId: SessionId, - roomId: RoomId, - clientId: String, - languageTag: String?, - theme: String? - ): Result> { - getWidgetCalled = true - return Result.success(widgetDriver to url) - } + override suspend fun getWidget( + sessionId: SessionId, + roomId: RoomId, + clientId: String, + languageTag: String?, + theme: String? + ): Result> { + getWidgetCalled = true + return Result.success(widgetDriver to url) } +} diff --git a/features/call/src/test/kotlin/io/element/android/features/call/utils/FakeWidgetMessageInterceptor.kt b/features/call/src/test/kotlin/io/element/android/features/call/utils/FakeWidgetMessageInterceptor.kt index 6e36dfff81..5a312250b0 100644 --- a/features/call/src/test/kotlin/io/element/android/features/call/utils/FakeWidgetMessageInterceptor.kt +++ b/features/call/src/test/kotlin/io/element/android/features/call/utils/FakeWidgetMessageInterceptor.kt @@ -19,15 +19,15 @@ package io.element.android.features.call.utils import kotlinx.coroutines.flow.MutableSharedFlow class FakeWidgetMessageInterceptor : WidgetMessageInterceptor { - val sentMessages = mutableListOf() + val sentMessages = mutableListOf() - override val interceptedMessages = MutableSharedFlow(extraBufferCapacity = 1) + override val interceptedMessages = MutableSharedFlow(extraBufferCapacity = 1) - override fun sendMessage(message: String) { - sentMessages += message - } + override fun sendMessage(message: String) { + sentMessages += message + } - fun givenInterceptedMessage(message: String) { - interceptedMessages.tryEmit(message) - } + fun givenInterceptedMessage(message: String) { + interceptedMessages.tryEmit(message) } +} diff --git a/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt b/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt index 18e0e4e28f..f4941f160e 100644 --- a/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt +++ b/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt @@ -23,7 +23,6 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomId interface CreateRoomEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder interface NodeBuilder { fun callback(callback: Callback): NodeBuilder diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/ConfigureRoomFlowNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/ConfigureRoomFlowNode.kt index 78fbc6f77a..b97f57b9a5 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/ConfigureRoomFlowNode.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/ConfigureRoomFlowNode.kt @@ -52,7 +52,6 @@ class ConfigureRoomFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins ) { - private val component by lazy { parent!!.bindings().createRoomComponentBuilder().build() } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/CreateRoomDataStore.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/CreateRoomDataStore.kt index f79284d082..9a7d68709b 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/CreateRoomDataStore.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/CreateRoomDataStore.kt @@ -33,7 +33,6 @@ import javax.inject.Inject class CreateRoomDataStore @Inject constructor( val selectedUserListDataStore: UserListDataStore, ) { - private val createRoomConfigFlow: MutableStateFlow = MutableStateFlow(CreateRoomConfig()) private var cachedAvatarUri: Uri? = null set(value) { diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/CreateRoomFlowNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/CreateRoomFlowNode.kt index 643987e0a3..825ef9f025 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/CreateRoomFlowNode.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/CreateRoomFlowNode.kt @@ -50,7 +50,6 @@ class CreateRoomFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins ) { - sealed interface NavTarget : Parcelable { @Parcelize data object Root : NavTarget diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt index 34e514be3e..4c234a4fa3 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt @@ -27,13 +27,10 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class DefaultCreateRoomEntryPoint @Inject constructor() : CreateRoomEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): CreateRoomEntryPoint.NodeBuilder { - val plugins = ArrayList() return object : CreateRoomEntryPoint.NodeBuilder { - override fun callback(callback: CreateRoomEntryPoint.Callback): CreateRoomEntryPoint.NodeBuilder { plugins += callback return this diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt index c941c41958..d3b6e91db6 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt @@ -35,7 +35,6 @@ class DefaultStartDMAction @Inject constructor( private val matrixClient: MatrixClient, private val analyticsService: AnalyticsService, ) : StartDMAction { - override suspend fun execute(userId: UserId, actionState: MutableState>) { actionState.value = AsyncAction.Loading when (val result = matrixClient.startDM(userId)) { diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleNode.kt index 1b4bd9ac8d..f00f10905d 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleNode.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleNode.kt @@ -33,7 +33,6 @@ class AddPeopleNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: AddPeoplePresenter, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun onContinue() } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeoplePresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeoplePresenter.kt index e3f90943c1..1bc8eb12f9 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeoplePresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeoplePresenter.kt @@ -31,7 +31,6 @@ class AddPeoplePresenter @Inject constructor( userRepository: UserRepository, dataStore: CreateRoomDataStore, ) : Presenter { - private val userListPresenter = userListPresenterFactory.create( UserListPresenterArgs( selectionMode = SelectionMode.Multiple, @@ -45,4 +44,3 @@ class AddPeoplePresenter @Inject constructor( return userListPresenter.present() } } - diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleUserListStateProvider.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleUserListStateProvider.kt index 79969eeac7..9c7991de6b 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleUserListStateProvider.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleUserListStateProvider.kt @@ -37,11 +37,13 @@ open class AddPeopleUserListStateProvider : PreviewParameterProvider - UserSearchResult(matrixUser, index % 2 == 0) - } - .toImmutableList()), + searchResults = SearchBarResultState.Results( + aMatrixUserList() + .mapIndexed { index, matrixUser -> + UserSearchResult(matrixUser, index % 2 == 0) + } + .toImmutableList() + ), selectedUsers = aListOfSelectedUsers(), isSearchActive = true, selectionMode = SelectionMode.Multiple, diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/RoomPrivacyOption.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/RoomPrivacyOption.kt index a7f7c80912..1bfd1567c2 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/RoomPrivacyOption.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/RoomPrivacyOption.kt @@ -29,14 +29,14 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.features.createroom.impl.configureroom.RoomPrivacyItem import io.element.android.features.createroom.impl.configureroom.roomPrivacyItems -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.RadioButton import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme @Composable fun RoomPrivacyOption( @@ -85,7 +85,8 @@ fun RoomPrivacyOption( .align(Alignment.CenterVertically) .size(48.dp), selected = isSelected, - onClick = null // null recommended for accessibility with screenreaders + // null recommended for accessibility with screenreaders + onClick = null ) } } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomNode.kt index b09863b205..1d3499f743 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomNode.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomNode.kt @@ -38,7 +38,6 @@ class ConfigureRoomNode @AssistedInject constructor( private val presenter: ConfigureRoomPresenter, private val analyticsService: AnalyticsService, ) : Node(buildContext, plugins = plugins) { - init { lifecycle.subscribe( onResume = { diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt index 6e077c6e50..dbb8f1775a 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt @@ -57,7 +57,6 @@ class ConfigureRoomPresenter @Inject constructor( private val analyticsService: AnalyticsService, permissionsPresenterFactory: PermissionsPresenter.Factory, ) : Presenter { - private val cameraPermissionPresenter: PermissionsPresenter = permissionsPresenterFactory.create(android.Manifest.permission.CAMERA) private var pendingPermissionRequest = false diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/RoomPrivacyItem.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/RoomPrivacyItem.kt index ea5ce36192..0dee7e5828 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/RoomPrivacyItem.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/RoomPrivacyItem.kt @@ -19,8 +19,8 @@ package io.element.android.features.createroom.impl.configureroom import androidx.annotation.DrawableRes import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource -import io.element.android.libraries.designsystem.icons.CompoundDrawables import io.element.android.features.createroom.impl.R +import io.element.android.libraries.designsystem.icons.CompoundDrawables import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/di/CreateRoomComponent.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/di/CreateRoomComponent.kt index f6f50f67bf..159f959869 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/di/CreateRoomComponent.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/di/CreateRoomComponent.kt @@ -26,7 +26,6 @@ import io.element.android.libraries.di.SingleIn @SingleIn(CreateRoomScope::class) @MergeSubcomponent(CreateRoomScope::class) interface CreateRoomComponent : NodeFactoriesBindings { - @Subcomponent.Builder interface Builder { fun build(): CreateRoomComponent diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootNode.kt index 4cb4ea21e6..14b0061f53 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootNode.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootNode.kt @@ -42,7 +42,6 @@ class CreateRoomRootNode @AssistedInject constructor( private val analyticsService: AnalyticsService, private val inviteFriendsUseCase: InviteFriendsUseCase, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun onCreateNewRoom() fun onStartChatSuccess(roomId: RoomId) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt index 50f5a14c44..594a87c327 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt @@ -41,7 +41,6 @@ class CreateRoomRootPresenter @Inject constructor( private val startDMAction: StartDMAction, private val buildMeta: BuildMeta, ) : Presenter { - private val presenter = presenterFactory.create( UserListPresenterArgs( selectionMode = SelectionMode.Single, diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt index 59980b7561..723c650793 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt @@ -19,7 +19,6 @@ package io.element.android.features.createroom.impl.root import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.features.createroom.impl.userlist.aUserListState import io.element.android.libraries.architecture.AsyncAction - import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.libraries.usersearch.api.UserSearchResult diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt index 59decf9129..24b1145e2e 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt @@ -106,7 +106,7 @@ fun CreateRoomRootView( onRetry = { state.userListState.selectedUsers.firstOrNull() ?.let { state.eventSink(CreateRoomRootEvents.StartDM(it)) } - // Cancel start DM if there is no more selected user (should not happen) + // Cancel start DM if there is no more selected user (should not happen) ?: state.eventSink(CreateRoomRootEvents.CancelStartDM) }, onErrorDismiss = { state.eventSink(CreateRoomRootEvents.CancelStartDM) }, diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenter.kt index a843570fe5..a210a6debd 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenter.kt @@ -42,7 +42,6 @@ class DefaultUserListPresenter @AssistedInject constructor( @Assisted val userRepository: UserRepository, @Assisted val userListDataStore: UserListDataStore, ) : UserListPresenter { - @AssistedFactory @ContributesBinding(SessionScope::class) interface DefaultUserListFactory : UserListPresenter.Factory { diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListDataStore.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListDataStore.kt index 8de7be3114..5aae1a5a14 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListDataStore.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListDataStore.kt @@ -22,7 +22,6 @@ import kotlinx.coroutines.flow.MutableStateFlow import javax.inject.Inject class UserListDataStore @Inject constructor() { - private val selectedUsers: MutableStateFlow> = MutableStateFlow(emptyList()) fun selectUser(user: MatrixUser) { diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListPresenter.kt index e5d68a2e28..613d64ede7 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListPresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/userlist/UserListPresenter.kt @@ -20,7 +20,6 @@ import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.usersearch.api.UserRepository interface UserListPresenter : Presenter { - interface Factory { fun create( args: UserListPresenterArgs, diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTests.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTests.kt index e325b026de..1285cf37b6 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTests.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTests.kt @@ -32,7 +32,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class DefaultStartDMActionTests { - @Test fun `when dm is found, assert state is updated with given room id`() = runTest { val matrixClient = FakeMatrixClient().apply { diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeoplePresenterTests.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeoplePresenterTests.kt index 968b2a1b57..0fa04f685f 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeoplePresenterTests.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeoplePresenterTests.kt @@ -31,7 +31,6 @@ import org.junit.Rule import org.junit.Test class AddPeoplePresenterTests { - @get:Rule val warmUpRule = WarmUpRule() @@ -57,4 +56,3 @@ class AddPeoplePresenterTests { } } } - diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenterTests.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenterTests.kt index 1834c0aee7..6baf998fcf 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenterTests.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenterTests.kt @@ -62,7 +62,6 @@ private const val AN_URI_FROM_GALLERY = "content://uri_from_gallery" @RunWith(RobolectricTestRunner::class) class ConfigureRoomPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() @@ -316,4 +315,3 @@ class ConfigureRoomPresenterTests { } } } - diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt index 63241a3a50..2c48300d3c 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt @@ -38,7 +38,6 @@ import org.junit.Rule import org.junit.Test class CreateRoomRootPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() @@ -80,7 +79,6 @@ class CreateRoomRootPresenterTests { awaitItem().also { state -> assertThat(state.startDmAction).isEqualTo(startDMSuccessResult) } - } } diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenterTests.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenterTests.kt index d1c82120b9..579bd175f5 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenterTests.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/DefaultUserListPresenterTests.kt @@ -33,7 +33,6 @@ import org.junit.Rule import org.junit.Test class DefaultUserListPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/FakeUserListPresenter.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/FakeUserListPresenter.kt index 45eb712dc1..b9e440f25e 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/FakeUserListPresenter.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/FakeUserListPresenter.kt @@ -19,7 +19,6 @@ package io.element.android.features.createroom.impl.userlist import androidx.compose.runtime.Composable class FakeUserListPresenter : UserListPresenter { - private var state = aUserListState() fun givenState(state: UserListState) { diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/FakeUserListPresenterFactory.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/FakeUserListPresenterFactory.kt index 07697ce458..aae4c297f8 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/FakeUserListPresenterFactory.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/userlist/FakeUserListPresenterFactory.kt @@ -21,7 +21,6 @@ import io.element.android.libraries.usersearch.api.UserRepository class FakeUserListPresenterFactory( private val fakeUserListPresenter: FakeUserListPresenter = FakeUserListPresenter() ) : UserListPresenter.Factory { - override fun create( args: UserListPresenterArgs, userRepository: UserRepository, diff --git a/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt b/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt index 9e96f68fc3..2fec589da8 100644 --- a/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt +++ b/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt @@ -25,7 +25,6 @@ import io.element.android.libraries.matrix.test.A_ROOM_ID import kotlinx.coroutines.delay class FakeStartDMAction : StartDMAction { - private var executeResult: AsyncAction = AsyncAction.Success(A_ROOM_ID) fun givenExecuteResult(result: AsyncAction) { diff --git a/features/ftue/api/src/main/kotlin/io/element/android/features/ftue/api/FtueEntryPoint.kt b/features/ftue/api/src/main/kotlin/io/element/android/features/ftue/api/FtueEntryPoint.kt index 649a327f6e..186f2fe026 100644 --- a/features/ftue/api/src/main/kotlin/io/element/android/features/ftue/api/FtueEntryPoint.kt +++ b/features/ftue/api/src/main/kotlin/io/element/android/features/ftue/api/FtueEntryPoint.kt @@ -22,7 +22,6 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface FtueEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder interface NodeBuilder { diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt index 9c2f74f072..c89b1840af 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt @@ -27,12 +27,10 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class DefaultFtueEntryPoint @Inject constructor() : FtueEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): FtueEntryPoint.NodeBuilder { val plugins = ArrayList() return object : FtueEntryPoint.NodeBuilder { - override fun callback(callback: FtueEntryPoint.Callback): FtueEntryPoint.NodeBuilder { plugins += callback return this diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt index 5a47e196df..5840671b6f 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt @@ -70,7 +70,6 @@ class FtueFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins, ) { - sealed interface NavTarget : Parcelable { @Parcelize data object Placeholder : NavTarget diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenNode.kt index a4c5d16bc4..7c4257c422 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenNode.kt @@ -32,7 +32,6 @@ class MigrationScreenNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: MigrationScreenPresenter, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun onMigrationFinished() } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenView.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenView.kt index bf93aa2272..d2674e3f98 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenView.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenView.kt @@ -50,5 +50,6 @@ fun MigrationScreenView( internal fun MigrationViewPreview() = ElementPreview { MigrationScreenView( migrationState = MigrationScreenState(isMigrating = true), - onMigrationFinished = {}) + onMigrationFinished = {} + ) } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/SharedPrefsMigrationScreenStore.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/SharedPrefsMigrationScreenStore.kt index c39a535e7d..8ece45c08c 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/SharedPrefsMigrationScreenStore.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/SharedPrefsMigrationScreenStore.kt @@ -29,7 +29,6 @@ import javax.inject.Inject class SharedPrefsMigrationScreenStore @Inject constructor( @DefaultPreferences private val sharedPreferences: SharedPreferences, ) : MigrationScreenStore { - override fun isMigrationScreenNeeded(sessionId: SessionId): Boolean { return sharedPreferences.getBoolean(sessionId.toKey(), false).not() } @@ -58,4 +57,3 @@ class SharedPrefsMigrationScreenStore @Inject constructor( private const val IS_MIGRATION_SCREEN_SHOWN_PREFIX = "is_migration_screen_shown_" } } - diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInNode.kt index 5d514af8a9..6135d350dc 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInNode.kt @@ -34,7 +34,6 @@ class NotificationsOptInNode @AssistedInject constructor( @Assisted plugins: List, presenterFactory: NotificationsOptInPresenter.Factory, ) : Node(buildContext, plugins = plugins) { - interface Callback : NodeInputs { fun onNotificationsOptInFinished() } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenter.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenter.kt index 5d3ac6c88f..52a8daab81 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenter.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenter.kt @@ -40,7 +40,6 @@ class NotificationsOptInPresenter @AssistedInject constructor( private val permissionStateProvider: PermissionStateProvider, private val buildVersionSdkIntProvider: BuildVersionSdkIntProvider, ) : Presenter { - @AssistedFactory interface Factory { fun create(callback: NotificationsOptInNode.Callback): NotificationsOptInPresenter @@ -77,8 +76,8 @@ class NotificationsOptInPresenter @AssistedInject constructor( } LaunchedEffect(notificationsPermissionsState) { - if (notificationsPermissionsState.permissionGranted - || notificationsPermissionsState.permissionAlreadyDenied) { + if (notificationsPermissionsState.permissionGranted || + notificationsPermissionsState.permissionAlreadyDenied) { callback.onNotificationsOptInFinished() } } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/state/DefaultFtueState.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/state/DefaultFtueState.kt index b1abee90bc..212919a691 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/state/DefaultFtueState.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/state/DefaultFtueState.kt @@ -40,7 +40,7 @@ import javax.inject.Inject @ContributesBinding(SessionScope::class) class DefaultFtueState @Inject constructor( private val sdkVersionProvider: BuildVersionSdkIntProvider, - private val coroutineScope: CoroutineScope, + coroutineScope: CoroutineScope, private val analyticsService: AnalyticsService, private val welcomeScreenState: WelcomeScreenState, private val migrationScreenStore: MigrationScreenStore, @@ -48,7 +48,6 @@ class DefaultFtueState @Inject constructor( private val lockScreenService: LockScreenService, private val matrixClient: MatrixClient, ) : FtueState { - override val shouldDisplayFlow = MutableStateFlow(isAnyStepIncomplete()) override suspend fun reset() { @@ -68,21 +67,31 @@ class DefaultFtueState @Inject constructor( fun getNextStep(currentStep: FtueStep? = null): FtueStep? = when (currentStep) { - null -> if (shouldDisplayMigrationScreen()) FtueStep.MigrationScreen else getNextStep( + null -> if (shouldDisplayMigrationScreen()) { FtueStep.MigrationScreen - ) - FtueStep.MigrationScreen -> if (shouldDisplayWelcomeScreen()) FtueStep.WelcomeScreen else getNextStep( + } else { + getNextStep(FtueStep.MigrationScreen) + } + FtueStep.MigrationScreen -> if (shouldDisplayWelcomeScreen()) { FtueStep.WelcomeScreen - ) - FtueStep.WelcomeScreen -> if (shouldAskNotificationPermissions()) FtueStep.NotificationsOptIn else getNextStep( + } else { + getNextStep(FtueStep.WelcomeScreen) + } + FtueStep.WelcomeScreen -> if (shouldAskNotificationPermissions()) { FtueStep.NotificationsOptIn - ) - FtueStep.NotificationsOptIn -> if (shouldDisplayLockscreenSetup()) FtueStep.LockscreenSetup else getNextStep( + } else { + getNextStep(FtueStep.NotificationsOptIn) + } + FtueStep.NotificationsOptIn -> if (shouldDisplayLockscreenSetup()) { FtueStep.LockscreenSetup - ) - FtueStep.LockscreenSetup -> if (needsAnalyticsOptIn()) FtueStep.AnalyticsOptIn else getNextStep( + } else { + getNextStep(FtueStep.LockscreenSetup) + } + FtueStep.LockscreenSetup -> if (needsAnalyticsOptIn()) { FtueStep.AnalyticsOptIn - ) + } else { + getNextStep(FtueStep.AnalyticsOptIn) + } FtueStep.AnalyticsOptIn -> null } @@ -115,7 +124,9 @@ class DefaultFtueState @Inject constructor( val isPermissionDenied = runBlocking { permissionStateProvider.isPermissionDenied(permission).first() } val isPermissionGranted = permissionStateProvider.isPermissionGranted(permission) !isPermissionGranted && !isPermissionDenied - } else false + } else { + false + } } private fun shouldDisplayLockscreenSetup(): Boolean { diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/WelcomeNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/WelcomeNode.kt index f4e0d9f640..2f2d838269 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/WelcomeNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/WelcomeNode.kt @@ -33,7 +33,6 @@ class WelcomeNode @AssistedInject constructor( @Assisted plugins: List, private val buildMeta: BuildMeta, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun onContinueClicked() } @@ -50,5 +49,4 @@ class WelcomeNode @AssistedInject constructor( modifier = modifier ) } - } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/AndroidWelcomeScreenState.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/AndroidWelcomeScreenState.kt index 6dbef47285..00629d7d03 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/AndroidWelcomeScreenState.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/AndroidWelcomeScreenState.kt @@ -29,7 +29,6 @@ import javax.inject.Inject class AndroidWelcomeScreenState @Inject constructor( @DefaultPreferences private val sharedPreferences: SharedPreferences, ) : WelcomeScreenState { - companion object { private const val IS_WELCOME_SCREEN_SHOWN = "is_welcome_screen_shown" } diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueStateTests.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueStateTests.kt index 37e61ebf55..44df35ca05 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueStateTests.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueStateTests.kt @@ -39,7 +39,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class DefaultFtueStateTests { - @Test fun `given any check being false, should display flow is true`() = runTest { val coroutineScope = CoroutineScope(coroutineContext + SupervisorJob()) @@ -130,7 +129,8 @@ class DefaultFtueStateTests { FtueStep.NotificationsOptIn, FtueStep.LockscreenSetup, FtueStep.AnalyticsOptIn, - null, // Final state + // Final state + null, ) // Cleanup @@ -204,7 +204,8 @@ class DefaultFtueStateTests { permissionStateProvider: FakePermissionStateProvider = FakePermissionStateProvider(permissionGranted = false), matrixClient: MatrixClient = FakeMatrixClient(), lockScreenService: LockScreenService = FakeLockScreenService(), - sdkIntVersion: Int = Build.VERSION_CODES.TIRAMISU, // First version where notification permission is required + // First version where notification permission is required + sdkIntVersion: Int = Build.VERSION_CODES.TIRAMISU, ) = DefaultFtueState( sdkVersionProvider = FakeBuildVersionSdkIntProvider(sdkIntVersion), coroutineScope = coroutineScope, diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenPresenterTest.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenPresenterTest.kt index ac56718e06..44dcba6e00 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenPresenterTest.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenPresenterTest.kt @@ -31,7 +31,6 @@ import org.junit.Rule import org.junit.Test class MigrationScreenPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenterTests.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenterTests.kt index e5c4d37423..4d8ae554d7 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenterTests.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenterTests.kt @@ -39,7 +39,6 @@ import org.junit.Rule import org.junit.Test class NotificationsOptInPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/welcome/state/FakeWelcomeState.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/welcome/state/FakeWelcomeState.kt index e38d49db1c..6b4d4b2287 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/welcome/state/FakeWelcomeState.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/welcome/state/FakeWelcomeState.kt @@ -17,7 +17,6 @@ package io.element.android.features.ftue.impl.welcome.state class FakeWelcomeState : WelcomeScreenState { - private var isWelcomeScreenNeeded = true override fun isWelcomeScreenNeeded(): Boolean { diff --git a/features/invitelist/api/src/main/kotlin/io/element/android/features/invitelist/api/InviteListEntryPoint.kt b/features/invitelist/api/src/main/kotlin/io/element/android/features/invitelist/api/InviteListEntryPoint.kt index 790aac39be..95d2c94f50 100644 --- a/features/invitelist/api/src/main/kotlin/io/element/android/features/invitelist/api/InviteListEntryPoint.kt +++ b/features/invitelist/api/src/main/kotlin/io/element/android/features/invitelist/api/InviteListEntryPoint.kt @@ -23,7 +23,6 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomId interface InviteListEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder interface NodeBuilder { @@ -37,4 +36,3 @@ interface InviteListEntryPoint : FeatureEntryPoint { fun onInviteAccepted(roomId: RoomId) } } - diff --git a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/DefaultInviteListEntryPoint.kt b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/DefaultInviteListEntryPoint.kt index ef98bc0019..5c2fc780d7 100644 --- a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/DefaultInviteListEntryPoint.kt +++ b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/DefaultInviteListEntryPoint.kt @@ -27,12 +27,10 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class DefaultInviteListEntryPoint @Inject constructor() : InviteListEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): InviteListEntryPoint.NodeBuilder { val plugins = ArrayList() return object : InviteListEntryPoint.NodeBuilder { - override fun callback(callback: InviteListEntryPoint.Callback): InviteListEntryPoint.NodeBuilder { plugins += callback return this diff --git a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/DefaultSeenInvitesStore.kt b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/DefaultSeenInvitesStore.kt index 848a4e2ba7..1564b2fa83 100644 --- a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/DefaultSeenInvitesStore.kt +++ b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/DefaultSeenInvitesStore.kt @@ -34,12 +34,10 @@ import javax.inject.Inject private val Context.dataStore: DataStore by preferencesDataStore(name = "elementx_seeninvites") private val seenInvitesKey = stringSetPreferencesKey("seenInvites") - @ContributesBinding(SessionScope::class) class DefaultSeenInvitesStore @Inject constructor( @ApplicationContext context: Context ) : SeenInvitesStore { - private val store = context.dataStore override fun seenRoomIds(): Flow> = @@ -55,5 +53,4 @@ class DefaultSeenInvitesStore @Inject constructor( prefs[seenInvitesKey] = roomIds.map { it.value }.toSet() } } - } diff --git a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListEvents.kt b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListEvents.kt index 38055b7090..ae4b74bb2c 100644 --- a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListEvents.kt +++ b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListEvents.kt @@ -22,9 +22,9 @@ sealed interface InviteListEvents { data class AcceptInvite(val invite: InviteListInviteSummary) : InviteListEvents data class DeclineInvite(val invite: InviteListInviteSummary) : InviteListEvents - data object ConfirmDeclineInvite: InviteListEvents - data object CancelDeclineInvite: InviteListEvents + data object ConfirmDeclineInvite : InviteListEvents + data object CancelDeclineInvite : InviteListEvents - data object DismissAcceptError: InviteListEvents - data object DismissDeclineError: InviteListEvents + data object DismissAcceptError : InviteListEvents + data object DismissDeclineError : InviteListEvents } diff --git a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListNode.kt b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListNode.kt index 2f67f83994..31d742e4e7 100644 --- a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListNode.kt +++ b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListNode.kt @@ -35,7 +35,6 @@ class InviteListNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: InviteListPresenter, ) : Node(buildContext, plugins = plugins) { - private fun onBackClicked() { plugins().forEach { it.onBackClicked() } } diff --git a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListPresenter.kt b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListPresenter.kt index 403f312a22..f2dd87ff05 100644 --- a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListPresenter.kt +++ b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListPresenter.kt @@ -52,7 +52,6 @@ class InviteListPresenter @Inject constructor( private val analyticsService: AnalyticsService, private val notificationDrawerManager: NotificationDrawerManager, ) : Presenter { - @Composable override fun present(): InviteListState { val invites by client @@ -159,25 +158,27 @@ class InviteListPresenter @Inject constructor( private fun RoomSummary.Filled.toInviteSummary(seen: Boolean) = details.run { val i = inviter - val avatarData = if (isDirect && i != null) + val avatarData = if (isDirect && i != null) { AvatarData( id = i.userId.value, name = i.displayName, url = i.avatarUrl, size = AvatarSize.RoomInviteItem, ) - else + } else { AvatarData( id = roomId.value, name = name, url = avatarURLString, size = AvatarSize.RoomInviteItem, ) + } - val alias = if (isDirect) + val alias = if (isDirect) { inviter?.userId?.value - else + } else { canonicalAlias + } InviteListInviteSummary( roomId = roomId, @@ -186,18 +187,20 @@ class InviteListPresenter @Inject constructor( roomAvatarData = avatarData, isDirect = isDirect, isNew = !seen, - sender = if (isDirect) null else inviter?.run { - InviteSender( - userId = userId, - displayName = displayName ?: "", - avatarData = AvatarData( - id = userId.value, - name = displayName, - url = avatarUrl, - size = AvatarSize.InviteSender, - ), - ) - }, + sender = inviter + ?.takeIf { !isDirect } + ?.run { + InviteSender( + userId = userId, + displayName = displayName ?: "", + avatarData = AvatarData( + id = userId.value, + name = displayName, + url = avatarUrl, + size = AvatarSize.InviteSender, + ), + ) + }, ) } } diff --git a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListView.kt b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListView.kt index 3a804de7bc..28ecf4938d 100644 --- a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListView.kt +++ b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListView.kt @@ -69,15 +69,17 @@ fun InviteListView( ) if (state.declineConfirmationDialog is InviteDeclineConfirmationDialog.Visible) { - val contentResource = if (state.declineConfirmationDialog.isDirect) + val contentResource = if (state.declineConfirmationDialog.isDirect) { R.string.screen_invites_decline_direct_chat_message - else + } else { R.string.screen_invites_decline_chat_message + } - val titleResource = if (state.declineConfirmationDialog.isDirect) + val titleResource = if (state.declineConfirmationDialog.isDirect) { R.string.screen_invites_decline_direct_chat_title - else + } else { R.string.screen_invites_decline_chat_title + } ConfirmationDialog( content = stringResource(contentResource, state.declineConfirmationDialog.name), diff --git a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/components/InviteSummaryRow.kt b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/components/InviteSummaryRow.kt index 193b78f594..7c3c1ad1db 100644 --- a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/components/InviteSummaryRow.kt +++ b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/components/InviteSummaryRow.kt @@ -39,6 +39,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.features.invitelist.impl.R import io.element.android.features.invitelist.impl.model.InviteListInviteSummary import io.element.android.features.invitelist.impl.model.InviteListInviteSummaryProvider @@ -51,7 +52,6 @@ import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.ButtonSize import io.element.android.libraries.designsystem.theme.components.OutlinedButton import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings private val minHeight = 72.dp diff --git a/features/invitelist/test/src/main/kotlin/io/element/android/features/invitelist/test/FakeSeenInvitesStore.kt b/features/invitelist/test/src/main/kotlin/io/element/android/features/invitelist/test/FakeSeenInvitesStore.kt index 486d3fb4a8..94b232b2ac 100644 --- a/features/invitelist/test/src/main/kotlin/io/element/android/features/invitelist/test/FakeSeenInvitesStore.kt +++ b/features/invitelist/test/src/main/kotlin/io/element/android/features/invitelist/test/FakeSeenInvitesStore.kt @@ -22,7 +22,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow class FakeSeenInvitesStore : SeenInvitesStore { - private val existing = MutableStateFlow(emptySet()) private var provided: Set? = null diff --git a/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomView.kt b/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomView.kt index 22b5fcfd03..0006ae1251 100644 --- a/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomView.kt +++ b/features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomView.kt @@ -27,8 +27,8 @@ import androidx.compose.ui.unit.dp import io.element.android.libraries.designsystem.components.ProgressDialog import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.ui.strings.CommonStrings diff --git a/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplTest.kt b/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplTest.kt index a508b4f448..677df53dc8 100644 --- a/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplTest.kt +++ b/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplTest.kt @@ -38,7 +38,6 @@ import org.junit.Rule import org.junit.Test class LeaveRoomPresenterImplTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/leaveroom/test/src/main/kotlin/io/element/android/features/leaveroom/fake/FakeLeaveRoomPresenter.kt b/features/leaveroom/test/src/main/kotlin/io/element/android/features/leaveroom/fake/FakeLeaveRoomPresenter.kt index 0aac5a0d74..297522825c 100644 --- a/features/leaveroom/test/src/main/kotlin/io/element/android/features/leaveroom/fake/FakeLeaveRoomPresenter.kt +++ b/features/leaveroom/test/src/main/kotlin/io/element/android/features/leaveroom/fake/FakeLeaveRoomPresenter.kt @@ -22,7 +22,6 @@ import io.element.android.features.leaveroom.api.LeaveRoomPresenter import io.element.android.features.leaveroom.api.LeaveRoomState class FakeLeaveRoomPresenter : LeaveRoomPresenter { - val events = mutableListOf() private fun handleEvent(event: LeaveRoomEvent) { diff --git a/features/location/api/build.gradle.kts b/features/location/api/build.gradle.kts index bef0e77b67..4f1d588069 100644 --- a/features/location/api/build.gradle.kts +++ b/features/location/api/build.gradle.kts @@ -45,14 +45,16 @@ android { name = "maptiler_light_map_id", value = System.getenv("ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID") ?: readLocalProperty("services.maptiler.lightMapId") - ?: "basic-v2" // fall back to maptiler's default light map. + // fall back to maptiler's default light map. + ?: "basic-v2" ) resValue( type = "string", name = "maptiler_dark_map_id", value = System.getenv("ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID") ?: readLocalProperty("services.maptiler.darkMapId") - ?: "basic-v2-dark" // fall back to maptiler's default dark map. + // fall back to maptiler's default dark map. + ?: "basic-v2-dark" ) } } diff --git a/features/location/api/src/main/kotlin/io/element/android/features/location/api/ShowLocationEntryPoint.kt b/features/location/api/src/main/kotlin/io/element/android/features/location/api/ShowLocationEntryPoint.kt index 3c429dfa63..7553033084 100644 --- a/features/location/api/src/main/kotlin/io/element/android/features/location/api/ShowLocationEntryPoint.kt +++ b/features/location/api/src/main/kotlin/io/element/android/features/location/api/ShowLocationEntryPoint.kt @@ -22,7 +22,6 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.architecture.NodeInputs interface ShowLocationEntryPoint : FeatureEntryPoint { - data class Inputs(val location: Location, val description: String?) : NodeInputs fun createNode(parentNode: Node, buildContext: BuildContext, inputs: Inputs): Node diff --git a/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/MapTilerStaticMapUrlBuilder.kt b/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/MapTilerStaticMapUrlBuilder.kt index 927e890248..14a97ff086 100644 --- a/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/MapTilerStaticMapUrlBuilder.kt +++ b/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/MapTilerStaticMapUrlBuilder.kt @@ -29,7 +29,6 @@ internal class MapTilerStaticMapUrlBuilder( private val lightMapId: String, private val darkMapId: String, ) : StaticMapUrlBuilder { - constructor(context: Context) : this( apiKey = context.apiKey, lightMapId = context.mapId(darkMode = false), @@ -65,7 +64,7 @@ internal class MapTilerStaticMapUrlBuilder( // image smaller than the available space in pixels. // The resulting image will have to be scaled to fit the available space in order // to keep the perceived content size constant at the expense of sharpness. - return "$MAPTILER_BASE_URL/${mapId}/static/${lon},${lat},${finalZoom}/${finalWidth}x${finalHeight}${scale}.webp?key=${apiKey}&attribution=bottomleft" + return "$MAPTILER_BASE_URL/$mapId/static/$lon,$lat,$finalZoom/${finalWidth}x${finalHeight}$scale.webp?key=$apiKey&attribution=bottomleft" } } diff --git a/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/MapTilerTileServerStyleUriBuilder.kt b/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/MapTilerTileServerStyleUriBuilder.kt index 6972e45330..a3d86850c5 100644 --- a/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/MapTilerTileServerStyleUriBuilder.kt +++ b/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/MapTilerTileServerStyleUriBuilder.kt @@ -25,7 +25,6 @@ internal class MapTilerTileServerStyleUriBuilder( private val lightMapId: String, private val darkMapId: String, ) : TileServerStyleUriBuilder { - constructor(context: Context) : this( apiKey = context.apiKey, lightMapId = context.mapId(darkMode = false), @@ -34,6 +33,6 @@ internal class MapTilerTileServerStyleUriBuilder( override fun build(darkMode: Boolean): String { val mapId = if (darkMode) darkMapId else lightMapId - return "${MAPTILER_BASE_URL}/${mapId}/style.json?key=${apiKey}" + return "$MAPTILER_BASE_URL/$mapId/style.json?key=$apiKey" } } diff --git a/features/location/api/src/test/kotlin/io/element/android/features/location/api/LocationKtTest.kt b/features/location/api/src/test/kotlin/io/element/android/features/location/api/LocationKtTest.kt index f3d1f72f22..4bbf7f89fa 100644 --- a/features/location/api/src/test/kotlin/io/element/android/features/location/api/LocationKtTest.kt +++ b/features/location/api/src/test/kotlin/io/element/android/features/location/api/LocationKtTest.kt @@ -20,7 +20,6 @@ import com.google.common.truth.Truth.assertThat import org.junit.Test internal class LocationKtTest { - @Test fun `parseGeoUri - returns null for invalid urls`() { assertThat(Location.fromGeoUri("")).isNull() @@ -78,7 +77,7 @@ internal class LocationKtTest { @Test fun `encode geoUri - returns geoUri from a Location`() { - assertThat(Location(1.0,2.0,3.0f).toGeoUri()) + assertThat(Location(1.0, 2.0, 3.0f).toGeoUri()) .isEqualTo("geo:1.0,2.0;u=3.0") } } diff --git a/features/location/api/src/test/kotlin/io/element/android/features/location/api/internal/MapTilerStaticMapUrlBuilderTest.kt b/features/location/api/src/test/kotlin/io/element/android/features/location/api/internal/MapTilerStaticMapUrlBuilderTest.kt index c359777ee7..ad17677909 100644 --- a/features/location/api/src/test/kotlin/io/element/android/features/location/api/internal/MapTilerStaticMapUrlBuilderTest.kt +++ b/features/location/api/src/test/kotlin/io/element/android/features/location/api/internal/MapTilerStaticMapUrlBuilderTest.kt @@ -20,7 +20,6 @@ import com.google.common.truth.Truth.assertThat import org.junit.Test class MapTilerStaticMapUrlBuilderTest { - private val builder = MapTilerStaticMapUrlBuilder( apiKey = "anApiKey", lightMapId = "aLightMapId", diff --git a/features/location/api/src/test/kotlin/io/element/android/features/location/api/internal/MapTilerTileServerStyleUriBuilderTest.kt b/features/location/api/src/test/kotlin/io/element/android/features/location/api/internal/MapTilerTileServerStyleUriBuilderTest.kt index abff83c582..045bbd0206 100644 --- a/features/location/api/src/test/kotlin/io/element/android/features/location/api/internal/MapTilerTileServerStyleUriBuilderTest.kt +++ b/features/location/api/src/test/kotlin/io/element/android/features/location/api/internal/MapTilerTileServerStyleUriBuilderTest.kt @@ -20,7 +20,6 @@ import com.google.common.truth.Truth.assertThat import org.junit.Test class MapTilerTileServerStyleUriBuilderTest { - private val builder = MapTilerTileServerStyleUriBuilder( apiKey = "anApiKey", lightMapId = "aLightMapId", diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/PermissionsPresenterImpl.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/PermissionsPresenterImpl.kt index 1a334212a2..7966640231 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/PermissionsPresenterImpl.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/PermissionsPresenterImpl.kt @@ -29,7 +29,6 @@ import io.element.android.libraries.di.AppScope class PermissionsPresenterImpl @AssistedInject constructor( @Assisted private val permissions: List ) : PermissionsPresenter { - @AssistedFactory @ContributesBinding(AppScope::class) interface Factory : PermissionsPresenter.Factory { diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationEntryPointImpl.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationEntryPointImpl.kt index 9edf195e28..fb5ff1c1c7 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationEntryPointImpl.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationEntryPointImpl.kt @@ -27,6 +27,7 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class SendLocationEntryPointImpl @Inject constructor() : SendLocationEntryPoint { override fun createNode( - parentNode: Node, buildContext: BuildContext + parentNode: Node, + buildContext: BuildContext ): SendLocationNode = parentNode.createNode(buildContext) } diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationNode.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationNode.kt index be4d3f0764..806c6f9e78 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationNode.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationNode.kt @@ -36,7 +36,6 @@ class SendLocationNode @AssistedInject constructor( private val presenter: SendLocationPresenter, analyticsService: AnalyticsService, ) : Node(buildContext, plugins = plugins) { - init { lifecycle.subscribe( onResume = { diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationPresenter.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationPresenter.kt index 94af55c01c..4268738e48 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationPresenter.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationPresenter.kt @@ -47,7 +47,6 @@ class SendLocationPresenter @Inject constructor( private val locationActions: LocationActions, private val buildMeta: BuildMeta, ) : Presenter { - private val permissionsPresenter = permissionsPresenterFactory.create(MapDefaults.permissions) @Composable @@ -55,8 +54,11 @@ class SendLocationPresenter @Inject constructor( val permissionsState: PermissionsState = permissionsPresenter.present() var mode: SendLocationState.Mode by remember { mutableStateOf( - if (permissionsState.isAnyGranted) SendLocationState.Mode.SenderLocation - else SendLocationState.Mode.PinLocation + if (permissionsState.isAnyGranted) { + SendLocationState.Mode.SenderLocation + } else { + SendLocationState.Mode.PinLocation + } ) } val appName by remember { derivedStateOf { buildMeta.applicationName } } diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationNode.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationNode.kt index 24094b03ca..610f0b9079 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationNode.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationNode.kt @@ -38,7 +38,6 @@ class ShowLocationNode @AssistedInject constructor( @Assisted buildContext: BuildContext, @Assisted plugins: List, ) : Node(buildContext, plugins = plugins) { - init { lifecycle.subscribe( onResume = { diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationPresenter.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationPresenter.kt index 150a314ce7..669731a27e 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationPresenter.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationPresenter.kt @@ -42,7 +42,6 @@ class ShowLocationPresenter @AssistedInject constructor( @Assisted private val location: Location, @Assisted private val description: String? ) : Presenter { - @AssistedFactory interface Factory { fun create(location: Location, description: String?): ShowLocationPresenter diff --git a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/actions/AndroidLocationActionsTest.kt b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/actions/AndroidLocationActionsTest.kt index a010d383a0..6cd7cf82ce 100644 --- a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/actions/AndroidLocationActionsTest.kt +++ b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/actions/AndroidLocationActionsTest.kt @@ -22,7 +22,6 @@ import org.junit.Test import java.net.URLEncoder internal class AndroidLocationActionsTest { - // We use an Android-native encoder in the actual app, switch to an equivalent JVM one for the tests private fun urlEncoder(input: String) = URLEncoder.encode(input, "US-ASCII") diff --git a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/actions/FakeLocationActions.kt b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/actions/FakeLocationActions.kt index 6fc3d51ae1..0c902c521e 100644 --- a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/actions/FakeLocationActions.kt +++ b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/actions/FakeLocationActions.kt @@ -19,7 +19,6 @@ package io.element.android.features.location.impl.common.actions import io.element.android.features.location.api.Location class FakeLocationActions : LocationActions { - var sharedLocation: Location? = null private set diff --git a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/permissions/PermissionsPresenterFake.kt b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/permissions/PermissionsPresenterFake.kt index dfeb18d4db..e79ac9e453 100644 --- a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/permissions/PermissionsPresenterFake.kt +++ b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/permissions/PermissionsPresenterFake.kt @@ -19,7 +19,6 @@ package io.element.android.features.location.impl.common.permissions import androidx.compose.runtime.Composable class PermissionsPresenterFake : PermissionsPresenter { - val events = mutableListOf() private fun handleEvent(event: PermissionsEvents) { diff --git a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/SendLocationPresenterTest.kt b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/SendLocationPresenterTest.kt index cfa52c4269..b6b469c44a 100644 --- a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/SendLocationPresenterTest.kt +++ b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/SendLocationPresenterTest.kt @@ -42,7 +42,6 @@ import org.junit.Rule import org.junit.Test class SendLocationPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() @@ -75,7 +74,6 @@ class SendLocationPresenterTest { moleculeFlow(RecompositionMode.Immediate) { sendLocationPresenter.present() }.test { - val initialState = awaitItem() assertThat(initialState.permissionDialog).isEqualTo(SendLocationState.Dialog.None) assertThat(initialState.mode).isEqualTo(SendLocationState.Mode.SenderLocation) @@ -102,7 +100,6 @@ class SendLocationPresenterTest { moleculeFlow(RecompositionMode.Immediate) { sendLocationPresenter.present() }.test { - val initialState = awaitItem() assertThat(initialState.permissionDialog).isEqualTo(SendLocationState.Dialog.None) assertThat(initialState.mode).isEqualTo(SendLocationState.Mode.SenderLocation) @@ -381,7 +378,9 @@ class SendLocationPresenterTest { ) fakeMessageComposerContext.apply { composerMode = MessageComposerMode.Edit( - eventId = null, defaultContent = "", transactionId = null + eventId = null, + defaultContent = "", + transactionId = null ) } @@ -427,7 +426,9 @@ class SendLocationPresenterTest { ) fakeMessageComposerContext.apply { composerMode = MessageComposerMode.Edit( - eventId = null, defaultContent = "", transactionId = null + eventId = null, + defaultContent = "", + transactionId = null ) } diff --git a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/show/ShowLocationPresenterTest.kt b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/show/ShowLocationPresenterTest.kt index 4db3755fbd..ff80a3935d 100644 --- a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/show/ShowLocationPresenterTest.kt +++ b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/show/ShowLocationPresenterTest.kt @@ -35,7 +35,6 @@ import org.junit.Rule import org.junit.Test class ShowLocationPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt b/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt index fb96895721..6a2fb0c72d 100644 --- a/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt +++ b/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt @@ -22,7 +22,6 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface LockScreenEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder interface NodeBuilder { diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt index 67182e4fff..5065cdc7f2 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt @@ -26,14 +26,11 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class DefaultLockScreenEntryPoint @Inject constructor() : LockScreenEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): LockScreenEntryPoint.NodeBuilder { - var innerTarget: LockScreenEntryPoint.Target = LockScreenEntryPoint.Target.Unlock val callbacks = mutableListOf() return object : LockScreenEntryPoint.NodeBuilder { - override fun callback(callback: LockScreenEntryPoint.Callback): LockScreenEntryPoint.NodeBuilder { callbacks += callback return this diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt index 96cf7a655b..b0b7ab75b3 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt @@ -57,25 +57,24 @@ class DefaultLockScreenService @Inject constructor( private val appForegroundStateService: AppForegroundStateService, private val biometricUnlockManager: BiometricUnlockManager, ) : LockScreenService { - - private val _lockScreenState = MutableStateFlow(LockScreenLockState.Unlocked) - override val lockState: StateFlow = _lockScreenState + private val _lockState = MutableStateFlow(LockScreenLockState.Unlocked) + override val lockState: StateFlow = _lockState private var lockJob: Job? = null init { pinCodeManager.addCallback(object : DefaultPinCodeManagerCallback() { override fun onPinCodeVerified() { - _lockScreenState.value = LockScreenLockState.Unlocked + _lockState.value = LockScreenLockState.Unlocked } override fun onPinCodeRemoved() { - _lockScreenState.value = LockScreenLockState.Unlocked + _lockState.value = LockScreenLockState.Unlocked } }) biometricUnlockManager.addCallback(object : DefaultBiometricUnlockCallback() { override fun onBiometricUnlockSuccess() { - _lockScreenState.value = LockScreenLockState.Unlocked + _lockState.value = LockScreenLockState.Unlocked coroutineScope.launch { lockScreenStore.resetCounter() } @@ -91,11 +90,10 @@ class DefaultLockScreenService @Inject constructor( */ private fun observeSessionsState() { sessionObserver.addListener(object : SessionListener { - override suspend fun onSessionCreated(userId: String) = Unit override suspend fun onSessionDeleted(userId: String) { - //TODO handle multi session at some point + // TODO handle multi session at some point pinCodeManager.deletePinCode() } }) @@ -135,7 +133,7 @@ class DefaultLockScreenService @Inject constructor( private fun CoroutineScope.lockIfNeeded(gracePeriod: Duration = Duration.ZERO) = launch { if (isPinSetup().first()) { delay(gracePeriod) - _lockScreenState.value = LockScreenLockState.Locked + _lockState.value = LockScreenLockState.Locked } } } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/LockScreenFlowNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/LockScreenFlowNode.kt index 76a967dfd7..8dd75fc65d 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/LockScreenFlowNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/LockScreenFlowNode.kt @@ -50,7 +50,6 @@ class LockScreenFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins, ) { - data class Inputs( val initialNavTarget: NavTarget = NavTarget.Unlock, ) : NodeInputs diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/BiometricUnlock.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/BiometricUnlock.kt index c7029421e8..3679840b9e 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/BiometricUnlock.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/BiometricUnlock.kt @@ -31,7 +31,6 @@ import java.security.InvalidKeyException import javax.crypto.Cipher interface BiometricUnlock { - interface Callback { fun onBiometricSetupError() fun onBiometricUnlockSuccess() @@ -62,7 +61,6 @@ class DefaultBiometricUnlock( private val keyAlias: String, private val callbacks: List ) : BiometricUnlock { - override val isActive: Boolean = true private lateinit var cryptoObject: CryptoObject @@ -105,7 +103,6 @@ private class AuthenticationCallback( private val callbacks: List, private val deferredAuthenticationResult: CompletableDeferred, ) : BiometricPrompt.AuthenticationCallback() { - override fun onAuthenticationError(errorCode: Int, errString: CharSequence) { super.onAuthenticationError(errorCode, errString) val biometricUnlockError = BiometricUnlockError(errorCode, errString.toString()) diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/BiometricUnlockManager.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/BiometricUnlockManager.kt index f7fe416f23..24cca2d46e 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/BiometricUnlockManager.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/BiometricUnlockManager.kt @@ -19,7 +19,6 @@ package io.element.android.features.lockscreen.impl.biometric import androidx.compose.runtime.Composable interface BiometricUnlockManager { - /** * If the device is secured for example with a pin, pattern or password. */ diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/DefaultBiometricUnlockManager.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/DefaultBiometricUnlockManager.kt index 2d3dd7146b..95951866f3 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/DefaultBiometricUnlockManager.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/DefaultBiometricUnlockManager.kt @@ -57,7 +57,6 @@ class DefaultBiometricUnlockManager @Inject constructor( private val secretKeyRepository: SecretKeyRepository, private val coroutineScope: CoroutineScope, ) : BiometricUnlockManager { - private val callbacks = CopyOnWriteArrayList() private val biometricManager = BiometricManager.from(context) private val keyguardManager: KeyguardManager = context.getSystemService()!! @@ -66,15 +65,15 @@ class DefaultBiometricUnlockManager @Inject constructor( * Returns true if a weak biometric method (i.e.: some face or iris unlock implementations) can be used. */ private val canUseWeakBiometricAuth: Boolean - get() = lockScreenConfig.isWeakBiometricsEnabled - && biometricManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_WEAK) == BiometricManager.BIOMETRIC_SUCCESS + get() = lockScreenConfig.isWeakBiometricsEnabled && + biometricManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_WEAK) == BiometricManager.BIOMETRIC_SUCCESS /** * Returns true if a strong biometric method (i.e.: fingerprint, some face or iris unlock implementations) can be used. */ private val canUseStrongBiometricAuth: Boolean - get() = lockScreenConfig.isStrongBiometricsEnabled - && biometricManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG) == BiometricManager.BIOMETRIC_SUCCESS + get() = lockScreenConfig.isStrongBiometricsEnabled && + biometricManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG) == BiometricManager.BIOMETRIC_SUCCESS /** * Returns true if any biometric method (weak or strong) can be used. diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/components/PinEntryTextField.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/components/PinEntryTextField.kt index f0d5942542..3c7a451bfc 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/components/PinEntryTextField.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/components/PinEntryTextField.kt @@ -34,12 +34,12 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.features.lockscreen.impl.pin.model.PinDigit import io.element.android.features.lockscreen.impl.pin.model.PinEntry import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.pinDigitBg -import io.element.android.compound.theme.ElementTheme @Composable fun PinEntryTextField( @@ -99,8 +99,7 @@ private fun PinDigitView( .size(48.dp) .then(appearanceModifier), contentAlignment = Alignment.Center, - - ) { + ) { if (digit is PinDigit.Filled) { val text = if (isSecured) { "•" @@ -112,7 +111,6 @@ private fun PinDigitView( style = ElementTheme.typography.fontHeadingMdBold ) } - } } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManager.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManager.kt index c08513c537..ee5b0ede5e 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManager.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManager.kt @@ -36,7 +36,6 @@ class DefaultPinCodeManager @Inject constructor( private val encryptionDecryptionService: EncryptionDecryptionService, private val lockScreenStore: LockScreenStore, ) : PinCodeManager { - private val callbacks = CopyOnWriteArrayList() override fun addCallback(callback: PinCodeManager.Callback) { diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/PinCodeManager.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/PinCodeManager.kt index ae3519759f..b197fa45ed 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/PinCodeManager.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/PinCodeManager.kt @@ -23,7 +23,6 @@ import kotlinx.coroutines.flow.Flow * Implementation should take care of encrypting the pin code and storing it. */ interface PinCodeManager { - /** * Callbacks for pin code management events. */ diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/model/PinEntry.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/model/PinEntry.kt index 96c3bec3ad..9be238c7ef 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/model/PinEntry.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/model/PinEntry.kt @@ -22,7 +22,6 @@ import kotlinx.collections.immutable.toPersistentList data class PinEntry( val digits: ImmutableList, ) { - companion object { fun createEmpty(size: Int): PinEntry { val digits = List(size) { PinDigit.Empty } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsFlowNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsFlowNode.kt index 1008ebdcf0..0890f38d1e 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsFlowNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsFlowNode.kt @@ -56,7 +56,6 @@ class LockScreenSettingsFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins, ) { - sealed interface NavTarget : Parcelable { @Parcelize data object Unknown : NavTarget @@ -72,7 +71,6 @@ class LockScreenSettingsFlowNode @AssistedInject constructor( } private val pinCodeManagerCallback = object : DefaultPinCodeManagerCallback() { - override fun onPinCodeRemoved() { navigateUp() } @@ -125,7 +123,6 @@ class LockScreenSettingsFlowNode @AssistedInject constructor( createNode(buildContext, plugins = listOf(callback)) } NavTarget.Unknown -> node(buildContext) { } - } } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsNode.kt index 96f5393483..edc50df50e 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsNode.kt @@ -33,7 +33,6 @@ class LockScreenSettingsNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: LockScreenSettingsPresenter, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun onChangePinClicked() } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenter.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenter.kt index b60b472f72..fbbe0442c1 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenter.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenter.kt @@ -39,7 +39,6 @@ class LockScreenSettingsPresenter @Inject constructor( private val biometricUnlockManager: BiometricUnlockManager, private val coroutineScope: CoroutineScope, ) : Presenter { - @Composable override fun present(): LockScreenSettingsState { val showRemovePinOption by produceState(initialValue = false) { diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsView.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsView.kt index 72ad733f4f..7c8634a078 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsView.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsView.kt @@ -20,6 +20,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter +import io.element.android.compound.theme.ElementTheme import io.element.android.features.lockscreen.impl.R import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory @@ -29,7 +30,6 @@ import io.element.android.libraries.designsystem.components.preferences.Preferen import io.element.android.libraries.designsystem.components.preferences.PreferenceText import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight -import io.element.android.compound.theme.ElementTheme @Composable fun LockScreenSettingsView( @@ -79,7 +79,8 @@ fun LockScreenSettingsView( }, onDismiss = { state.eventSink(LockScreenSettingsEvents.CancelRemovePin) - }) + } + ) } } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/LockScreenSetupFlowNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/LockScreenSetupFlowNode.kt index c9b96d76f2..430fc75805 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/LockScreenSetupFlowNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/LockScreenSetupFlowNode.kt @@ -52,7 +52,6 @@ class LockScreenSetupFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins, ) { - interface Callback : Plugin { fun onSetupDone() } @@ -70,7 +69,6 @@ class LockScreenSetupFlowNode @AssistedInject constructor( } private val pinCodeManagerCallback = object : DefaultPinCodeManagerCallback() { - override fun onPinCodeCreated() { backstack.newRoot(NavTarget.Biometric) } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricNode.kt index ae99730a0e..5d9f3742f7 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricNode.kt @@ -34,7 +34,6 @@ class SetupBiometricNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: SetupBiometricPresenter, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun onBiometricSetupDone() } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricPresenter.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricPresenter.kt index ff65a2c7aa..693a908d56 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricPresenter.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricPresenter.kt @@ -30,10 +30,8 @@ import javax.inject.Inject class SetupBiometricPresenter @Inject constructor( private val lockScreenStore: LockScreenStore, ) : Presenter { - @Composable override fun present(): SetupBiometricState { - var isBiometricSetupDone by remember { mutableStateOf(false) } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricView.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricView.kt index 8b2a4fce4f..8e7a326c90 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricView.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricView.kt @@ -97,4 +97,3 @@ internal fun SetupBiometricViewPreview(@PreviewParameter(SetupBiometricStateProv ) } } - diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinNode.kt index c159c4cc58..ddd12f65df 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinNode.kt @@ -32,7 +32,6 @@ class SetupPinNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: SetupPinPresenter, ) : Node(buildContext, plugins = plugins) { - @Composable override fun View(modifier: Modifier) { val state = presenter.present() diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinPresenter.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinPresenter.kt index d48e418a59..ff2bdc56db 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinPresenter.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinPresenter.kt @@ -43,7 +43,6 @@ class SetupPinPresenter @Inject constructor( private val buildMeta: BuildMeta, private val pinCodeManager: PinCodeManager, ) : Presenter { - @Composable override fun present(): SetupPinState { var choosePinEntry by remember { diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinStateProvider.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinStateProvider.kt index 582c27b5fe..d1820ea75d 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinStateProvider.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinStateProvider.kt @@ -41,7 +41,6 @@ open class SetupPinStateProvider : PreviewParameterProvider { choosePinEntry = PinEntry.createEmpty(4).fillWith("1111"), creationFailure = SetupPinFailure.PinBlacklisted ), - ) } @@ -58,4 +57,3 @@ fun aSetupPinState( appName = "Element", eventSink = {} ) - diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/validation/PinValidator.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/validation/PinValidator.kt index ca01aab61f..22e6275079 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/validation/PinValidator.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/validation/PinValidator.kt @@ -21,7 +21,6 @@ import io.element.android.features.lockscreen.impl.pin.model.PinEntry import javax.inject.Inject class PinValidator @Inject constructor(private val lockScreenConfig: LockScreenConfig) { - sealed interface Result { data object Valid : Result data class Invalid(val failure: SetupPinFailure) : Result diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/EncryptedPinCodeStorage.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/EncryptedPinCodeStorage.kt index d2a5ba4204..7e022029dc 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/EncryptedPinCodeStorage.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/EncryptedPinCodeStorage.kt @@ -42,5 +42,4 @@ interface EncryptedPinCodeStorage { * Returns whether the PIN code is stored or not. */ fun hasPinCode(): Flow - } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/LockScreenStore.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/LockScreenStore.kt index 77ce61d190..ca1ab96d85 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/LockScreenStore.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/LockScreenStore.kt @@ -19,7 +19,6 @@ package io.element.android.features.lockscreen.impl.storage import kotlinx.coroutines.flow.Flow interface LockScreenStore : EncryptedPinCodeStorage { - /** * Returns the remaining PIN code attempts. When this reaches 0 the PIN code access won't be available for some time. */ diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/PreferencesLockScreenStore.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/PreferencesLockScreenStore.kt index cfdf081986..b32ef8fd4c 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/PreferencesLockScreenStore.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/PreferencesLockScreenStore.kt @@ -42,7 +42,6 @@ class PreferencesLockScreenStore @Inject constructor( @ApplicationContext private val context: Context, private val lockScreenConfig: LockScreenConfig, ) : LockScreenStore { - private val pinCodeKey = stringPreferencesKey("encoded_pin_code") private val remainingAttemptsKey = intPreferencesKey("remaining_pin_code_attempts") private val biometricUnlockKey = booleanPreferencesKey("biometric_unlock_enabled") diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockHelper.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockHelper.kt index 72d29b4481..e1dd7f5be3 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockHelper.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockHelper.kt @@ -28,7 +28,6 @@ class PinUnlockHelper @Inject constructor( private val biometricUnlockManager: BiometricUnlockManager, private val pinCodeManager: PinCodeManager ) { - @Composable fun OnUnlockEffect(onUnlock: () -> Unit) { DisposableEffect(Unit) { diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockNode.kt index fbda73fd45..da6853a39c 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockNode.kt @@ -36,7 +36,6 @@ class PinUnlockNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: PinUnlockPresenter, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun onUnlock() } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenter.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenter.kt index 5fe7fdddde..aebf95aa37 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenter.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenter.kt @@ -45,7 +45,6 @@ class PinUnlockPresenter @Inject constructor( private val coroutineScope: CoroutineScope, private val pinUnlockHelper: PinUnlockHelper, ) : Presenter { - @Composable override fun present(): PinUnlockState { val pinEntryState = remember { diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockState.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockState.kt index ae381f7031..cfe371eb3f 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockState.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockState.kt @@ -38,9 +38,9 @@ data class PinUnlockState( } val biometricUnlockErrorMessage = when { - biometricUnlockResult is BiometricUnlock.AuthenticationResult.Failure - && biometricUnlockResult.error is BiometricUnlockError - && biometricUnlockResult.error.isAuthDisabledError -> { + biometricUnlockResult is BiometricUnlock.AuthenticationResult.Failure && + biometricUnlockResult.error is BiometricUnlockError && + biometricUnlockResult.error.isAuthDisabledError -> { biometricUnlockResult.error.message } else -> null diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockView.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockView.kt index 6c9fd2bb6e..ad4dc5da99 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockView.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockView.kt @@ -14,7 +14,6 @@ * limitations under the License. */ - package io.element.android.features.lockscreen.impl.unlock import androidx.compose.foundation.background @@ -51,6 +50,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.lifecycle.Lifecycle +import io.element.android.compound.theme.ElementTheme import io.element.android.features.lockscreen.impl.R import io.element.android.features.lockscreen.impl.components.PinEntryTextField import io.element.android.features.lockscreen.impl.pin.model.PinDigit @@ -68,7 +68,6 @@ import io.element.android.libraries.designsystem.theme.components.Surface import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TextButton import io.element.android.libraries.designsystem.utils.OnLifecycleEvent -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings @Composable @@ -378,4 +377,3 @@ internal fun PinUnlockDefaultViewPreview(@PreviewParameter(PinUnlockStateProvide ) } } - diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/keypad/PinKeypad.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/keypad/PinKeypad.kt index a72483b13e..6c51b10979 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/keypad/PinKeypad.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/keypad/PinKeypad.kt @@ -41,11 +41,11 @@ import androidx.compose.ui.unit.coerceAtMost import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.times +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.text.toSp import io.element.android.libraries.designsystem.theme.components.Icon -import io.element.android.compound.theme.ElementTheme import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf @@ -210,5 +210,3 @@ internal fun PinKeypadPreview() { } } } - - diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/biometric/FakeBiometricUnlockManager.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/biometric/FakeBiometricUnlockManager.kt index d26a90d305..c95752a6ec 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/biometric/FakeBiometricUnlockManager.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/biometric/FakeBiometricUnlockManager.kt @@ -20,7 +20,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember class FakeBiometricUnlockManager : BiometricUnlockManager { - override var isDeviceSecured: Boolean = true override var hasAvailableAuthenticator: Boolean = false diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManagerTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManagerTest.kt index d3af36d820..194d3e41c9 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManagerTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManagerTest.kt @@ -25,7 +25,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class DefaultPinCodeManagerTest { - private val lockScreenStore = InMemoryLockScreenStore() private val secretKeyRepository = SimpleSecretKeyRepository() private val encryptionDecryptionService = AESEncryptionDecryptionService() diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/model/PinEntryTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/model/PinEntryTest.kt index 38abb2d295..9276ce754f 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/model/PinEntryTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/model/PinEntryTest.kt @@ -20,7 +20,6 @@ import com.google.common.truth.Truth.assertThat import org.junit.Test class PinEntryTest { - @Test fun `when using fillWith with empty string ensure pin is empty`() { val pinEntry = PinEntry.createEmpty(4) diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/storage/InMemoryLockScreenStore.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/storage/InMemoryLockScreenStore.kt index 8f622acfe4..b888642e9b 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/storage/InMemoryLockScreenStore.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/storage/InMemoryLockScreenStore.kt @@ -23,7 +23,6 @@ import kotlinx.coroutines.flow.MutableStateFlow private const val DEFAULT_REMAINING_ATTEMPTS = 3 class InMemoryLockScreenStore : LockScreenStore { - private val hasPinCode = MutableStateFlow(false) private var pinCode: String? = null set(value) { diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenterTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenterTest.kt index bd99c09bbe..c3358c471c 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenterTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenterTest.kt @@ -32,7 +32,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class LockScreenSettingsPresenterTest { - @Test fun `present - remove pin flow`() = runTest { val presenter = createLockScreenSettingsPresenter(this) diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricPresenterTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricPresenterTest.kt index 3db9d246f9..ab4f99e5d7 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricPresenterTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricPresenterTest.kt @@ -27,7 +27,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class SetupBiometricPresenterTest { - @Test fun `present - allow flow`() = runTest { val lockScreenStore = InMemoryLockScreenStore() diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinPresenterTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinPresenterTest.kt index 7ec73116c2..36774d9ef4 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinPresenterTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinPresenterTest.kt @@ -37,7 +37,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class SetupPinPresenterTest { - private val blacklistedPin = "1234" private val halfCompletePin = "12" private val completePin = "1235" @@ -116,7 +115,7 @@ class SetupPinPresenterTest { } } - private fun SetupPinState.onPinEntryChanged(pinEntry: String){ + private fun SetupPinState.onPinEntryChanged(pinEntry: String) { eventSink(SetupPinEvents.OnPinEntryChanged(pinEntry, isConfirmationStep)) } diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenterTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenterTest.kt index 1c1451f9bf..c81f4f773d 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenterTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenterTest.kt @@ -37,7 +37,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class PinUnlockPresenterTest { - private val halfCompletePin = "12" private val completePin = "1235" diff --git a/features/lockscreen/test/src/main/kotlin/io/element/android/features/lockscreen/test/FakeLockScreenService.kt b/features/lockscreen/test/src/main/kotlin/io/element/android/features/lockscreen/test/FakeLockScreenService.kt index 11dc4ee20f..0e75b401a2 100644 --- a/features/lockscreen/test/src/main/kotlin/io/element/android/features/lockscreen/test/FakeLockScreenService.kt +++ b/features/lockscreen/test/src/main/kotlin/io/element/android/features/lockscreen/test/FakeLockScreenService.kt @@ -24,7 +24,6 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.map class FakeLockScreenService : LockScreenService { - private var isPinSetup = MutableStateFlow(false) private val _lockState: MutableStateFlow = MutableStateFlow(LockScreenLockState.Locked) override val lockState: StateFlow = _lockState diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt index a4290825fb..633fc43b5c 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt @@ -31,7 +31,6 @@ class DefaultLoginEntryPoint @Inject constructor() : LoginEntryPoint { val plugins = ArrayList() return object : LoginEntryPoint.NodeBuilder { - override fun params(params: LoginEntryPoint.Params): LoginEntryPoint.NodeBuilder { plugins += LoginFlowNode.Inputs(isAccountCreation = params.isAccountCreation) return this diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSource.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSource.kt index ea541285df..3fb4985c8d 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSource.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSource.kt @@ -25,8 +25,7 @@ import kotlinx.coroutines.flow.asStateFlow import javax.inject.Inject @SingleIn(AppScope::class) -class AccountProviderDataSource @Inject constructor( -) { +class AccountProviderDataSource @Inject constructor() { private val accountProvider: MutableStateFlow = MutableStateFlow( defaultAccountProvider ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt index 7184b2503c..6780d75774 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt @@ -50,9 +50,11 @@ fun AccountProviderView( modifier: Modifier = Modifier, onClick: () -> Unit, ) { - Column(modifier = modifier - .fillMaxWidth() - .clickable { onClick() }) { + Column( + modifier = modifier + .fillMaxWidth() + .clickable { onClick() } + ) { HorizontalDivider() Column( modifier = Modifier diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt index f360afbae2..685c04b41f 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt @@ -36,7 +36,6 @@ class ChangeServerPresenter @Inject constructor( private val authenticationService: MatrixAuthenticationService, private val accountProviderDataSource: AccountProviderDataSource, ) : Presenter { - @Composable override fun present(): ChangeServerState { val localCoroutineScope = rememberCoroutineScope() diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerView.kt index c0fe52dacd..132003eafc 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerView.kt @@ -54,9 +54,11 @@ fun ChangeServerView( onLearnMoreClicked = { onLearnMoreClicked() eventSink.invoke(ChangeServerEvents.ClearError) - }, onDismiss = { - eventSink.invoke(ChangeServerEvents.ClearError) - }) + }, + onDismiss = { + eventSink.invoke(ChangeServerEvents.ClearError) + } + ) } } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/OidcUrlParser.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/OidcUrlParser.kt index 487df70253..8c8c895acd 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/OidcUrlParser.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/OidcUrlParser.kt @@ -25,16 +25,16 @@ import javax.inject.Inject * TODO Find documentation about the format. */ class OidcUrlParser @Inject constructor() { - - // When user press button "Cancel", we get the url: - // `io.element:/callback?error=access_denied&state=IFF1UETGye2ZA8pO` - // On success, we get: - // `io.element:/callback?state=IFF1UETGye2ZA8pO&code=y6X1GZeqA3xxOWcTeShgv8nkgFJXyzWB` /** * Return a OidcAction, or null if the url is not a OidcUrl. + * Note: + * When user press button "Cancel", we get the url: + * `io.element:/callback?error=access_denied&state=IFF1UETGye2ZA8pO` + * On success, we get: + * `io.element:/callback?state=IFF1UETGye2ZA8pO&code=y6X1GZeqA3xxOWcTeShgv8nkgFJXyzWB` */ fun parse(url: String): OidcAction? { - if (url.startsWith(OidcConfig.redirectUri).not()) return null + if (url.startsWith(OidcConfig.REDIRECT_URI).not()) return null if (url.contains("error=access_denied")) return OidcAction.GoBack if (url.contains("code=")) return OidcAction.Success(url) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/webview/OidcEvents.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/webview/OidcEvents.kt index ae0a912ba6..9d2f945e25 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/webview/OidcEvents.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/webview/OidcEvents.kt @@ -20,6 +20,6 @@ import io.element.android.features.login.api.oidc.OidcAction sealed interface OidcEvents { data object Cancel : OidcEvents - data class OidcActionEvent(val oidcAction: OidcAction): OidcEvents + data class OidcActionEvent(val oidcAction: OidcAction) : OidcEvents data object ClearError : OidcEvents } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/webview/OidcNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/webview/OidcNode.kt index dd16b5e57b..5cd7cf0c3b 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/webview/OidcNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/webview/OidcNode.kt @@ -35,7 +35,6 @@ class OidcNode @AssistedInject constructor( @Assisted plugins: List, presenterFactory: OidcPresenter.Factory, ) : Node(buildContext, plugins = plugins) { - data class Inputs( val oidcDetails: OidcDetails, ) : NodeInputs diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/webview/OidcPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/webview/OidcPresenter.kt index 0a6d999871..3f10ba256a 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/webview/OidcPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/oidc/webview/OidcPresenter.kt @@ -36,7 +36,6 @@ class OidcPresenter @AssistedInject constructor( @Assisted private val oidcDetails: OidcDetails, private val authenticationService: MatrixAuthenticationService, ) : Presenter { - @AssistedFactory interface Factory { fun create(oidcDetails: OidcDetails): OidcPresenter diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt index b1ccd8e684..2504d9675e 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt @@ -38,7 +38,6 @@ class HomeserverResolver @Inject constructor( private val dispatchers: CoroutineDispatchers, private val wellknownRequest: WellknownRequest, ) { - suspend fun resolve(userInput: String): Flow> = flow { val flowContext = currentCoroutineContext() val trimmedUserInput = userInput.trim() @@ -90,9 +89,9 @@ class HomeserverResolver @Inject constructor( if (data.contains(".")) { // TLD detected? } else { - add("${data}.org") - add("${data}.com") - add("${data}.io") + add("$data.org") + add("$data.com") + add("$data.io") } // Always try what the user has entered add(data) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/network/WellKnown.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/network/WellKnown.kt index 63b6e7d189..44a3d7858e 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/network/WellKnown.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/network/WellKnown.kt @@ -41,10 +41,8 @@ import kotlinx.serialization.Serializable data class WellKnown( @SerialName("m.homeserver") val homeServer: WellKnownBaseConfig? = null, - @SerialName("m.identity_server") val identityServer: WellKnownBaseConfig? = null, - @SerialName("org.matrix.msc3575.proxy") val slidingSyncProxy: WellKnownSlidingSyncConfig? = null, ) { diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/network/WellKnownBaseConfig.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/network/WellKnownBaseConfig.kt index 87b86736fa..e7eb1d983f 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/network/WellKnownBaseConfig.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/network/WellKnownBaseConfig.kt @@ -30,6 +30,6 @@ import kotlinx.serialization.Serializable */ @Serializable data class WellKnownBaseConfig( - @SerialName("base_url") - val baseURL: String? = null + @SerialName("base_url") + val baseURL: String? = null ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/network/WellKnownSlidingSyncConfig.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/network/WellKnownSlidingSyncConfig.kt index 98c712d9ac..063dc6f7b4 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/network/WellKnownSlidingSyncConfig.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/network/WellKnownSlidingSyncConfig.kt @@ -21,6 +21,6 @@ import kotlinx.serialization.Serializable @Serializable data class WellKnownSlidingSyncConfig( - @SerialName("url") - val url: String? = null, + @SerialName("url") + val url: String? = null, ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderNode.kt index 45bf4489b5..66025a2f1e 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderNode.kt @@ -35,7 +35,6 @@ class ChangeAccountProviderNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: ChangeAccountProviderPresenter, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun onDone() fun onOtherClicked() diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt index 96fc115cfa..54ed4c65c0 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt @@ -26,7 +26,6 @@ import javax.inject.Inject class ChangeAccountProviderPresenter @Inject constructor( private val changeServerPresenter: ChangeServerPresenter, ) : Presenter { - @Composable override fun present(): ChangeAccountProviderState { val changeServerState = changeServerPresenter.present() diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderNode.kt index 7cef986013..8ba488d9f4 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderNode.kt @@ -38,7 +38,6 @@ class ConfirmAccountProviderNode @AssistedInject constructor( @Assisted plugins: List, presenterFactory: ConfirmAccountProviderPresenter.Factory, ) : Node(buildContext, plugins = plugins) { - data class Inputs( val isAccountCreation: Boolean, ) : NodeInputs diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenter.kt index 82c11047a3..27aec75739 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenter.kt @@ -46,7 +46,6 @@ class ConfirmAccountProviderPresenter @AssistedInject constructor( private val defaultOidcActionFlow: DefaultOidcActionFlow, private val defaultLoginUserStory: DefaultLoginUserStory, ) : Presenter { - data class Params( val isAccountCreation: Boolean, ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordNode.kt index cb5542d2eb..f444c7a7dc 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordNode.kt @@ -33,7 +33,6 @@ class LoginPasswordNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: LoginPasswordPresenter, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun onWaitListError(loginFormState: LoginFormState) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt index 9d7bfde0fa..dd109d5ec4 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt @@ -39,7 +39,6 @@ class LoginPasswordPresenter @Inject constructor( private val accountProviderDataSource: AccountProviderDataSource, private val defaultLoginUserStory: DefaultLoginUserStory, ) : Presenter { - @Composable override fun present(): LoginPasswordState { val localCoroutineScope = rememberCoroutineScope() diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordState.kt index d17c44a671..503e73706f 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordState.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordState.kt @@ -39,7 +39,6 @@ data class LoginFormState( val login: String, val password: String ) : Parcelable { - companion object { val Default = LoginFormState("", "") } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordView.kt index b49fe6cf00..2a6a752154 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordView.kt @@ -220,7 +220,9 @@ private fun LoginForm( Icon(imageVector = CompoundIcons.Close, contentDescription = stringResource(CommonStrings.action_clear)) } } - } else null, + } else { + null + }, ) var passwordVisible by remember { mutableStateOf(false) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderNode.kt index 7178a105f6..834d0400da 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderNode.kt @@ -35,7 +35,6 @@ class SearchAccountProviderNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: SearchAccountProviderPresenter, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun onDone() } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt index 247624316d..e9f177d62a 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt @@ -38,7 +38,6 @@ class SearchAccountProviderPresenter @Inject constructor( private val homeserverResolver: HomeserverResolver, private val changeServerPresenter: ChangeServerPresenter, ) : Presenter { - @Composable override fun present(): SearchAccountProviderState { var userInput by rememberSaveable { diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderView.kt index 245c874ae2..2a39680300 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderView.kt @@ -144,7 +144,9 @@ fun SearchAccountProviderView( ) } } - } else null, + } else { + null + }, supportingText = { Text(text = stringResource(id = R.string.screen_account_provider_form_notice), color = MaterialTheme.colorScheme.secondary) } @@ -199,7 +201,8 @@ private fun HomeserverData.toAccountProvider(): AccountProvider { return AccountProvider( url = homeserverUrl, subtitle = if (isMatrixOrg) stringResource(id = R.string.screen_change_account_provider_matrix_org_subtitle) else null, - isPublic = isMatrixOrg, // There is no need to know for other servers right now + // There is no need to know for other servers right now + isPublic = isMatrixOrg, isMatrixOrg = isMatrixOrg, isValid = isWellknownValid, supportSlidingSync = supportSlidingSync, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListNode.kt index 24b5f271a0..e27d5f5608 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListNode.kt @@ -36,7 +36,6 @@ class WaitListNode @AssistedInject constructor( @Assisted plugins: List, presenterFactory: WaitListPresenter.Factory, ) : Node(buildContext, plugins = plugins) { - data class Inputs(val loginFormState: LoginFormState) : NodeInputs private val inputs: Inputs = inputs() diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenter.kt index 7432111b22..16549a8741 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenter.kt @@ -42,7 +42,6 @@ class WaitListPresenter @AssistedInject constructor( private val authenticationService: MatrixAuthenticationService, private val defaultLoginUserStory: DefaultLoginUserStory, ) : Presenter { - @AssistedFactory interface Factory { fun create(loginFormState: LoginFormState): WaitListPresenter diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt index e56d1b5bca..e8a3bddc43 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt @@ -140,7 +140,6 @@ private fun OverallContent( .padding(bottom = 8.dp), ) } - } } diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt index 0615b94ce6..f8518f6033 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt @@ -32,7 +32,6 @@ import org.junit.Rule import org.junit.Test class ChangeServerPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTest.kt index 17c6ce3e4a..1c3e9782cd 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTest.kt @@ -23,7 +23,6 @@ import io.element.android.libraries.ui.strings.CommonStrings import org.junit.Test class ErrorFormatterTest { - // region loginError @Test fun `loginError - invalid unknown error returns unknown error message`() { diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/oidc/OidcUrlParserTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/oidc/OidcUrlParserTest.kt index a0275f8f47..6f63673b23 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/oidc/OidcUrlParserTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/oidc/OidcUrlParserTest.kt @@ -38,21 +38,21 @@ class OidcUrlParserTest { @Test fun `test cancel url`() { val sut = OidcUrlParser() - val aCancelUrl = OidcConfig.redirectUri + "?error=access_denied&state=IFF1UETGye2ZA8pO" + val aCancelUrl = OidcConfig.REDIRECT_URI + "?error=access_denied&state=IFF1UETGye2ZA8pO" assertThat(sut.parse(aCancelUrl)).isEqualTo(OidcAction.GoBack) } @Test fun `test success url`() { val sut = OidcUrlParser() - val aSuccessUrl = OidcConfig.redirectUri + "?state=IFF1UETGye2ZA8pO&code=y6X1GZeqA3xxOWcTeShgv8nkgFJXyzWB" + val aSuccessUrl = OidcConfig.REDIRECT_URI + "?state=IFF1UETGye2ZA8pO&code=y6X1GZeqA3xxOWcTeShgv8nkgFJXyzWB" assertThat(sut.parse(aSuccessUrl)).isEqualTo(OidcAction.Success(aSuccessUrl)) } @Test fun `test unknown url`() { val sut = OidcUrlParser() - val anUnknownUrl = OidcConfig.redirectUri + "?state=IFF1UETGye2ZA8pO&goat=y6X1GZeqA3xxOWcTeShgv8nkgFJXyzWB" + val anUnknownUrl = OidcConfig.REDIRECT_URI + "?state=IFF1UETGye2ZA8pO&goat=y6X1GZeqA3xxOWcTeShgv8nkgFJXyzWB" Assert.assertThrows(IllegalStateException::class.java) { assertThat(sut.parse(anUnknownUrl)) } diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/oidc/webview/OidcPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/oidc/webview/OidcPresenterTest.kt index 3920ceb597..34b497866a 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/oidc/webview/OidcPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/oidc/webview/OidcPresenterTest.kt @@ -34,7 +34,6 @@ import org.junit.Rule import org.junit.Test class OidcPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt index 4ecbe10b4e..04680ede17 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt @@ -30,7 +30,6 @@ import org.junit.Rule import org.junit.Test class ChangeAccountProviderPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt index ad78f7b328..57f18d7eb4 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt @@ -38,7 +38,6 @@ import org.junit.Rule import org.junit.Test class ConfirmAccountProviderPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt index 23672974ee..4658df0ab9 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt @@ -37,7 +37,6 @@ import org.junit.Rule import org.junit.Test class LoginPasswordPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt index d951902490..28aa1090a9 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt @@ -37,7 +37,6 @@ import org.junit.Rule import org.junit.Test class SearchAccountProviderPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt index 9cdac92dbb..f88f47ae26 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListPresenterTest.kt @@ -36,7 +36,6 @@ import org.junit.Rule import org.junit.Test class WaitListPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt index 4928850245..c51be0895e 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt @@ -31,7 +31,6 @@ class DefaultLogoutEntryPoint @Inject constructor() : LogoutEntryPoint { val plugins = ArrayList() return object : LogoutEntryPoint.NodeBuilder { - override fun callback(callback: LogoutEntryPoint.Callback): LogoutEntryPoint.NodeBuilder { plugins += callback return this @@ -43,4 +42,3 @@ class DefaultLogoutEntryPoint @Inject constructor() : LogoutEntryPoint { } } } - diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt index ccb00b958f..14c7199416 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt @@ -38,7 +38,6 @@ class LogoutNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: LogoutPresenter, ) : Node(buildContext, plugins = plugins) { - private fun onChangeRecoveryKeyClicked() { plugins().forEach { it.onChangeRecoveryKeyClicked() } } diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutPresenter.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutPresenter.kt index 165987900c..ed735f6afe 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutPresenter.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutPresenter.kt @@ -25,8 +25,8 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue -import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.AsyncAction +import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.runCatchingUpdatingState import io.element.android.libraries.core.bool.orTrue @@ -47,7 +47,6 @@ class LogoutPresenter @Inject constructor( private val encryptionService: EncryptionService, private val featureFlagService: FeatureFlagService, ) : Presenter { - @Composable override fun present(): LogoutState { val localCoroutineScope = rememberCoroutineScope() diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/ui/LogoutActionDialog.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/ui/LogoutActionDialog.kt index 6a1891fd23..636dd68058 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/ui/LogoutActionDialog.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/ui/LogoutActionDialog.kt @@ -30,7 +30,8 @@ fun LogoutActionDialog( state: AsyncAction, onConfirmClicked: () -> Unit, onForceLogoutClicked: () -> Unit, - onDismissError: () -> Unit, // TODO Rename + // TODO Rename + onDismissError: () -> Unit, onSuccessLogout: (String?) -> Unit, ) { when (state) { diff --git a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutPresenterTest.kt b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutPresenterTest.kt index 6bcdce418e..83b7799c3a 100644 --- a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutPresenterTest.kt +++ b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutPresenterTest.kt @@ -40,7 +40,6 @@ import org.junit.Rule import org.junit.Test class LogoutPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() @@ -213,4 +212,3 @@ class LogoutPresenterTest { featureFlagService = FakeFeatureFlagService(mapOf(FeatureFlags.SecureStorage.key to true)), ) } - diff --git a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutViewTest.kt b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutViewTest.kt index d0f0b3f6a0..697da3cad5 100644 --- a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutViewTest.kt +++ b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutViewTest.kt @@ -36,7 +36,6 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class LogoutViewTest { - @get:Rule val rule = createAndroidComposeRule() @Test diff --git a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutPresenterTest.kt b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutPresenterTest.kt index 6686e02efa..50a1e381e8 100644 --- a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutPresenterTest.kt +++ b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutPresenterTest.kt @@ -38,7 +38,6 @@ import org.junit.Rule import org.junit.Test class DefaultDirectLogoutPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() @@ -194,4 +193,3 @@ class DefaultDirectLogoutPresenterTest { featureFlagService = FakeFeatureFlagService(mapOf(FeatureFlags.SecureStorage.key to true)), ) } - diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/HtmlConverterProvider.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/HtmlConverterProvider.kt index a248905086..c6c1fa641f 100644 --- a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/HtmlConverterProvider.kt +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/HtmlConverterProvider.kt @@ -21,7 +21,6 @@ import io.element.android.libraries.matrix.api.core.UserId import io.element.android.wysiwyg.utils.HtmlConverter interface HtmlConverterProvider { - @Composable fun Update(currentUserId: UserId) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/ExpandableBottomSheetScaffold.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/ExpandableBottomSheetScaffold.kt index 5323531f97..28ef69226b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/ExpandableBottomSheetScaffold.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/ExpandableBottomSheetScaffold.kt @@ -130,7 +130,8 @@ internal fun ExpandableBottomSheetScaffold( contentOverflows = contentHeight > maxHeight val peekHeight = min( - maxHeight, // prevent the sheet from expanding beyond the screen + // prevent the sheet from expanding beyond the screen + maxHeight, contentHeight ) @@ -152,7 +153,8 @@ internal fun ExpandableBottomSheetScaffold( top.place(x = 0, y = 0) } }, - content = { sheetContent(false) }) + content = { sheetContent(false) } + ) }, sheetDragHandle, peekHeight) }.map { measurable: Measurable -> measurable.measure(constraints) @@ -161,7 +163,8 @@ internal fun ExpandableBottomSheetScaffold( layout(constraints.maxWidth, constraints.maxHeight) { scaffoldPlaceable.place(0, 0) } - }) + } + ) } private fun CustomSheetState.getIntOffset(): Int? = try { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index 1edafdd992..3cf480f7d1 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -88,9 +88,7 @@ class MessagesFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins ) { - sealed interface NavTarget : Parcelable { - @Parcelize data object Empty : NavTarget diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt index 9e871b9b25..c81cbebaae 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt @@ -32,13 +32,13 @@ import io.element.android.features.messages.impl.timeline.di.LocalTimelineItemPr import io.element.android.features.messages.impl.timeline.di.TimelineItemPresenterFactories import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.libraries.core.bool.orFalse -import io.element.android.libraries.mediaplayer.api.MediaPlayer import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo +import io.element.android.libraries.mediaplayer.api.MediaPlayer import io.element.android.services.analytics.api.AnalyticsService import io.element.android.services.analytics.api.extensions.toAnalyticsViewRoom import kotlinx.collections.immutable.ImmutableList @@ -53,7 +53,6 @@ class MessagesNode @AssistedInject constructor( private val timelineItemPresenterFactories: TimelineItemPresenterFactories, private val mediaPlayer: MediaPlayer, ) : Node(buildContext, plugins = plugins), MessagesNavigator { - private val presenter = presenterFactory.create(this) private val callback = plugins().firstOrNull() diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index c02455d6d3..e40d0bbb9b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -114,7 +114,6 @@ class MessagesPresenter @AssistedInject constructor( private val buildMeta: BuildMeta, private val currentSessionIdHolder: CurrentSessionIdHolder, ) : Presenter { - private val timelinePresenter = timelinePresenterFactory.create(navigator = navigator) @AssistedFactory diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt index 591bbc166c..474a0cf022 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt @@ -41,7 +41,6 @@ import javax.inject.Inject class ActionListPresenter @Inject constructor( private val preferencesStore: PreferencesStore, ) : Presenter { - @Composable override fun present(): ActionListState { val localCoroutineScope = rememberCoroutineScope() diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt index 200bed433a..3db91fd67c 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt @@ -172,9 +172,10 @@ private fun SheetContent( item { Column { MessageSummary( - event = target.event, modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 16.dp) + event = target.event, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp) ) Spacer(modifier = Modifier.height(14.dp)) HorizontalDivider() @@ -299,7 +300,11 @@ private fun EmojiReactionsRow( ) { // TODO use most recently used emojis here when available from the Rust SDK val defaultEmojis = sequenceOf( - "👍️", "👎️", "🔥", "❤️", "👏" + "👍️", + "👎️", + "🔥", + "❤️", + "👏" ) for (emoji in defaultEmojis) { val isHighlighted = highlightedEmojis.contains(emoji) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/Attachment.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/Attachment.kt index 55c8033636..2e500a6b53 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/Attachment.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/Attachment.kt @@ -23,7 +23,6 @@ import kotlinx.parcelize.Parcelize @Immutable sealed interface Attachment : Parcelable { - @Parcelize data class Media(val localMedia: LocalMedia, val compressIfPossible: Boolean) : Attachment } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewNode.kt index 2ca04ecf19..254642b62c 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewNode.kt @@ -36,7 +36,6 @@ class AttachmentsPreviewNode @AssistedInject constructor( @Assisted plugins: List, presenterFactory: AttachmentsPreviewPresenter.Factory, ) : Node(buildContext, plugins = plugins) { - data class Inputs(val attachment: Attachment) : NodeInputs private val inputs: Inputs = inputs() diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt index 28d403c9a6..2c5a3ccf08 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt @@ -40,7 +40,6 @@ class AttachmentsPreviewPresenter @AssistedInject constructor( @Assisted private val attachment: Attachment, private val mediaSender: MediaSender, ) : Presenter { - @AssistedFactory interface Factory { fun create(attachment: Attachment): AttachmentsPreviewPresenter @@ -48,7 +47,6 @@ class AttachmentsPreviewPresenter @AssistedInject constructor( @Composable override fun present(): AttachmentsPreviewState { - val coroutineScope = rememberCoroutineScope() val sendActionState = remember { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewState.kt index 183e1ea590..ad44a1368e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewState.kt @@ -34,4 +34,3 @@ sealed interface SendActionState { data class Failure(val error: Throwable) : SendActionState data object Done : SendActionState } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewStateProvider.kt index 37b2ee9c78..1fdc52cf99 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewStateProvider.kt @@ -36,7 +36,8 @@ open class AttachmentsPreviewStateProvider : PreviewParameterProvider Unit, modifier: Modifier = Modifier, ) { - fun postSendAttachment() { state.eventSink(AttachmentsPreviewEvents.SendAttachment) } @@ -88,7 +87,6 @@ private fun AttachmentSendStateView( onDismissClicked: () -> Unit, onRetryClicked: () -> Unit ) { - when (sendActionState) { is SendActionState.Sending -> { ProgressDialog( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesNode.kt index 9d57f8e2fc..4f58cfa274 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesNode.kt @@ -53,7 +53,6 @@ class ForwardMessagesNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins, ) { - @Parcelize object NavTarget : Parcelable diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenter.kt index 604b652047..367a071084 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenter.kt @@ -40,7 +40,6 @@ class ForwardMessagesPresenter @AssistedInject constructor( private val room: MatrixRoom, private val matrixCoroutineScope: CoroutineScope, ) : Presenter { - private val eventId: EventId = EventId(eventId) @AssistedFactory diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/mentions/MentionSuggestionsProcessor.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/mentions/MentionSuggestionsProcessor.kt index d2c3e6e518..696f0fe93e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/mentions/MentionSuggestionsProcessor.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/mentions/MentionSuggestionsProcessor.kt @@ -29,7 +29,6 @@ import io.element.android.libraries.textcomposer.model.SuggestionType * This class is responsible for processing mention suggestions when `@`, `/` or `#` are type in the composer. */ object MentionSuggestionsProcessor { - // We don't want to retrieve thousands of members private const val MAX_BATCH_ITEMS = 100 @@ -88,8 +87,8 @@ object MentionSuggestionsProcessor { } fun memberMatchesQuery(member: RoomMember, query: String): Boolean { - return member.userId.value.contains(query, ignoreCase = true) - || member.displayName?.contains(query, ignoreCase = true) == true + return member.userId.value.contains(query, ignoreCase = true) || + member.displayName?.contains(query, ignoreCase = true) == true } val matchingMembers = roomMembers diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/AttachmentsBottomSheet.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/AttachmentsBottomSheet.kt index b3b53db013..af268856e9 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/AttachmentsBottomSheet.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/AttachmentsBottomSheet.kt @@ -62,12 +62,12 @@ internal fun AttachmentsBottomSheet( } LaunchedEffect(state.showAttachmentSourcePicker) { - if (state.showAttachmentSourcePicker) { + isVisible = if (state.showAttachmentSourcePicker) { // We need to use this instead of `LocalFocusManager.clearFocus()` to hide the keyboard when focus is on an Android View localView.hideKeyboard() - isVisible = true + true } else { - isVisible = false + false } } // Send 'DismissAttachmentMenu' event when the bottomsheet was just hidden @@ -122,7 +122,7 @@ private fun AttachmentSourcePickerMenu( ) ListItem( modifier = Modifier.clickable { state.eventSink(MessageComposerEvents.PickAttachmentSource.PhotoFromCamera) }, - leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_take_photo_camera, )), + leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_take_photo_camera)), headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_camera_photo)) }, style = ListItemStyle.Primary, ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt index 11d1e96a1f..7a3e1baf13 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt @@ -94,7 +94,6 @@ class MessageComposerPresenter @Inject constructor( private val currentSessionIdHolder: CurrentSessionIdHolder, permissionsPresenterFactory: PermissionsPresenter.Factory, ) : Presenter { - private val cameraPermissionPresenter = permissionsPresenterFactory.create(Manifest.permission.CAMERA) private var pendingEvent: MessageComposerEvents? = null @@ -376,7 +375,8 @@ class MessageComposerPresenter @Inject constructor( inThread = capturedMode.inThread, isEditing = capturedMode.isEditing, isReply = capturedMode.isReply, - messageType = Composer.MessageType.Text, // Set proper type when we'll be sending other types of messages. + // Set proper type when we'll be sending other types of messages. + messageType = Composer.MessageType.Text, ) ) } @@ -456,4 +456,3 @@ class MessageComposerPresenter @Inject constructor( } } } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/RichTextEditorStateFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/RichTextEditorStateFactory.kt index 00b39c47e2..52fff81c31 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/RichTextEditorStateFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/RichTextEditorStateFactory.kt @@ -35,4 +35,3 @@ class DefaultRichTextEditorStateFactory @Inject constructor() : RichTextEditorSt return rememberRichTextEditorState() } } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessageNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessageNode.kt index 1be4571161..a1157e2830 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessageNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessageNode.kt @@ -36,7 +36,6 @@ class ReportMessageNode @AssistedInject constructor( @Assisted plugins: List, presenterFactory: ReportMessagePresenter.Factory, ) : Node(buildContext, plugins = plugins) { - data class Inputs( val eventId: EventId, val senderId: UserId, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessagePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessagePresenter.kt index a7040d50e4..ae7f780b14 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessagePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessagePresenter.kt @@ -44,7 +44,6 @@ class ReportMessagePresenter @AssistedInject constructor( @Assisted private val inputs: Inputs, private val snackbarDispatcher: SnackbarDispatcher, ) : Presenter { - data class Inputs( val eventId: EventId, val senderId: UserId, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/DefaultHtmlConverterProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/DefaultHtmlConverterProvider.kt index 0afe57b9e5..aefadcbb25 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/DefaultHtmlConverterProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/DefaultHtmlConverterProvider.kt @@ -39,15 +39,14 @@ import javax.inject.Inject @ContributesBinding(SessionScope::class) @SingleIn(SessionScope::class) -class DefaultHtmlConverterProvider @Inject constructor(): HtmlConverterProvider { - +class DefaultHtmlConverterProvider @Inject constructor() : HtmlConverterProvider { private val htmlConverter: MutableState = mutableStateOf(null) @Composable override fun Update(currentUserId: UserId) { val isInEditMode = LocalInspectionMode.current val mentionDetector = remember(isInEditMode) { - if (isInEditMode) { null } else { newMentionDetector() } + if (isInEditMode) null else newMentionDetector() } val editorStyle = ElementRichTextEditorStyle.textStyle() @@ -67,7 +66,7 @@ class DefaultHtmlConverterProvider @Inject constructor(): HtmlConverterProvider return TextDisplay.Custom(mentionSpanProvider.getMentionSpanFor(text, url)) } }, - isMention = { _, url -> mentionDetector?.isMention(url).orFalse() } + isMention = { _, url -> mentionDetector?.isMention(url).orFalse() } ).apply { configureWith(editorStyle) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt index 31e36e86f9..a063ded512 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt @@ -76,7 +76,6 @@ class TimelinePresenter @AssistedInject constructor( private val sendPollResponseAction: SendPollResponseAction, private val endPollAction: EndPollAction, ) : Presenter { - @AssistedFactory interface Factory { fun create(navigator: MessagesNavigator): TimelinePresenter diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt index 80d98b070d..0270b09a74 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt @@ -179,7 +179,9 @@ internal fun aTimelineItemDebugInfo( originalJson: String? = null, latestEditedJson: String? = null, ) = TimelineItemDebugInfo( - model, originalJson, latestEditedJson + model, + originalJson, + latestEditedJson ) internal fun aTimelineItemReadReceipts(): TimelineItemReadReceipts { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt index 137d18d8bc..0d50631560 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt @@ -120,8 +120,8 @@ fun TimelineView( timelineItem = timelineItem, timelineRoomInfo = state.timelineRoomInfo, showReadReceipts = state.showReadReceipts, - isLastOutgoingMessage = (timelineItem as? TimelineItem.Event)?.isMine == true - && state.timelineItems.first().identifier() == timelineItem.identifier(), + isLastOutgoingMessage = (timelineItem as? TimelineItem.Event)?.isMine == true && + state.timelineItems.first().identifier() == timelineItem.identifier(), highlightedItem = state.highlightedEventId?.value, onClick = onMessageClicked, onLongClick = onMessageLongClicked, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt index 7720295d1d..9b340eee67 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt @@ -145,7 +145,6 @@ private fun IconContent( tint = ElementTheme.materialColors.secondary, modifier = modifier .size(ADD_EMOJI_SIZE) - ) @Composable @@ -165,8 +164,7 @@ private fun ReactionContent( model = MediaRequestData(MediaSource(reaction.key), MediaRequestData.Kind.Content), contentDescription = null ) - } - else { + } else { Text( text = reaction.displayKey, style = ElementTheme.typography.fontBodyMdRegular.copy( @@ -225,4 +223,3 @@ internal fun MessagesReactionExtraButtonsPreview() = ElementPreview { ) } } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/ReplySwipeIndicator.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/ReplySwipeIndicator.kt index 17d1d11f83..1fcfd30182 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/ReplySwipeIndicator.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/ReplySwipeIndicator.kt @@ -25,8 +25,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.utils.CommonDrawables diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt index 6a4095f07b..cafc30c93f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt @@ -416,10 +416,10 @@ private fun MessageEventBubbleContent( onMentionClicked: (Mention) -> Unit, eventSink: (TimelineEvents) -> Unit, @SuppressLint("ModifierParameter") + // need to rename this modifier to prevent linter false positives @Suppress("ModifierNaming") - bubbleModifier: Modifier = Modifier, // need to rename this modifier to prevent linter false positives + bubbleModifier: Modifier = Modifier, ) { - // Long clicks are not not automatically propagated from a `clickable` // to its `combinedClickable` parent so we do it manually fun onTimestampLongClick() = onMessageLongClick() @@ -463,10 +463,12 @@ private fun MessageEventBubbleContent( onClick = onTimestampClicked, onLongClick = ::onTimestampLongClick, modifier = Modifier - .padding(horizontal = 4.dp, vertical = 4.dp) // Outer padding + // Outer padding + .padding(horizontal = 4.dp, vertical = 4.dp) .background(ElementTheme.colors.bgSubtleSecondary, RoundedCornerShape(10.0.dp)) .align(Alignment.BottomEnd) - .padding(horizontal = 4.dp, vertical = 2.dp) // Inner padding + // Inner padding + .padding(horizontal = 4.dp, vertical = 2.dp) ) } TimestampPosition.Aligned -> @@ -578,7 +580,6 @@ private fun MessageEventBubbleContent( .clip(RoundedCornerShape(6.dp)) .clickable(enabled = true, onClick = inReplyToClick), ) - } if (inReplyToDetails != null) { // Use SubComposeLayout only if necessary as it can have consequences on the performance. @@ -669,7 +670,7 @@ internal fun TimelineItemEventRowPreview() = ElementPreview { isMine = it, content = aTimelineItemTextContent().copy( body = "A long text which will be displayed on several lines and" + - " hopefully can be manually adjusted to test different behaviors." + " hopefully can be manually adjusted to test different behaviors." ), groupPosition = TimelineItemGroupPosition.First, ), diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowForDirectRoomPreview.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowForDirectRoomPreview.kt index 4443c00f3d..3ac2703ee5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowForDirectRoomPreview.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowForDirectRoomPreview.kt @@ -59,4 +59,3 @@ internal fun TimelineItemEventRowForDirectRoomPreview() = ElementPreview { } } } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowWithManyReactionsPreview.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowWithManyReactionsPreview.kt index bbd65a62ad..efb619bcc2 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowWithManyReactionsPreview.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowWithManyReactionsPreview.kt @@ -42,4 +42,3 @@ internal fun TimelineItemEventRowWithManyReactionsPreview() = ElementPreview { } } } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt index 76462e35a9..d337044e94 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt @@ -24,8 +24,8 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier import androidx.compose.ui.res.pluralStringResource import io.element.android.features.messages.impl.R -import io.element.android.features.messages.impl.timeline.TimelineRoomInfo import io.element.android.features.messages.impl.timeline.TimelineEvents +import io.element.android.features.messages.impl.timeline.TimelineRoomInfo import io.element.android.features.messages.impl.timeline.aGroupedEvents import io.element.android.features.messages.impl.timeline.aTimelineRoomInfo import io.element.android.features.messages.impl.timeline.components.group.GroupHeaderView diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemReactionsLayout.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemReactionsLayout.kt index 60fda07d35..5272473a42 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemReactionsLayout.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemReactionsLayout.kt @@ -117,7 +117,7 @@ fun TimelineItemReactionsLayout( return rows } - /// Given a list of rows place them in the layout. + // Given a list of rows place them in the layout. fun layoutRows(rows: List>): MeasureResult { var width = 0 var height = 0 diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemReactionsView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemReactionsView.kt index 0f5026f0a2..20b7fac13f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemReactionsView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemReactionsView.kt @@ -75,11 +75,11 @@ private fun TimelineItemReactionsView( // In LTR languages we want an incoming message's reactions to be LTR and outgoing to be RTL. // For RTL languages it should be the opposite. val currentLayout = LocalLayoutDirection.current - val reactionsLayoutDirection = if (!isOutgoing) currentLayout - else if (currentLayout == LayoutDirection.Ltr) - LayoutDirection.Rtl - else - LayoutDirection.Ltr + val reactionsLayoutDirection = when { + !isOutgoing -> currentLayout + currentLayout == LayoutDirection.Ltr -> LayoutDirection.Rtl + else -> LayoutDirection.Ltr + } return CompositionLocalProvider(LocalLayoutDirection provides reactionsLayoutDirection) { TimelineItemReactionsLayout( @@ -104,7 +104,9 @@ private fun TimelineItemReactionsView( onLongClick = {} ) } - } else null, + } else { + null + }, reactions = { reactions.forEach { reaction -> CompositionLocalProvider(LocalLayoutDirection provides currentLayout) { @@ -174,4 +176,3 @@ private fun ContentToPreview( onMoreReactionsClicked = {}, ) } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemVirtualRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemVirtualRow.kt index 4bf8e5b847..5ef3c2ef2c 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemVirtualRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemVirtualRow.kt @@ -18,7 +18,6 @@ package io.element.android.features.messages.impl.timeline.components import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import io.element.android.features.messages.impl.timeline.session.SessionState import io.element.android.features.messages.impl.timeline.components.virtual.TimelineEncryptedHistoryBannerView import io.element.android.features.messages.impl.timeline.components.virtual.TimelineItemDaySeparatorView import io.element.android.features.messages.impl.timeline.components.virtual.TimelineItemReadMarkerView @@ -26,6 +25,7 @@ import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.timeline.model.virtual.TimelineItemDaySeparatorModel import io.element.android.features.messages.impl.timeline.model.virtual.TimelineItemEncryptedHistoryBannerVirtualModel import io.element.android.features.messages.impl.timeline.model.virtual.TimelineItemReadMarkerModel +import io.element.android.features.messages.impl.timeline.session.SessionState @Composable fun TimelineItemVirtualRow( @@ -39,4 +39,3 @@ fun TimelineItemVirtualRow( is TimelineItemEncryptedHistoryBannerVirtualModel -> TimelineEncryptedHistoryBannerView(sessionState, modifier) } } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt index 8bbd6cbff7..a75e084abf 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt @@ -21,16 +21,15 @@ import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope -import io.element.android.libraries.architecture.Presenter -import kotlinx.coroutines.launch import io.element.android.features.messages.impl.timeline.model.TimelineItem +import io.element.android.libraries.architecture.Presenter import kotlinx.collections.immutable.toImmutableSet +import kotlinx.coroutines.launch import javax.inject.Inject class CustomReactionPresenter @Inject constructor( private val emojibaseProvider: EmojibaseProvider ) : Presenter { - @Composable override fun present(): CustomReactionState { val target: MutableState = remember { @@ -59,7 +58,12 @@ class CustomReactionPresenter @Inject constructor( } } val event = (target.value as? CustomReactionState.Target.Success)?.event - val selectedEmoji = event?.reactionsState?.reactions?.mapNotNull { if(it.isHighlighted) it.key else null }.orEmpty().toImmutableSet() + val selectedEmoji = event + ?.reactionsState + ?.reactions + ?.mapNotNull { if (it.isHighlighted) it.key else null } + .orEmpty() + .toImmutableSet() return CustomReactionState( target = target.value, selectedEmoji = selectedEmoji, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionState.kt index f6f7d2b0f9..5474068df0 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionState.kt @@ -26,7 +26,6 @@ data class CustomReactionState( val eventSink: (CustomReactionEvents) -> Unit, ) { sealed interface Target { - data object None : Target data class Loading(val event: TimelineItem.Event) : Target data class Success( @@ -35,4 +34,3 @@ data class CustomReactionState( ) : Target } } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/DefaultEmojibaseProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/DefaultEmojibaseProvider.kt index a68d6f0d4e..6ee8a434ae 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/DefaultEmojibaseProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/DefaultEmojibaseProvider.kt @@ -20,10 +20,8 @@ import android.content.Context import io.element.android.emojibasebindings.EmojibaseDatasource import io.element.android.emojibasebindings.EmojibaseStore -class DefaultEmojibaseProvider(val context: Context): EmojibaseProvider { - +class DefaultEmojibaseProvider(val context: Context) : EmojibaseProvider { override val emojibaseStore: EmojibaseStore by lazy { EmojibaseDatasource().load(context) } - } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/ExtraPadding.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/ExtraPadding.kt index e0be0f0662..c9706f06ac 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/ExtraPadding.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/ExtraPadding.kt @@ -75,7 +75,7 @@ fun TimelineItem.Event.toExtraPadding(): ExtraPadding { private fun TextMeasurer.getExtraPadding(text: String, density: Density): Dp { val timestampTextStyle = ElementTheme.typography.fontBodyXsRegular val textWidth = measure(text = text, style = timestampTextStyle).size.width - return (textWidth/density.density).dp + return (textWidth / density.density).dp } /** diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemInformativeView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemInformativeView.kt index 384fd94ead..73bedb4921 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemInformativeView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemInformativeView.kt @@ -46,7 +46,7 @@ fun TimelineItemInformativeView( ) { Row( modifier = modifier.onSizeChanged { size -> - onContentLayoutChanged( + onContentLayoutChanged( ContentAvoidingLayoutData( contentWidth = size.width, contentHeight = size.height, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemLocationView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemLocationView.kt index c9d24a1637..0a4b008336 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemLocationView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemLocationView.kt @@ -27,8 +27,8 @@ import androidx.compose.ui.unit.dp import io.element.android.features.location.api.StaticMapView import io.element.android.features.messages.impl.timeline.model.event.TimelineItemLocationContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemLocationContentProvider -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Text @Composable @@ -62,4 +62,3 @@ internal fun TimelineItemLocationViewPreview(@PreviewParameter(TimelineItemLocat ElementPreview { TimelineItemLocationView(content) } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemStateView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemStateView.kt index 7d89ec3993..706ca69f9c 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemStateView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemStateView.kt @@ -20,12 +20,12 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign +import io.element.android.compound.theme.ElementTheme import io.element.android.features.messages.impl.timeline.model.event.TimelineItemStateContent import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemStateEventContent -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme @Composable fun TimelineItemStateView( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemTextView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemTextView.kt index dfa2ce92c6..2df3766175 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemTextView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemTextView.kt @@ -45,7 +45,6 @@ fun TimelineItemTextView( LocalContentColor provides ElementTheme.colors.textPrimary, LocalTextStyle provides ElementTheme.typography.fontBodyLgRegular ) { - val formattedBody = content.formattedBody val body = SpannableString(formattedBody ?: content.body) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVideoView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVideoView.kt index 87685e432c..4900180800 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVideoView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVideoView.kt @@ -32,8 +32,8 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt import io.element.android.features.messages.impl.timeline.model.event.TimelineItemVideoContentProvider import io.element.android.libraries.designsystem.components.BlurHashAsyncImage import io.element.android.libraries.designsystem.modifiers.roundedBackground -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.matrix.ui.media.MediaRequestData import io.element.android.libraries.ui.strings.CommonStrings diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVoiceView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVoiceView.kt index 1b1976e908..befb09728a 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVoiceView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVoiceView.kt @@ -110,9 +110,7 @@ fun TimelineItemVoiceView( showCursor = state.showCursor, playbackProgress = state.progress, waveform = content.waveform, - modifier = Modifier - .height(34.dp) - .weight(1f), + modifier = Modifier.height(34.dp), seekEnabled = !context.isScreenReaderEnabled(), onSeek = { state.eventSink(VoiceMessageEvents.Seek(it)) }, ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/layout/ContentAvoidingLayout.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/layout/ContentAvoidingLayout.kt index 2ed094c7a4..5df38c1845 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/layout/ContentAvoidingLayout.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/layout/ContentAvoidingLayout.kt @@ -128,7 +128,6 @@ data class ContentAvoidingLayoutData( * A scope for the [ContentAvoidingLayout]. */ interface ContentAvoidingLayoutScope { - /** * It should be called when the content layout changes, so it can update the [ContentAvoidingLayoutData] and measure and layout the content properly. */ diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt index 7c30350cc4..5f9a2ea428 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt @@ -65,18 +65,17 @@ class ReactionSummaryPresenter @Inject constructor( derivedStateOf { summary?.let { summary -> summary.copy(reactions = summary.reactions.map { reaction -> - reaction.copy(senders = reaction.senders.map { sender -> - val member = members.firstOrNull { it.userId == sender.senderId } - val user = MatrixUser( - userId = sender.senderId, - displayName = member?.displayName, - avatarUrl = member?.avatarUrl - ) - sender.copy(user = user) - }) + reaction.copy(senders = reaction.senders.map { sender -> + val member = members.firstOrNull { it.userId == sender.senderId } + val user = MatrixUser( + userId = sender.senderId, + displayName = member?.displayName, + avatarUrl = member?.avatarUrl + ) + sender.copy(user = user) + }) }) } } } - } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryState.kt index 37e150320b..1d1606e53d 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryState.kt @@ -22,11 +22,10 @@ import io.element.android.libraries.matrix.api.core.EventId data class ReactionSummaryState( val target: Summary?, val eventSink: (ReactionSummaryEvents) -> Unit -){ +) { data class Summary( val reactions: List, val selectedKey: String, val selectedEventId: EventId ) } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt index 24f6a52d0a..e58f614234 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryView.kt @@ -120,7 +120,7 @@ private fun SheetContent( LaunchedEffect(pagerState.currentPage) { selectedReactionKey = summary.reactions[pagerState.currentPage].key - val visibleInfo = reactionListState.layoutInfo.visibleItemsInfo + val visibleInfo = reactionListState.layoutInfo.visibleItemsInfo if (selectedReactionIndex <= visibleInfo.first().index || selectedReactionIndex >= visibleInfo.last().index) { reactionListState.animateScrollToItem(selectedReactionIndex) } @@ -174,7 +174,6 @@ private fun AggregatedReactionButton( onClick: () -> Unit, modifier: Modifier = Modifier, ) { - val buttonColor = if (isHighlighted) { ElementTheme.colors.bgActionPrimaryRest } else { @@ -209,8 +208,7 @@ private fun AggregatedReactionButton( model = MediaRequestData(MediaSource(reaction.key), MediaRequestData.Kind.Content), contentDescription = null ) - } - else { + } else { Text( text = reaction.displayKey, style = ElementTheme.typography.fontBodyMdRegular.copy( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt index 70e5486c2a..5d15006e8b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt @@ -40,6 +40,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import io.element.android.appconfig.TimelineConfig +import io.element.android.compound.theme.ElementTheme import io.element.android.features.messages.impl.timeline.model.ReadReceiptData import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.AvatarSize @@ -50,7 +51,6 @@ import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.utils.CommonDrawables import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonPlurals import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.collections.immutable.ImmutableList @@ -76,33 +76,35 @@ fun TimelineItemReadReceiptView( ) } } - } else when (state.sendState) { - LocalEventSendState.NotSentYet -> { - ReadReceiptsRow(modifier) { - Icon( - modifier = Modifier.padding(2.dp), - resourceId = CommonDrawables.ic_sending, - contentDescription = stringResource(id = CommonStrings.common_sending), - tint = ElementTheme.colors.iconSecondary - ) - } - } - LocalEventSendState.Canceled -> Unit - is LocalEventSendState.SendingFailed -> { - // Error? The timestamp is already displayed in red - } - null, - is LocalEventSendState.Sent -> { - if (state.isLastOutgoingMessage) { - ReadReceiptsRow(modifier = modifier) { + } else { + when (state.sendState) { + LocalEventSendState.NotSentYet -> { + ReadReceiptsRow(modifier) { Icon( modifier = Modifier.padding(2.dp), - resourceId = CommonDrawables.ic_sent, - contentDescription = stringResource(id = CommonStrings.common_sent), + resourceId = CommonDrawables.ic_sending, + contentDescription = stringResource(id = CommonStrings.common_sending), tint = ElementTheme.colors.iconSecondary ) } } + LocalEventSendState.Canceled -> Unit + is LocalEventSendState.SendingFailed -> { + // Error? The timestamp is already displayed in red + } + null, + is LocalEventSendState.Sent -> { + if (state.isLastOutgoingMessage) { + ReadReceiptsRow(modifier = modifier) { + Icon( + modifier = Modifier.padding(2.dp), + resourceId = CommonDrawables.ic_sent, + contentDescription = stringResource(id = CommonStrings.common_sent), + tint = ElementTheme.colors.iconSecondary + ) + } + } + } } } } @@ -150,7 +152,7 @@ private fun ReadReceiptsAvatars( contentAlignment = Alignment.CenterEnd, ) { receipts - .take(TimelineConfig.maxReadReceiptToDisplay) + .take(TimelineConfig.MAX_READ_RECEIPT_TO_DISPLAY) .reversed() .forEachIndexed { index, readReceiptData -> Box( @@ -168,9 +170,9 @@ private fun ReadReceiptsAvatars( } } } - if (receipts.size > TimelineConfig.maxReadReceiptToDisplay) { + if (receipts.size > TimelineConfig.MAX_READ_RECEIPT_TO_DISPLAY) { Text( - text = "+" + (receipts.size - TimelineConfig.maxReadReceiptToDisplay), + text = "+" + (receipts.size - TimelineConfig.MAX_READ_RECEIPT_TO_DISPLAY), style = ElementTheme.typography.fontBodyXsRegular, color = ElementTheme.colors.textSecondary, ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt index a4a55cbc9e..f1b1deb34d 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt @@ -25,9 +25,7 @@ import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.libraries.architecture.Presenter import javax.inject.Inject -class ReadReceiptBottomSheetPresenter @Inject constructor( -) : Presenter { - +class ReadReceiptBottomSheetPresenter @Inject constructor() : Presenter { @Composable override fun present(): ReadReceiptBottomSheetState { var selectedEvent: TimelineItem.Event? by remember { mutableStateOf(null) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuEvents.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuEvents.kt index 97ef92ceb8..77be3815e5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuEvents.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuEvents.kt @@ -22,5 +22,5 @@ sealed interface RetrySendMenuEvents { data class EventSelected(val event: TimelineItem.Event) : RetrySendMenuEvents data object RetrySend : RetrySendMenuEvents data object RemoveFailed : RetrySendMenuEvents - data object Dismiss: RetrySendMenuEvents + data object Dismiss : RetrySendMenuEvents } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuPresenter.kt index c9ebd9be8c..bc1415829f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuPresenter.kt @@ -31,7 +31,6 @@ import javax.inject.Inject class RetrySendMenuPresenter @Inject constructor( private val room: MatrixRoom, ) : Presenter { - @Composable override fun present(): RetrySendMenuState { val coroutineScope = rememberCoroutineScope() diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMessageMenu.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMessageMenu.kt index bbd35a7d4f..1eec2547cd 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMessageMenu.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMessageMenu.kt @@ -33,12 +33,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.features.messages.impl.R -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.ModalBottomSheet import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.coroutines.launch diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemDaySeparatorView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemDaySeparatorView.kt index f3b007354f..3bb38fca7c 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemDaySeparatorView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemDaySeparatorView.kt @@ -26,12 +26,12 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.features.messages.impl.timeline.model.virtual.TimelineItemDaySeparatorModel import io.element.android.features.messages.impl.timeline.model.virtual.TimelineItemDaySeparatorModelProvider -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme @Composable internal fun TimelineItemDaySeparatorView( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemReadMarkerView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemReadMarkerView.kt index 0d8dca11b7..1d50bedfbb 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemReadMarkerView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemReadMarkerView.kt @@ -25,12 +25,12 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.features.messages.impl.R import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.HorizontalDivider import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme @Composable internal fun TimelineItemReadMarkerView( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemRoomBeginningView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemRoomBeginningView.kt index 78ce6521d9..7601a466c4 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemRoomBeginningView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemRoomBeginningView.kt @@ -27,11 +27,11 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.features.messages.impl.R import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme @Composable fun TimelineItemRoomBeginningView( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineLoadingMoreIndicator.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineLoadingMoreIndicator.kt index 847aa2bcef..23cc516156 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineLoadingMoreIndicator.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineLoadingMoreIndicator.kt @@ -24,8 +24,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator @Composable diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/debug/EventDebugInfoNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/debug/EventDebugInfoNode.kt index b9e4a75d97..6f53c5a306 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/debug/EventDebugInfoNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/debug/EventDebugInfoNode.kt @@ -35,7 +35,6 @@ class EventDebugInfoNode @AssistedInject constructor( @Assisted buildContext: BuildContext, @Assisted plugins: List, ) : Node(buildContext, plugins = plugins) { - data class Inputs( val eventId: EventId?, val timelineItemDebugInfo: TimelineItemDebugInfo, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/debug/EventDebugInfoView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/debug/EventDebugInfoView.kt index d3d05dc6a2..443451f565 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/debug/EventDebugInfoView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/debug/EventDebugInfoView.kt @@ -95,7 +95,8 @@ fun EventDebugInfoView( .fillMaxWidth() .padding(padding) // Window insets .consumeWindowInsets(padding) - .padding(horizontal = 16.dp) // Internal padding + // Internal padding + .padding(horizontal = 16.dp) ) { item { Column(Modifier.padding(vertical = 10.dp), verticalArrangement = Arrangement.spacedBy(6.dp)) { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/diff/TimelineItemsCacheInvalidator.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/diff/TimelineItemsCacheInvalidator.kt index a7a3bea00e..8d54e04b48 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/diff/TimelineItemsCacheInvalidator.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/diff/TimelineItemsCacheInvalidator.kt @@ -27,7 +27,6 @@ import io.element.android.libraries.androidutils.diff.MutableDiffCache * This is needed because a timeline item is computed based on the previous and next items. */ internal class TimelineItemsCacheInvalidator : DiffCacheInvalidator { - private val delegate = DefaultDiffCacheInvalidator() override fun onChanged(position: Int, count: Int, cache: MutableDiffCache) { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFactory.kt index 5e72392914..abd4dce536 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFactory.kt @@ -45,7 +45,6 @@ class TimelineItemContentFactory @Inject constructor( private val failedToParseMessageFactory: TimelineItemContentFailedToParseMessageFactory, private val failedToParseStateFactory: TimelineItemContentFailedToParseStateFactory ) { - suspend fun create(eventTimelineItem: EventTimelineItem): TimelineItemEventContent { return when (val itemContent = eventTimelineItem.content) { is FailedToParseMessageLikeContent -> failedToParseMessageFactory.create(itemContent) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFailedToParseMessageFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFailedToParseMessageFactory.kt index e764cfa28f..6a7d933282 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFailedToParseMessageFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFailedToParseMessageFactory.kt @@ -22,7 +22,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.FailedToParse import javax.inject.Inject class TimelineItemContentFailedToParseMessageFactory @Inject constructor() { - fun create(@Suppress("UNUSED_PARAMETER") failedToParseMessageLike: FailedToParseMessageLikeContent): TimelineItemEventContent { return TimelineItemUnknownContent } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFailedToParseStateFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFailedToParseStateFactory.kt index f7d3c10483..91414f2394 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFailedToParseStateFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFailedToParseStateFactory.kt @@ -22,7 +22,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.FailedToParse import javax.inject.Inject class TimelineItemContentFailedToParseStateFactory @Inject constructor() { - @Suppress("UNUSED_PARAMETER") fun create(failedToParseState: FailedToParseStateContent): TimelineItemEventContent { return TimelineItemUnknownContent diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt index 733b9b8878..b53d749613 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt @@ -68,7 +68,6 @@ class TimelineItemContentMessageFactory @Inject constructor( private val featureFlagService: FeatureFlagService, private val htmlConverterProvider: HtmlConverterProvider, ) { - suspend fun create(content: MessageContent, senderDisplayName: String, eventId: EventId?): TimelineItemEventContent { return when (val messageType = content.type) { is EmoteMessageType -> { @@ -195,7 +194,7 @@ class TimelineItemContentMessageFactory @Inject constructor( TimelineItemNoticeContent( body = body, htmlDocument = messageType.formatted?.toHtmlDocument(), - formattedBody = parseHtml(messageType.formatted) ?:body.withLinks(), + formattedBody = parseHtml(messageType.formatted) ?: body.withLinks(), isEdited = content.isEdited, ) } @@ -269,7 +268,7 @@ class TimelineItemContentMessageFactory @Inject constructor( @Suppress("USELESS_ELVIS") private fun String.withLinks(): CharSequence? { - /* Note: toSpannable() can return null when running unit tests */ + // Note: toSpannable() can return null when running unit tests val spannable = toSpannable() ?: return null val addedLinks = LinkifyCompat.addLinks(spannable, Linkify.WEB_URLS or Linkify.PHONE_NUMBERS or Linkify.EMAIL_ADDRESSES) return spannable.takeIf { addedLinks } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentPollFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentPollFactory.kt index c3b417abd6..df30dfb7b2 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentPollFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentPollFactory.kt @@ -30,7 +30,6 @@ class TimelineItemContentPollFactory @Inject constructor( private val featureFlagService: FeatureFlagService, private val pollContentStateFactory: PollContentStateFactory, ) { - suspend fun create( event: EventTimelineItem, content: PollContent, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentProfileChangeFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentProfileChangeFactory.kt index e54d88326d..38c631de8d 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentProfileChangeFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentProfileChangeFactory.kt @@ -26,7 +26,6 @@ import javax.inject.Inject class TimelineItemContentProfileChangeFactory @Inject constructor( private val timelineEventFormatter: TimelineEventFormatter, ) { - fun create(eventTimelineItem: EventTimelineItem): TimelineItemEventContent { val text = timelineEventFormatter.format(eventTimelineItem) return TimelineItemProfileChangeContent(text.orEmpty().toString()) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentRedactedFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentRedactedFactory.kt index 9419c7c31d..59ec5cada1 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentRedactedFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentRedactedFactory.kt @@ -22,7 +22,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.RedactedConte import javax.inject.Inject class TimelineItemContentRedactedFactory @Inject constructor() { - fun create(@Suppress("UNUSED_PARAMETER") content: RedactedContent): TimelineItemEventContent { return TimelineItemRedactedContent } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentRoomMembershipFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentRoomMembershipFactory.kt index d5cf0cec2d..a7eab0797a 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentRoomMembershipFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentRoomMembershipFactory.kt @@ -26,7 +26,6 @@ import javax.inject.Inject class TimelineItemContentRoomMembershipFactory @Inject constructor( private val timelineEventFormatter: TimelineEventFormatter, ) { - fun create(eventTimelineItem: EventTimelineItem): TimelineItemEventContent { val text = timelineEventFormatter.format(eventTimelineItem) return TimelineItemRoomMembershipContent(text.orEmpty().toString()) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentStateFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentStateFactory.kt index 072b568af9..cfce61ca37 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentStateFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentStateFactory.kt @@ -26,7 +26,6 @@ import javax.inject.Inject class TimelineItemContentStateFactory @Inject constructor( private val timelineEventFormatter: TimelineEventFormatter, ) { - fun create(eventTimelineItem: EventTimelineItem): TimelineItemEventContent { val text = timelineEventFormatter.format(eventTimelineItem) return TimelineItemStateEventContent(text.orEmpty().toString()) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentStickerFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentStickerFactory.kt index 14f95202d4..91b62a6d51 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentStickerFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentStickerFactory.kt @@ -40,7 +40,6 @@ class TimelineItemContentStickerFactory @Inject constructor( } fun create(content: StickerContent): TimelineItemEventContent { - val aspectRatio = aspectRatioOf(content.info.width, content.info.height) return TimelineItemStickerContent( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentUTDFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentUTDFactory.kt index 3281f6dd9b..d53e04d96e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentUTDFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentUTDFactory.kt @@ -22,7 +22,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecry import javax.inject.Inject class TimelineItemContentUTDFactory @Inject constructor() { - fun create(content: UnableToDecryptContent): TimelineItemEventContent { return TimelineItemEncryptedContent(content.data) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt index 51520c66dc..0f204921d2 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt @@ -43,7 +43,6 @@ class TimelineItemEventFactory @Inject constructor( private val matrixClient: MatrixClient, private val lastMessageTimestampFormatter: LastMessageTimestampFormatter, ) { - suspend fun create( currentTimelineItem: MatrixTimelineItem.Event, index: Int, @@ -193,7 +192,8 @@ class TimelineItemEventFactory @Inject constructor( } } } - previousSender == currentSender /* && nextSender != currentSender (== true) */ -> { + // In the following case, we have nextSender != currentSender == true + previousSender == currentSender -> { if (previousIsGroupable) { TimelineItemGroupPosition.Last } else { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/virtual/TimelineItemDaySeparatorFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/virtual/TimelineItemDaySeparatorFactory.kt index 5a778fe28a..38c869f6f8 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/virtual/TimelineItemDaySeparatorFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/virtual/TimelineItemDaySeparatorFactory.kt @@ -23,7 +23,6 @@ import io.element.android.libraries.matrix.api.timeline.item.virtual.VirtualTime import javax.inject.Inject class TimelineItemDaySeparatorFactory @Inject constructor(private val daySeparatorFormatter: DaySeparatorFormatter) { - fun create(virtualItem: VirtualTimelineItem.DayDivider): TimelineItemVirtualModel { val formattedDate = daySeparatorFormatter.format(virtualItem.timestamp) return TimelineItemDaySeparatorModel( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/virtual/TimelineItemVirtualFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/virtual/TimelineItemVirtualFactory.kt index cc513705e3..64d08acacb 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/virtual/TimelineItemVirtualFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/virtual/TimelineItemVirtualFactory.kt @@ -27,7 +27,6 @@ import javax.inject.Inject class TimelineItemVirtualFactory @Inject constructor( private val daySeparatorFactory: TimelineItemDaySeparatorFactory, ) { - fun create( virtualTimelineItem: MatrixTimelineItem.Virtual, ): TimelineItem.Virtual { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/groups/TimelineItemGrouper.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/groups/TimelineItemGrouper.kt index f819be4161..b0d2f39338 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/groups/TimelineItemGrouper.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/groups/TimelineItemGrouper.kt @@ -25,7 +25,6 @@ import javax.inject.Inject @SingleIn(RoomScope::class) class TimelineItemGrouper @Inject constructor() { - /** * Keys are identifier of items in a group, only one by group will be kept. * Values are the actual groupIds. diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToMetadata.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToMetadata.kt index 1c723205a8..d5803ddd72 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToMetadata.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToMetadata.kt @@ -35,7 +35,6 @@ import io.element.android.libraries.ui.strings.CommonStrings @Immutable internal sealed interface InReplyToMetadata { - val text: String? data class Thumbnail( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/NewEventState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/NewEventState.kt index 9a00c9fd8f..0d37e529b0 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/NewEventState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/NewEventState.kt @@ -21,5 +21,7 @@ package io.element.android.features.messages.impl.timeline.model * This can be used to scroll to the bottom of the list when a new event is added. */ enum class NewEventState { - None, FromMe, FromOther + None, + FromMe, + FromOther } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/TimelineItem.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/TimelineItem.kt index fda3f03b24..fa00c26760 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/TimelineItem.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/TimelineItem.kt @@ -32,7 +32,6 @@ import kotlinx.collections.immutable.ImmutableList @Immutable sealed interface TimelineItem { - fun identifier(): String = when (this) { is Event -> id is Virtual -> id @@ -73,7 +72,6 @@ sealed interface TimelineItem { val debugInfo: TimelineItemDebugInfo, val origin: TimelineItemEventOrigin?, ) : TimelineItem { - val showSenderInformation = groupPosition.isNew() && !isMine val safeSenderName: String = senderDisplayName ?: senderId.value diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/TimelineItemGroupPosition.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/TimelineItemGroupPosition.kt index 556493bd84..1874fc5b65 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/TimelineItemGroupPosition.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/TimelineItemGroupPosition.kt @@ -65,4 +65,3 @@ sealed interface TimelineItemGroupPosition { else -> false } } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemAudioContent.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemAudioContent.kt index 020e579aa4..05af93cc33 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemAudioContent.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemAudioContent.kt @@ -28,7 +28,6 @@ data class TimelineItemAudioContent( val formattedFileSize: String, val fileExtension: String, ) : TimelineItemEventContent { - val fileExtensionAndSize = formatFileExtensionAndSize( fileExtension, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContentProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContentProvider.kt index 974607c33b..9878a28402 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContentProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContentProvider.kt @@ -46,7 +46,6 @@ class TimelineItemEventContentProvider : PreviewParameterProvider { - private fun buildSpanned(text: String) = buildSpannedString { inSpans(StyleSpan(Typeface.BOLD)) { append("Rich Text") diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemLocationContentProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemLocationContentProvider.kt index dc5a03fa2b..a21f262071 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemLocationContentProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemLocationContentProvider.kt @@ -36,4 +36,3 @@ fun aTimelineItemLocationContent(description: String? = null) = TimelineItemLoca ), description = description, ) - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/MessageSummaryFormatterImpl.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/MessageSummaryFormatterImpl.kt index 77842fa7cd..97d5188466 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/MessageSummaryFormatterImpl.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/MessageSummaryFormatterImpl.kt @@ -42,7 +42,6 @@ import javax.inject.Inject class MessageSummaryFormatterImpl @Inject constructor( @ApplicationContext private val context: Context, ) : MessageSummaryFormatter { - companion object { // Max characters to display in the summary message. This works around https://github.com/element-hq/element-x-android/issues/2105 private const val MAX_SAFE_LENGTH = 500 diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/VoiceMessageException.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/VoiceMessageException.kt index 7ca95ad9a7..0d453edb1f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/VoiceMessageException.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/VoiceMessageException.kt @@ -18,12 +18,15 @@ package io.element.android.features.messages.impl.voicemessages internal sealed class VoiceMessageException : Exception() { data class FileException( - override val message: String?, override val cause: Throwable? = null + override val message: String?, + override val cause: Throwable? = null ) : VoiceMessageException() data class PermissionMissing( - override val message: String?, override val cause: Throwable? + override val message: String?, + override val cause: Throwable? ) : VoiceMessageException() data class PlayMessageError( - override val message: String?, override val cause: Throwable? + override val message: String?, + override val cause: Throwable? ) : VoiceMessageException() } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerEvents.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerEvents.kt index 0c83e834b0..100bdbadb6 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerEvents.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerEvents.kt @@ -17,20 +17,20 @@ package io.element.android.features.messages.impl.voicemessages.composer import androidx.lifecycle.Lifecycle -import io.element.android.libraries.textcomposer.model.VoiceMessageRecorderEvent import io.element.android.libraries.textcomposer.model.VoiceMessagePlayerEvent +import io.element.android.libraries.textcomposer.model.VoiceMessageRecorderEvent sealed interface VoiceMessageComposerEvents { data class RecorderEvent( val recorderEvent: VoiceMessageRecorderEvent - ): VoiceMessageComposerEvents + ) : VoiceMessageComposerEvents data class PlayerEvent( val playerEvent: VoiceMessagePlayerEvent, - ): VoiceMessageComposerEvents - data object SendVoiceMessage: VoiceMessageComposerEvents - data object DeleteVoiceMessage: VoiceMessageComposerEvents - data object AcceptPermissionRationale: VoiceMessageComposerEvents - data object DismissPermissionsRationale: VoiceMessageComposerEvents - data class LifecycleEvent(val event: Lifecycle.Event): VoiceMessageComposerEvents - data object DismissSendFailureDialog: VoiceMessageComposerEvents + ) : VoiceMessageComposerEvents + data object SendVoiceMessage : VoiceMessageComposerEvents + data object DeleteVoiceMessage : VoiceMessageComposerEvents + data object AcceptPermissionRationale : VoiceMessageComposerEvents + data object DismissPermissionsRationale : VoiceMessageComposerEvents + data class LifecycleEvent(val event: Lifecycle.Event) : VoiceMessageComposerEvents + data object DismissSendFailureDialog : VoiceMessageComposerEvents } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPlayer.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPlayer.kt index 0e1b960ecc..ea08da4448 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPlayer.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPlayer.kt @@ -194,7 +194,6 @@ class VoiceMessageComposerPlayer @Inject constructor( val currentPosition: Long, val progress: Float, ) { - companion object { val Initial = State( playState = PlayState.Stopped, @@ -247,4 +246,3 @@ class VoiceMessageComposerPlayer @Inject constructor( } } } - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPresenter.kt index 528711b71e..c8ad616154 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPresenter.kt @@ -37,8 +37,8 @@ import io.element.android.libraries.di.SingleIn import io.element.android.libraries.mediaupload.api.MediaSender import io.element.android.libraries.permissions.api.PermissionsEvents import io.element.android.libraries.permissions.api.PermissionsPresenter -import io.element.android.libraries.textcomposer.model.VoiceMessageRecorderEvent import io.element.android.libraries.textcomposer.model.VoiceMessagePlayerEvent +import io.element.android.libraries.textcomposer.model.VoiceMessageRecorderEvent import io.element.android.libraries.textcomposer.model.VoiceMessageState import io.element.android.libraries.voicerecorder.api.VoiceRecorder import io.element.android.libraries.voicerecorder.api.VoiceRecorderState @@ -121,7 +121,7 @@ class VoiceMessageComposerPresenter @Inject constructor( } } } - val onPlayerEvent = { event: VoiceMessagePlayerEvent -> localCoroutineScope.launch { + val onPlayerEvent = { event: VoiceMessagePlayerEvent -> localCoroutineScope.launch { when (event) { VoiceMessagePlayerEvent.Play -> player.play() @@ -129,7 +129,7 @@ class VoiceMessageComposerPresenter @Inject constructor( is VoiceMessagePlayerEvent.Seek -> player.seek(event.position) } } - } } + } val onAcceptPermissionsRationale = { permissionState.eventSink(PermissionsEvents.OpenSystemSettingAndCloseDialog) @@ -216,7 +216,7 @@ class VoiceMessageComposerPresenter @Inject constructor( recorderState: VoiceRecorderState, isSending: Boolean, ): VoiceMessageState { - val showCursor by remember(playerState.isStopped, isSending) { derivedStateOf { !playerState.isStopped && !isSending }} + val showCursor by remember(playerState.isStopped, isSending) { derivedStateOf { !playerState.isStopped && !isSending } } val playerTime by remember(playerState, recorderState) { derivedStateOf { displayTime(playerState, recorderState) } } val waveform by remember(recorderState) { derivedStateOf { recorderState.finishedWaveform() } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerState.kt index aaab388ec1..a1737a9cdc 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerState.kt @@ -27,4 +27,3 @@ data class VoiceMessageComposerState( val keepScreenOn: Boolean, val eventSink: (VoiceMessageComposerEvents) -> Unit, ) - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerStateProvider.kt index 0e884f5491..9f835681d8 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerStateProvider.kt @@ -52,5 +52,3 @@ internal fun aVoiceMessagePreviewState() = VoiceMessageState.Preview( ) internal var aWaveformLevels = List(100) { it.toFloat() / 100 }.toPersistentList() - - diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/VoiceMessageMediaRepo.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/VoiceMessageMediaRepo.kt index 62ddc4845b..8ce6aa0acf 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/VoiceMessageMediaRepo.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/VoiceMessageMediaRepo.kt @@ -35,7 +35,6 @@ import java.io.File * Whenever a given mxc is found in the cache, it is returned immediately. */ interface VoiceMessageMediaRepo { - /** * Factory for [VoiceMessageMediaRepo]. */ @@ -73,7 +72,6 @@ class DefaultVoiceMessageMediaRepo @AssistedInject constructor( @Assisted("mimeType") private val mimeType: String?, @Assisted("body") private val body: String?, ) : VoiceMessageMediaRepo { - @ContributesBinding(RoomScope::class) @AssistedFactory fun interface Factory : VoiceMessageMediaRepo.Factory { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/VoiceMessagePlayer.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/VoiceMessagePlayer.kt index 76180397f4..1ab499c79f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/VoiceMessagePlayer.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/VoiceMessagePlayer.kt @@ -34,9 +34,7 @@ import javax.inject.Inject * A media player specialized in playing a single voice message. */ interface VoiceMessagePlayer { - fun interface Factory { - /** * Creates a [VoiceMessagePlayer]. * @@ -126,7 +124,6 @@ class DefaultVoiceMessagePlayer( mimeType: String?, body: String?, ) : VoiceMessagePlayer { - @ContributesBinding(RoomScope::class) // Scoped types can't use @AssistedInject. class Factory @Inject constructor( private val mediaPlayer: MediaPlayer, @@ -197,7 +194,8 @@ class DefaultVoiceMessagePlayer( mediaPlayer.setMedia( uri = mediaFile.path, mediaId = eventId.value, - mimeType = MimeTypes.Ogg, // Files in the voice cache have no extension so we need to set the mime type manually. + // Files in the voice cache have no extension so we need to set the mime type manually. + mimeType = MimeTypes.Ogg, startPositionMs = if (state.isEnded) 0L else state.currentPosition, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/VoiceMessagePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/VoiceMessagePresenter.kt index dfe8e92a01..13c99a2640 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/VoiceMessagePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/VoiceMessagePresenter.kt @@ -58,7 +58,6 @@ class VoiceMessagePresenter @AssistedInject constructor( private val scope: CoroutineScope, @Assisted private val content: TimelineItemVoiceContent, ) : Presenter { - @AssistedFactory fun interface Factory : TimelineItemPresenterFactory { override fun create(content: TimelineItemVoiceContent): VoiceMessagePresenter @@ -75,7 +74,6 @@ class VoiceMessagePresenter @AssistedInject constructor( @Composable override fun present(): VoiceMessageState { - val playerState by player.state.collectAsState( VoiceMessagePlayer.State( isReady = false, diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt index e173279ce9..f8bb1dc63a 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt @@ -103,7 +103,6 @@ import kotlin.time.Duration.Companion.milliseconds @Suppress("LargeClass") class MessagesPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenterTest.kt index 14ae8f1b59..0dbdc7194b 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenterTest.kt @@ -39,7 +39,6 @@ import org.junit.Rule import org.junit.Test class ActionListPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() @@ -427,7 +426,8 @@ class ActionListPresenterTest { }.test { val initialState = awaitItem() val messageEvent = aMessageEvent( - eventId = null, // No event id, so it's not sent yet + // No event id, so it's not sent yet + eventId = null, isMine = true, content = TimelineItemTextContent(body = A_MESSAGE, htmlDocument = null, isEdited = false, formattedBody = null), ) @@ -564,4 +564,3 @@ private fun createActionListPresenter(isDeveloperModeEnabled: Boolean): ActionLi val preferencesStore = InMemoryPreferencesStore(isDeveloperModeEnabled = isDeveloperModeEnabled) return ActionListPresenter(preferencesStore = preferencesStore) } - diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt index 5b8afcfe37..0168fcbde5 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt @@ -41,7 +41,6 @@ import org.junit.Rule import org.junit.Test class AttachmentsPreviewPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/aMediaAttachment.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/MediaAttachmentFixtures.kt similarity index 100% rename from features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/aMediaAttachment.kt rename to features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/MediaAttachmentFixtures.kt diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/aMessageEvent.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/MessageEventFixtures.kt similarity index 100% rename from features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/aMessageEvent.kt rename to features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/MessageEventFixtures.kt diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/timelineItemsFactory.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/TimelineItemsFactoryFixtures.kt similarity index 100% rename from features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/timelineItemsFactory.kt rename to features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/fixtures/TimelineItemsFactoryFixtures.kt diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenterTests.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenterTests.kt index 1e35ec94bd..cf084700ca 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenterTests.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenterTests.kt @@ -31,7 +31,6 @@ import org.junit.Rule import org.junit.Test class ForwardMessagesPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/messagesummary/FakeMessageSummaryFormatter.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/messagesummary/FakeMessageSummaryFormatter.kt index 16f262c965..b1f28420a3 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/messagesummary/FakeMessageSummaryFormatter.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/messagesummary/FakeMessageSummaryFormatter.kt @@ -20,7 +20,6 @@ import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.utils.messagesummary.MessageSummaryFormatter class FakeMessageSummaryFormatter : MessageSummaryFormatter { - private var result = "A message" override fun format(event: TimelineItem.Event): String = result diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/report/ReportMessagePresenterTests.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/report/ReportMessagePresenterTests.kt index 3e6b6c9a67..5f289faec9 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/report/ReportMessagePresenterTests.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/report/ReportMessagePresenterTests.kt @@ -32,7 +32,6 @@ import org.junit.Rule import org.junit.Test class ReportMessagePresenterTests { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt index 295dc71a58..8f9842e309 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt @@ -90,7 +90,6 @@ import java.io.File @Suppress("LargeClass") class MessageComposerPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/DefaultHtmlConverterProviderTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/DefaultHtmlConverterProviderTest.kt index 0bfe497a0f..276544a057 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/DefaultHtmlConverterProviderTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/DefaultHtmlConverterProviderTest.kt @@ -28,7 +28,6 @@ import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) class DefaultHtmlConverterProviderTest { - @get:Rule val composeTestRule = createComposeRule() @Test diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt index 8bb3c0dcb8..a82be0393b 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt @@ -65,7 +65,6 @@ import java.util.Date private const val FAKE_UNIQUE_ID = "FAKE_UNIQUE_ID" class TimelinePresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenterTests.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenterTests.kt index a6ef642672..f7c26e02f7 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenterTests.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenterTests.kt @@ -29,7 +29,6 @@ import org.junit.Rule import org.junit.Test class CustomReactionPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() @@ -40,7 +39,6 @@ class CustomReactionPresenterTests { moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - val event = aTimelineItemEvent(eventId = AN_EVENT_ID) val initialState = awaitItem() assertThat(initialState.target).isEqualTo(CustomReactionState.Target.None) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/FakeEmojibaseProvider.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/FakeEmojibaseProvider.kt index 96513c8ab7..90fbfba746 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/FakeEmojibaseProvider.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/FakeEmojibaseProvider.kt @@ -18,7 +18,7 @@ package io.element.android.features.messages.impl.timeline.components.customreac import io.element.android.emojibasebindings.EmojibaseStore -class FakeEmojibaseProvider: EmojibaseProvider { +class FakeEmojibaseProvider : EmojibaseProvider { override val emojibaseStore: EmojibaseStore get() = EmojibaseStore(mapOf()) } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenterTests.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenterTests.kt index d7d51c5eb4..0159af02ec 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenterTests.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenterTests.kt @@ -35,12 +35,11 @@ import org.junit.Rule import org.junit.Test class ReactionSummaryPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() private val aggregatedReaction = anAggregatedReaction(userId = A_USER_ID, key = "👍", isHighlighted = true) - private val roomMember = aRoomMember(userId = A_USER_ID, avatarUrl = AN_AVATAR_URL, displayName = A_USER_NAME) + private val roomMember = aRoomMember(userId = A_USER_ID, avatarUrl = AN_AVATAR_URL, displayName = A_USER_NAME) private val summaryEvent = ReactionSummaryEvents.ShowReactionSummary(AN_EVENT_ID, listOf(aggregatedReaction), aggregatedReaction.key) private val room = FakeMatrixRoom().apply { givenRoomMembersState(MatrixRoomMembersState.Ready(persistentListOf(roomMember))) @@ -81,5 +80,4 @@ class ReactionSummaryPresenterTests { assertThat(reactions?.first()?.senders?.first()?.user?.displayName).isEqualTo(A_USER_NAME) } } - } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenterTests.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenterTests.kt index ef98e3b3d9..5f65a9ad0a 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenterTests.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenterTests.kt @@ -27,7 +27,6 @@ import org.junit.Rule import org.junit.Test class ReadReceiptBottomSheetPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuPresenterTests.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuPresenterTests.kt index 4278679297..afed2d8b8f 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuPresenterTests.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuPresenterTests.kt @@ -29,7 +29,6 @@ import org.junit.Rule import org.junit.Test class RetrySendMenuPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactoryTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactoryTest.kt index 381c6048c2..9a729b17a2 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactoryTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactoryTest.kt @@ -76,7 +76,6 @@ import kotlin.time.Duration.Companion.minutes @RunWith(RobolectricTestRunner::class) class TimelineItemContentMessageFactoryTest { - @Test fun `test create OtherMessageType`() = runTest { val sut = createTimelineItemContentMessageFactory() @@ -447,7 +446,8 @@ class TimelineItemContentMessageFactoryTest { content = createStickerContent( "body", ImageInfo(32, 32, "image/webp", 8192, null, MediaSource("thumbnail://url"), null), - "url") + "url" + ) ) val expected = TimelineItemStickerContent( body = "body", @@ -659,7 +659,7 @@ class TimelineItemContentMessageFactoryTest { inImageInfo: ImageInfo, inUrl: String ): StickerContent { - return StickerContent ( + return StickerContent( body = body, info = inImageInfo, url = inUrl diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToDetailTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToDetailTest.kt index 33a88cb741..f07a73fd84 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToDetailTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToDetailTest.kt @@ -29,7 +29,6 @@ import io.element.android.libraries.matrix.test.A_USER_ID import org.junit.Test class InReplyToDetailTest { - @Test fun `map - with a not ready InReplyTo does not work`() { assertThat(InReplyTo.Pending.map()).isNull() diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPresenterTest.kt index 4a659f4ce3..303fb366b9 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPresenterTest.kt @@ -57,7 +57,6 @@ import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds class VoiceMessageComposerPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() @@ -463,7 +462,6 @@ class VoiceMessageComposerPresenterTest { assertThat(showSendFailureDialog).isFalse() } - assertThat(matrixRoom.sendMediaCount).isEqualTo(0) testPauseAndDestroy(finalState) } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/DefaultVoiceMessageMediaRepoTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/DefaultVoiceMessageMediaRepoTest.kt index 0208d06e95..a37f2e775f 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/DefaultVoiceMessageMediaRepoTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/DefaultVoiceMessageMediaRepoTest.kt @@ -29,7 +29,6 @@ import org.junit.rules.TemporaryFolder import java.io.File class DefaultVoiceMessageMediaRepoTest { - @get:Rule val temporaryFolder = TemporaryFolder() diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/DefaultVoiceMessagePlayerTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/DefaultVoiceMessagePlayerTest.kt index eb2c08d2be..f41bf7b801 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/DefaultVoiceMessagePlayerTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/DefaultVoiceMessagePlayerTest.kt @@ -29,7 +29,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class DefaultVoiceMessagePlayerTest { - @Test fun `initial state`() = runTest { createDefaultVoiceMessagePlayer().state.test { @@ -144,7 +143,7 @@ class DefaultVoiceMessagePlayerTest { assertThat(it.currentPosition).isEqualTo(1000) assertThat(it.duration).isEqualTo(1000) } - awaitItem().let {// Additional spurious state due to MediaPlayer owner change. + awaitItem().let { // Additional spurious state due to MediaPlayer owner change. assertThat(it.isReady).isFalse() assertThat(it.isPlaying).isFalse() assertThat(it.isEnded).isFalse() @@ -164,7 +163,7 @@ class DefaultVoiceMessagePlayerTest { // Play player1 again. player1.state.test { - awaitItem().let {// Last previous state/ + awaitItem().let { // Last previous state/ assertThat(it.isReady).isFalse() assertThat(it.isPlaying).isFalse() assertThat(it.isEnded).isTrue() @@ -172,7 +171,7 @@ class DefaultVoiceMessagePlayerTest { assertThat(it.duration).isEqualTo(1000) } assertThat(player1.prepare().isSuccess).isTrue() - awaitItem().let {// Additional spurious state due to MediaPlayer owner change. + awaitItem().let { // Additional spurious state due to MediaPlayer owner change. assertThat(it.isReady).isFalse() assertThat(it.isPlaying).isFalse() assertThat(it.isEnded).isFalse() diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/FakeRedactedVoiceMessageManager.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/FakeRedactedVoiceMessageManager.kt index 589847a3af..24ec179b51 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/FakeRedactedVoiceMessageManager.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/FakeRedactedVoiceMessageManager.kt @@ -19,7 +19,6 @@ package io.element.android.features.messages.impl.voicemessages.timeline import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem class FakeRedactedVoiceMessageManager : RedactedVoiceMessageManager { - private val _invocations: MutableList> = mutableListOf() val invocations: List> get() = _invocations diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/FakeVoiceMessageMediaRepo.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/FakeVoiceMessageMediaRepo.kt index 3fdef7eae8..96246be51c 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/FakeVoiceMessageMediaRepo.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/FakeVoiceMessageMediaRepo.kt @@ -23,7 +23,6 @@ import java.io.File * A fake implementation of [VoiceMessageMediaRepo] for testing purposes. */ class FakeVoiceMessageMediaRepo : VoiceMessageMediaRepo { - var shouldFail = false override suspend fun getMediaFile(): Result = simulateLongTask { diff --git a/features/messages/test/src/main/kotlin/io/element/android/features/messages/test/timeline/FakeHtmlConverterProvider.kt b/features/messages/test/src/main/kotlin/io/element/android/features/messages/test/timeline/FakeHtmlConverterProvider.kt index 0f7802632a..03de0f9f4d 100644 --- a/features/messages/test/src/main/kotlin/io/element/android/features/messages/test/timeline/FakeHtmlConverterProvider.kt +++ b/features/messages/test/src/main/kotlin/io/element/android/features/messages/test/timeline/FakeHtmlConverterProvider.kt @@ -23,8 +23,7 @@ import io.element.android.wysiwyg.utils.HtmlConverter class FakeHtmlConverterProvider( private val transform: (String) -> CharSequence = { it }, -): HtmlConverterProvider { - +) : HtmlConverterProvider { @Composable override fun Update(currentUserId: UserId) = Unit diff --git a/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicatorView.kt b/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicatorView.kt index 45f62f94b6..67721cab56 100644 --- a/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicatorView.kt +++ b/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicatorView.kt @@ -27,8 +27,8 @@ import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight /** * A view that displays a connectivity indicator when the device is offline, adding a default diff --git a/features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/NetworkMonitorImpl.kt b/features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/NetworkMonitorImpl.kt index ce881163f1..ddc75669fd 100644 --- a/features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/NetworkMonitorImpl.kt +++ b/features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/NetworkMonitorImpl.kt @@ -50,7 +50,6 @@ class NetworkMonitorImpl @Inject constructor( @ApplicationContext context: Context, appCoroutineScope: CoroutineScope, ) : NetworkMonitor { - private val connectivityManager: ConnectivityManager = context.getSystemService(ConnectivityManager::class.java) override val connectivity: StateFlow = callbackFlow { @@ -61,7 +60,6 @@ class NetworkMonitorImpl @Inject constructor( * Debounce the result to avoid quick offline<->online changes. */ val callback = object : ConnectivityManager.NetworkCallback() { - private val activeNetworksCount = AtomicInteger(0) override fun onLost(network: Network) { diff --git a/features/onboarding/api/src/main/kotlin/io/element/android/features/onboarding/api/OnBoardingEntryPoint.kt b/features/onboarding/api/src/main/kotlin/io/element/android/features/onboarding/api/OnBoardingEntryPoint.kt index d183b05386..77898ca91f 100644 --- a/features/onboarding/api/src/main/kotlin/io/element/android/features/onboarding/api/OnBoardingEntryPoint.kt +++ b/features/onboarding/api/src/main/kotlin/io/element/android/features/onboarding/api/OnBoardingEntryPoint.kt @@ -22,7 +22,6 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface OnBoardingEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder interface NodeBuilder { diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/DefaultOnBoardingEntryPoint.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/DefaultOnBoardingEntryPoint.kt index b5ce63116d..504d400106 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/DefaultOnBoardingEntryPoint.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/DefaultOnBoardingEntryPoint.kt @@ -29,7 +29,6 @@ import javax.inject.Inject class DefaultOnBoardingEntryPoint @Inject constructor() : OnBoardingEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): OnBoardingEntryPoint.NodeBuilder { return object : OnBoardingEntryPoint.NodeBuilder { - val plugins = ArrayList() override fun callback(callback: OnBoardingEntryPoint.Callback): OnBoardingEntryPoint.NodeBuilder { diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingConfig.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingConfig.kt index de164386b3..969ac382a4 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingConfig.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingConfig.kt @@ -17,6 +17,6 @@ package io.element.android.features.onboarding.impl object OnBoardingConfig { - const val canLoginWithQrCode = false - const val canCreateAccount = false + const val CAN_LOGIN_WITH_QR_CODE = false + const val CAN_CREATE_ACCOUNT = false } diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingNode.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingNode.kt index 21322657c1..f8653cc921 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingNode.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingNode.kt @@ -37,7 +37,6 @@ class OnBoardingNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins ) { - private fun onSignIn() { plugins().forEach { it.onSignIn() } } diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenter.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenter.kt index b26752fdbe..a514637026 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenter.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenter.kt @@ -33,8 +33,8 @@ class OnBoardingPresenter @Inject constructor( override fun present(): OnBoardingState { return OnBoardingState( isDebugBuild = buildMeta.buildType != BuildType.RELEASE, - canLoginWithQrCode = OnBoardingConfig.canLoginWithQrCode, - canCreateAccount = OnBoardingConfig.canCreateAccount, + canLoginWithQrCode = OnBoardingConfig.CAN_LOGIN_WITH_QR_CODE, + canCreateAccount = OnBoardingConfig.CAN_CREATE_ACCOUNT, ) } } diff --git a/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenterTest.kt b/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenterTest.kt index 9a356aa488..51d1ccc932 100644 --- a/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenterTest.kt +++ b/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenterTest.kt @@ -28,7 +28,6 @@ import org.junit.Rule import org.junit.Test class OnBoardingPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/pollcontent/PollContentView.kt b/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/pollcontent/PollContentView.kt index 706fa6e402..7b19c5da7e 100644 --- a/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/pollcontent/PollContentView.kt +++ b/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/pollcontent/PollContentView.kt @@ -102,14 +102,16 @@ fun PollContentView( var showConfirmation: Boolean by remember { mutableStateOf(false) } - if (showConfirmation) ConfirmationDialog( - content = stringResource(id = CommonStrings.common_poll_end_confirmation), - onSubmitClicked = { - onPollEnd() - showConfirmation = false - }, - onDismiss = { showConfirmation = false }, - ) + if (showConfirmation) { + ConfirmationDialog( + content = stringResource(id = CommonStrings.common_poll_end_confirmation), + onSubmitClicked = { + onPollEnd() + showConfirmation = false + }, + onDismiss = { showConfirmation = false }, + ) + } Column( modifier = modifier.fillMaxWidth(), diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultEndPollAction.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultEndPollAction.kt index 9959f1aecc..93e2cec78a 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultEndPollAction.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultEndPollAction.kt @@ -30,7 +30,6 @@ class DefaultEndPollAction @Inject constructor( private val room: MatrixRoom, private val analyticsService: AnalyticsService, ) : EndPollAction { - override suspend fun execute(pollStartId: EventId): Result { return room.endPoll( pollStartId = pollStartId, diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultSendPollResponseAction.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultSendPollResponseAction.kt index d6688ecb27..e60cb312af 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultSendPollResponseAction.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultSendPollResponseAction.kt @@ -30,7 +30,6 @@ class DefaultSendPollResponseAction @Inject constructor( private val room: MatrixRoom, private val analyticsService: AnalyticsService, ) : SendPollResponseAction { - override suspend fun execute(pollStartId: EventId, answerId: String): Result { return room.sendPollResponse( pollStartId = pollStartId, @@ -40,4 +39,3 @@ class DefaultSendPollResponseAction @Inject constructor( } } } - diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollException.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollException.kt index 20c10c4716..ccb94e3f32 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollException.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollException.kt @@ -18,10 +18,12 @@ package io.element.android.features.poll.impl.create internal sealed class CreatePollException : Exception() { data class GetPollFailed( - override val message: String?, override val cause: Throwable? + override val message: String?, + override val cause: Throwable? ) : CreatePollException() data class SavePollFailed( - override val message: String?, override val cause: Throwable? + override val message: String?, + override val cause: Throwable? ) : CreatePollException() } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollNode.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollNode.kt index a38ed3bb88..904303e672 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollNode.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollNode.kt @@ -39,7 +39,6 @@ class CreatePollNode @AssistedInject constructor( presenterFactory: CreatePollPresenter.Factory, analyticsService: AnalyticsService, ) : Node(buildContext, plugins = plugins) { - data class Inputs(val mode: CreatePollMode) : NodeInputs private val inputs: Inputs = inputs() diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollPresenter.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollPresenter.kt index 484e92eb15..046f953e48 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollPresenter.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollPresenter.kt @@ -52,7 +52,6 @@ class CreatePollPresenter @AssistedInject constructor( @Assisted private val navigateUp: () -> Unit, @Assisted private val mode: CreatePollMode, ) : Presenter { - @AssistedFactory interface Factory { fun create(backNavigator: () -> Unit, mode: CreatePollMode): CreatePollPresenter @@ -144,7 +143,7 @@ class CreatePollPresenter @AssistedInject constructor( poll = poll.withNewAnswer() } is CreatePollEvents.RemoveAnswer -> { - poll= poll.withAnswerRemoved(event.index) + poll = poll.withAnswerRemoved(event.index) } is CreatePollEvents.SetAnswer -> { poll = poll.withAnswerChanged(event.index, event.text) @@ -243,4 +242,3 @@ fun PollFormState.toUiAnswers(): ImmutableList { ) }.toImmutableList() } - diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt index 713fe8effc..df8c34ce57 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt @@ -31,7 +31,6 @@ class DefaultCreatePollEntryPoint @Inject constructor() : CreatePollEntryPoint { val plugins = ArrayList() return object : CreatePollEntryPoint.NodeBuilder { - override fun params(params: CreatePollEntryPoint.Params): CreatePollEntryPoint.NodeBuilder { plugins += CreatePollNode.Inputs(mode = params.mode) return this diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt index 918f6c7abb..5f1f62f18f 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt @@ -49,7 +49,6 @@ class PollHistoryFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins ) { - sealed interface NavTarget : Parcelable { @Parcelize data object Root : NavTarget @@ -83,5 +82,4 @@ class PollHistoryFlowNode @AssistedInject constructor( override fun View(modifier: Modifier) { BackstackView() } - } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryNode.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryNode.kt index 7e6ba37743..0d07f5597b 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryNode.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryNode.kt @@ -37,7 +37,6 @@ class PollHistoryNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins, ) { - interface Callback : Plugin { fun onEditPoll(pollStartEventId: EventId) } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenter.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenter.kt index 784f64c416..da37891d91 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenter.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenter.kt @@ -46,7 +46,6 @@ class PollHistoryPresenter @Inject constructor( private val endPollAction: EndPollAction, private val pollHistoryItemFactory: PollHistoryItemsFactory, ) : Presenter { - @Composable override fun present(): PollHistoryState { // TODO use room.rememberPollHistory() when working properly? @@ -87,7 +86,6 @@ class PollHistoryPresenter @Inject constructor( } } - return PollHistoryState( isLoading = isLoading, hasMoreToLoad = paginationState.hasMoreToLoadBackwards, diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryState.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryState.kt index 4d0f351bfd..8f6da18ff2 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryState.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryState.kt @@ -28,7 +28,6 @@ data class PollHistoryState( val pollHistoryItems: PollHistoryItems, val eventSink: (PollHistoryEvents) -> Unit, ) { - fun pollHistoryForFilter(filter: PollHistoryFilter): ImmutableList { return when (filter) { PollHistoryFilter.ONGOING -> pollHistoryItems.ongoing diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryView.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryView.kt index 19ca239725..4ea8717688 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryView.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryView.kt @@ -68,7 +68,6 @@ fun PollHistoryView( goBack: () -> Unit, modifier: Modifier = Modifier, ) { - fun onLoadMore() { state.eventSink(PollHistoryEvents.LoadMore) } @@ -133,7 +132,6 @@ fun PollHistoryView( onLoadMore = ::onLoadMore, modifier = Modifier.fillMaxSize(), ) - } } } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/model/PollHistoryItemsFactory.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/model/PollHistoryItemsFactory.kt index a85e4cada2..2c33328ea9 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/model/PollHistoryItemsFactory.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/model/PollHistoryItemsFactory.kt @@ -30,7 +30,6 @@ class PollHistoryItemsFactory @Inject constructor( private val daySeparatorFormatter: DaySeparatorFormatter, private val dispatchers: CoroutineDispatchers, ) { - suspend fun create(timelineItems: List): PollHistoryItems = withContext(dispatchers.computation) { val past = ArrayList() val ongoing = ArrayList() @@ -63,4 +62,3 @@ class PollHistoryItemsFactory @Inject constructor( } } } - diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/model/DefaultPollContentStateFactory.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/model/DefaultPollContentStateFactory.kt index cab06f79a1..3cbe132c85 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/model/DefaultPollContentStateFactory.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/model/DefaultPollContentStateFactory.kt @@ -32,7 +32,6 @@ import javax.inject.Inject class DefaultPollContentStateFactory @Inject constructor( private val matrixClient: MatrixClient, ) : PollContentStateFactory { - override suspend fun create( event: EventTimelineItem, content: PollContent diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/CreatePollPresenterTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/CreatePollPresenterTest.kt index 5ee32efeb2..d5be6c2bb6 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/CreatePollPresenterTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/CreatePollPresenterTest.kt @@ -42,7 +42,6 @@ import org.junit.Rule import org.junit.Test class CreatePollPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/PollFormStateSaverTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/PollFormStateSaverTest.kt index 62b3918372..7c60c005db 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/PollFormStateSaverTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/PollFormStateSaverTest.kt @@ -25,6 +25,7 @@ class PollFormStateSaverTest { companion object { val CanSaveScope = SaverScope { true } } + @Test fun `test save and restore`() { val state = PollFormState( diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/PollFormStateTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/PollFormStateTest.kt index cf97967f23..4438a6f734 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/PollFormStateTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/PollFormStateTest.kt @@ -23,7 +23,6 @@ import kotlinx.collections.immutable.toPersistentList import org.junit.Test class PollFormStateTest { - @Test fun `with new answer`() { val state = PollFormState.Empty @@ -134,7 +133,6 @@ class PollFormStateTest { } } - private fun aValidPollFormState(): PollFormState { return PollFormState.Empty.copy( question = "question", diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenterTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenterTest.kt index 39494e1f34..d683652b3a 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenterTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenterTest.kt @@ -48,7 +48,6 @@ import org.junit.Rule import org.junit.Test class PollHistoryPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/pollcontent/PollContentStateFactoryTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/pollcontent/PollContentStateFactoryTest.kt index fb2f42abf3..d39064d3a0 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/pollcontent/PollContentStateFactoryTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/pollcontent/PollContentStateFactoryTest.kt @@ -48,7 +48,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class PollContentStateFactoryTest { - private val factory = DefaultPollContentStateFactory(FakeMatrixClient()) private val eventTimelineItem = anEventTimelineItem() @@ -63,7 +62,8 @@ class PollContentStateFactoryTest { fun `Disclosed poll - not ended, some votes, including one from current user`() = runTest { val votes = MY_USER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap() val state = factory.create( - eventTimelineItem, aPollContent(votes = votes) + eventTimelineItem, + aPollContent(votes = votes) ) val expectedState = aPollContentState( answerItems = listOf( @@ -92,7 +92,8 @@ class PollContentStateFactoryTest { fun `Disclosed poll - ended, some votes, including one from current user (winner)`() = runTest { val votes = MY_USER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap() val state = factory.create( - eventTimelineItem, aPollContent(votes = votes, endTime = 1UL) + eventTimelineItem, + aPollContent(votes = votes, endTime = 1UL) ) val expectedState = aPollContentState( answerItems = listOf( @@ -110,7 +111,8 @@ class PollContentStateFactoryTest { fun `Disclosed poll - ended, some votes, including one from current user (not winner) and two winning votes`() = runTest { val votes = OTHER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap() val state = factory.create( - eventTimelineItem, aPollContent(votes = votes, endTime = 1UL) + eventTimelineItem, + aPollContent(votes = votes, endTime = 1UL) ) val expectedState = aPollContentState( answerItems = listOf( @@ -139,7 +141,8 @@ class PollContentStateFactoryTest { fun `Undisclosed poll - not ended, some votes, including one from current user`() = runTest { val votes = MY_USER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap() val state = factory.create( - eventTimelineItem, aPollContent(PollKind.Undisclosed, votes = votes) + eventTimelineItem, + aPollContent(PollKind.Undisclosed, votes = votes) ) val expectedState = aPollContentState( pollKind = PollKind.Undisclosed, @@ -171,7 +174,8 @@ class PollContentStateFactoryTest { fun `Undisclosed poll - ended, some votes, including one from current user (winner)`() = runTest { val votes = MY_USER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap() val state = factory.create( - eventTimelineItem, aPollContent(PollKind.Undisclosed, votes = votes, endTime = 1UL) + eventTimelineItem, + aPollContent(PollKind.Undisclosed, votes = votes, endTime = 1UL) ) val expectedState = aPollContentState( pollKind = PollKind.Undisclosed, @@ -190,7 +194,8 @@ class PollContentStateFactoryTest { fun `Undisclosed poll - ended, some votes, including one from current user (not winner) and two winning votes`() = runTest { val votes = OTHER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap() val state = factory.create( - eventTimelineItem, aPollContent(PollKind.Undisclosed, votes = votes, endTime = 1UL) + eventTimelineItem, + aPollContent(PollKind.Undisclosed, votes = votes, endTime = 1UL) ) val expectedState = aPollContentState( pollKind = PollKind.Undisclosed, @@ -275,15 +280,20 @@ class PollContentStateFactoryTest { private val MY_USER_WINNING_VOTES = persistentMapOf( A_POLL_ANSWER_1 to persistentListOf(A_USER_ID_2, A_USER_ID_3, A_USER_ID_4), - A_POLL_ANSWER_2 to persistentListOf(A_USER_ID /* my vote */, A_USER_ID_5, A_USER_ID_6, A_USER_ID_7, A_USER_ID_8, A_USER_ID_9), // winner + // First item (A_USER_ID) is for my vote + // winner + A_POLL_ANSWER_2 to persistentListOf(A_USER_ID, A_USER_ID_5, A_USER_ID_6, A_USER_ID_7, A_USER_ID_8, A_USER_ID_9), A_POLL_ANSWER_3 to persistentListOf(), A_POLL_ANSWER_4 to persistentListOf(A_USER_ID_10), ) private val OTHER_WINNING_VOTES = persistentMapOf( - A_POLL_ANSWER_1 to persistentListOf(A_USER_ID_2, A_USER_ID_3, A_USER_ID_4, A_USER_ID_5), // winner - A_POLL_ANSWER_2 to persistentListOf(A_USER_ID /* my vote */, A_USER_ID_6), + // A winner + A_POLL_ANSWER_1 to persistentListOf(A_USER_ID_2, A_USER_ID_3, A_USER_ID_4, A_USER_ID_5), + // First item (A_USER_ID) is for my vote + A_POLL_ANSWER_2 to persistentListOf(A_USER_ID, A_USER_ID_6), A_POLL_ANSWER_3 to persistentListOf(), - A_POLL_ANSWER_4 to persistentListOf(A_USER_ID_7, A_USER_ID_8, A_USER_ID_9, A_USER_ID_10), // winner + // Other winner + A_POLL_ANSWER_4 to persistentListOf(A_USER_ID_7, A_USER_ID_8, A_USER_ID_9, A_USER_ID_10), ) } } diff --git a/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/actions/FakeEndPollAction.kt b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/actions/FakeEndPollAction.kt index 285db277e4..d56faf0ad7 100644 --- a/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/actions/FakeEndPollAction.kt +++ b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/actions/FakeEndPollAction.kt @@ -20,7 +20,6 @@ import io.element.android.features.poll.api.actions.EndPollAction import io.element.android.libraries.matrix.api.core.EventId class FakeEndPollAction : EndPollAction { - private var executionCount = 0 fun verifyExecutionCount(count: Int) { diff --git a/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/actions/FakeSendPollResponseAction.kt b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/actions/FakeSendPollResponseAction.kt index f8fa3316d9..bae43448e0 100644 --- a/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/actions/FakeSendPollResponseAction.kt +++ b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/actions/FakeSendPollResponseAction.kt @@ -20,7 +20,6 @@ import io.element.android.features.poll.api.actions.SendPollResponseAction import io.element.android.libraries.matrix.api.core.EventId class FakeSendPollResponseAction : SendPollResponseAction { - private var executionCount = 0 fun verifyExecutionCount(count: Int) { diff --git a/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/pollcontent/FakePollContentStateFactory.kt b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/pollcontent/FakePollContentStateFactory.kt index b8377afe46..6ec6b8b2cd 100644 --- a/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/pollcontent/FakePollContentStateFactory.kt +++ b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/pollcontent/FakePollContentStateFactory.kt @@ -24,7 +24,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.PollContent import kotlinx.collections.immutable.toImmutableList class FakePollContentStateFactory : PollContentStateFactory { - override suspend fun create(event: EventTimelineItem, content: PollContent): PollContentState { return PollContentState( eventId = event.eventId, diff --git a/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt b/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt index 9d087e254e..0577412604 100644 --- a/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt +++ b/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt @@ -26,10 +26,10 @@ import io.element.android.libraries.matrix.api.core.RoomId import kotlinx.parcelize.Parcelize interface PreferencesEntryPoint : FeatureEntryPoint { - sealed interface InitialTarget : Parcelable { @Parcelize data object Root : InitialTarget + @Parcelize data object NotificationSettings : InitialTarget } @@ -38,7 +38,6 @@ interface PreferencesEntryPoint : FeatureEntryPoint { fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder interface NodeBuilder { - fun params(params: Params): NodeBuilder fun callback(callback: Callback): NodeBuilder fun build(): Node diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultCacheService.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultCacheService.kt index 2ffe480518..5d78d82477 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultCacheService.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultCacheService.kt @@ -28,7 +28,6 @@ import javax.inject.Inject @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) class DefaultCacheService @Inject constructor() : CacheService { - private val _clearedCacheEventFlow = MutableSharedFlow(0) override val clearedCacheEventFlow: Flow = _clearedCacheEventFlow diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt index cab79b61e4..ab665acc17 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt @@ -62,7 +62,6 @@ class PreferencesFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins ) { - sealed interface NavTarget : Parcelable { @Parcelize data object Root : NavTarget diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutNode.kt index 423ae6c793..5936b26b1a 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutNode.kt @@ -26,9 +26,9 @@ import com.bumble.appyx.core.plugin.Plugin import dagger.assisted.Assisted import dagger.assisted.AssistedInject import io.element.android.anvilannotations.ContributesNode +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTab import io.element.android.libraries.di.SessionScope -import io.element.android.compound.theme.ElementTheme @ContributesNode(SessionScope::class) class AboutNode @AssistedInject constructor( @@ -36,7 +36,6 @@ class AboutNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: AboutPresenter, ) : Node(buildContext, plugins = plugins) { - private fun onElementLegalClicked( activity: Activity, darkTheme: Boolean, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutPresenter.kt index 556c62ec73..76c3054f61 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutPresenter.kt @@ -21,10 +21,8 @@ import io.element.android.libraries.architecture.Presenter import javax.inject.Inject class AboutPresenter @Inject constructor() : Presenter { - @Composable override fun present(): AboutState { - return AboutState( elementLegals = getAllLegals(), ) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutView.kt index a16eb72281..c581811b6b 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutView.kt @@ -20,10 +20,10 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter -import io.element.android.libraries.designsystem.components.preferences.PreferenceText import io.element.android.libraries.designsystem.components.preferences.PreferencePage -import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.components.preferences.PreferenceText import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.ui.strings.CommonStrings @Composable diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsNode.kt index f7f0fd2eb8..45d2a07a71 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsNode.kt @@ -32,7 +32,6 @@ class AdvancedSettingsNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: AdvancedSettingsPresenter, ) : Node(buildContext, plugins = plugins) { - @Composable override fun View(modifier: Modifier) { val state = presenter.present() diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenter.kt index 46a4bd0bbd..ce5de0b8e8 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenter.kt @@ -33,7 +33,6 @@ import javax.inject.Inject class AdvancedSettingsPresenter @Inject constructor( private val preferencesStore: PreferencesStore, ) : Presenter { - @Composable override fun present(): AdvancedSettingsState { val localCoroutineScope = rememberCoroutineScope() diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsView.kt index 011500a739..d28b9b2380 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsView.kt @@ -20,6 +20,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter +import io.element.android.compound.theme.Theme +import io.element.android.compound.theme.themes import io.element.android.features.preferences.impl.R import io.element.android.libraries.designsystem.components.dialogs.ListOption import io.element.android.libraries.designsystem.components.dialogs.SingleSelectionDialog @@ -29,8 +31,6 @@ import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.ListItem import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.Theme -import io.element.android.compound.theme.themes import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsNode.kt index adc917b7e6..1ef0ec10e6 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsNode.kt @@ -32,7 +32,6 @@ class AnalyticsSettingsNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: AnalyticsSettingsPresenter, ) : Node(buildContext, plugins = plugins) { - @Composable override fun View(modifier: Modifier) { val state = presenter.present() diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsPresenter.kt index 1ef344403d..b412c85732 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsPresenter.kt @@ -24,7 +24,6 @@ import javax.inject.Inject class AnalyticsSettingsPresenter @Inject constructor( private val analyticsPresenter: AnalyticsPreferencesPresenter, ) : Presenter { - @Composable override fun present(): AnalyticsSettingsState { val analyticsState = analyticsPresenter.present() diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsView.kt index 751d513385..c41249b1e2 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsView.kt @@ -22,8 +22,8 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import io.element.android.features.analytics.api.preferences.AnalyticsPreferencesView import io.element.android.libraries.designsystem.components.preferences.PreferencePage -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.ui.strings.CommonStrings @Composable diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt index 376f14f7bf..58f7ac7c02 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt @@ -21,5 +21,5 @@ import io.element.android.libraries.featureflag.ui.model.FeatureUiModel sealed interface DeveloperSettingsEvents { data class UpdateEnabledFeature(val feature: FeatureUiModel, val isEnabled: Boolean) : DeveloperSettingsEvents data class SetCustomElementCallBaseUrl(val baseUrl: String?) : DeveloperSettingsEvents - data object ClearCache: DeveloperSettingsEvents + data object ClearCache : DeveloperSettingsEvents } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsNode.kt index 96339e7bb4..8cec8fa85f 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsNode.kt @@ -37,7 +37,6 @@ class DeveloperSettingsNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: DeveloperSettingsPresenter, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun openConfigureTracing() } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt index 3c8ca8dc3b..c70a95c4fe 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt @@ -53,7 +53,6 @@ class DeveloperSettingsPresenter @Inject constructor( private val rageshakePresenter: RageshakePreferencesPresenter, private val preferencesStore: PreferencesStore, ) : Presenter { - @Composable override fun present(): DeveloperSettingsState { val rageshakeState = rageshakePresenter.present() @@ -175,6 +174,3 @@ private fun customElementCallUrlValidator(url: String?): Boolean { if (parsedUrl.host.isNullOrBlank()) error("Missing host") }.isSuccess } - - - diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/tracing/ConfigureTracingNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/tracing/ConfigureTracingNode.kt index 7c58058798..b95f85dbeb 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/tracing/ConfigureTracingNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/tracing/ConfigureTracingNode.kt @@ -32,7 +32,6 @@ class ConfigureTracingNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: ConfigureTracingPresenter, ) : Node(buildContext, plugins = plugins) { - @Composable override fun View(modifier: Modifier) { val state = presenter.present() diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/tracing/ConfigureTracingPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/tracing/ConfigureTracingPresenter.kt index b0d2243c70..19a9e69e17 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/tracing/ConfigureTracingPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/tracing/ConfigureTracingPresenter.kt @@ -27,7 +27,6 @@ class ConfigureTracingPresenter @Inject constructor( private val tracingConfigurationStore: TracingConfigurationStore, private val targetLogLevelMapBuilder: TargetLogLevelMapBuilder, ) : Presenter { - @Composable override fun present(): ConfigureTracingState { val modifiedMap = remember { mutableStateOf(targetLogLevelMapBuilder.getCurrentMap()) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsNode.kt index 0e3861c5ec..122d13a817 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsNode.kt @@ -33,7 +33,6 @@ class NotificationSettingsNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: NotificationSettingsPresenter, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun editDefaultNotificationMode(isOneToOne: Boolean) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsState.kt index 6999acb103..5c23e74cd5 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsState.kt @@ -47,7 +47,3 @@ data class NotificationSettingsState( val appNotificationsEnabled: Boolean, ) } - - - - diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt index da8d79be50..2226049efe 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsView.kt @@ -60,7 +60,6 @@ fun NotificationSettingsView( onBackPressed = onBackPressed, title = stringResource(id = R.string.screen_notification_settings_title) ) { - when (state.matrixSettings) { is NotificationSettingsState.MatrixSettings.Invalid -> InvalidNotificationSettingsView( showError = state.matrixSettings.fixFailed, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/SystemNotificationsEnabledProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/SystemNotificationsEnabledProvider.kt index f33b1cb773..9aaec23e94 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/SystemNotificationsEnabledProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/SystemNotificationsEnabledProvider.kt @@ -27,13 +27,13 @@ import javax.inject.Inject interface SystemNotificationsEnabledProvider { fun notificationsEnabled(): Boolean } + @SingleIn(AppScope::class) @ContributesBinding(AppScope::class, boundType = SystemNotificationsEnabledProvider::class) class DefaultSystemNotificationsEnabledProvider @Inject constructor( @ApplicationContext private val context: Context, -): SystemNotificationsEnabledProvider { +) : SystemNotificationsEnabledProvider { override fun notificationsEnabled(): Boolean { return NotificationManagerCompat.from(context).areNotificationsEnabled() } } - diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/DefaultNotificationSettingOption.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/DefaultNotificationSettingOption.kt index 1d07589a24..b5a79947af 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/DefaultNotificationSettingOption.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/DefaultNotificationSettingOption.kt @@ -20,12 +20,12 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import io.element.android.features.preferences.impl.R -import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.components.list.ListItemContent import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.theme.components.ListItem import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.matrix.api.room.RoomNotificationMode -import io.element.android.libraries.designsystem.components.list.ListItemContent -import io.element.android.libraries.designsystem.theme.components.ListItem @Composable fun DefaultNotificationSettingOption( diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingNode.kt index 535203e35e..de365878ad 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingNode.kt @@ -36,7 +36,6 @@ class EditDefaultNotificationSettingNode @AssistedInject constructor( @Assisted plugins: List, presenterFactory: EditDefaultNotificationSettingPresenter.Factory ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun openRoomNotificationSettings(roomId: RoomId) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingStateEvents.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingStateEvents.kt index f5774f1d78..f5b03c6433 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingStateEvents.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingStateEvents.kt @@ -19,6 +19,6 @@ package io.element.android.features.preferences.impl.notifications.edit import io.element.android.libraries.matrix.api.room.RoomNotificationMode sealed interface EditDefaultNotificationSettingStateEvents { - data class SetNotificationMode(val mode: RoomNotificationMode): EditDefaultNotificationSettingStateEvents - data object ClearError: EditDefaultNotificationSettingStateEvents + data class SetNotificationMode(val mode: RoomNotificationMode) : EditDefaultNotificationSettingStateEvents + data object ClearError : EditDefaultNotificationSettingStateEvents } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingView.kt index d03b8b2754..e67eb280af 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingView.kt @@ -59,7 +59,6 @@ fun EditDefaultNotificationSettingView( onBackPressed = onBackPressed, title = stringResource(id = title) ) { - // Only ALL_MESSAGES and MENTIONS_AND_KEYWORDS_ONLY are valid global defaults. val validModes = listOf(RoomNotificationMode.ALL_MESSAGES, RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY) @@ -69,7 +68,6 @@ fun EditDefaultNotificationSettingView( R.string.screen_notification_settings_edit_screen_group_section_header } PreferenceCategory(title = stringResource(id = categoryTitle)) { - if (state.mode != null) { Column(modifier = Modifier.selectableGroup()) { validModes.forEach { item -> diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootNode.kt index 05d11b85f1..cbdf2418ce 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootNode.kt @@ -42,7 +42,6 @@ class PreferencesRootNode @AssistedInject constructor( private val presenter: PreferencesRootPresenter, private val directLogoutView: DirectLogoutView, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun onOpenBugReport() fun onVerifyClicked() diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt index 7472f6df7a..4ad2a95df4 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenter.kt @@ -53,7 +53,6 @@ class PreferencesRootPresenter @Inject constructor( private val indicatorService: IndicatorService, private val directLogoutPresenter: DirectLogoutPresenter, ) : Presenter { - @Composable override fun present(): PreferencesRootState { val matrixUser: MutableState = rememberSaveable { diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/UserPreferences.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/UserPreferences.kt index 6020b83231..59c8e72cc6 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/UserPreferences.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/UserPreferences.kt @@ -19,8 +19,8 @@ package io.element.android.features.preferences.impl.user import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.PreviewParameter -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.ui.components.MatrixUserHeader import io.element.android.libraries.matrix.ui.components.MatrixUserWithNullProvider diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileNode.kt index 738ae4ec6d..4fcbb94cf1 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileNode.kt @@ -35,7 +35,6 @@ class EditUserProfileNode @AssistedInject constructor( @Assisted plugins: List, presenterFactory: EditUserProfilePresenter.Factory, ) : Node(buildContext, plugins = plugins) { - data class Inputs( val matrixUser: MatrixUser ) : NodeInputs diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt index 2a51aad22b..e62f1077d8 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt @@ -54,7 +54,6 @@ class EditUserProfilePresenter @AssistedInject constructor( private val mediaPreProcessor: MediaPreProcessor, permissionsPresenterFactory: PermissionsPresenter.Factory, ) : Presenter { - private val cameraPermissionPresenter: PermissionsPresenter = permissionsPresenterFactory.create(android.Manifest.permission.CAMERA) private var pendingPermissionRequest = false diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileView.kt index ff587b217d..92294f27de 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileView.kt @@ -41,9 +41,11 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.features.preferences.impl.R import io.element.android.libraries.designsystem.components.LabelledOutlinedTextField import io.element.android.libraries.designsystem.components.async.AsyncActionView +import io.element.android.libraries.designsystem.components.async.AsyncActionViewDefaults import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.preview.ElementPreview @@ -56,8 +58,6 @@ import io.element.android.libraries.designsystem.theme.components.TopAppBar import io.element.android.libraries.matrix.ui.components.AvatarActionBottomSheet import io.element.android.libraries.matrix.ui.components.EditableAvatarView import io.element.android.libraries.permissions.api.PermissionsView -import io.element.android.compound.theme.ElementTheme -import io.element.android.libraries.designsystem.components.async.AsyncActionViewDefaults import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.coroutines.launch @@ -183,4 +183,3 @@ internal fun EditUserProfileViewPreview(@PreviewParameter(EditUserProfileStatePr state = state, ) } - diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/about/AboutPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/about/AboutPresenterTest.kt index 2cfd73b614..be2742c80e 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/about/AboutPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/about/AboutPresenterTest.kt @@ -26,7 +26,6 @@ import org.junit.Rule import org.junit.Test class AboutPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenterTest.kt index 22ef0011a6..6d7877de32 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenterTest.kt @@ -20,8 +20,8 @@ import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.featureflag.test.InMemoryPreferencesStore import io.element.android.compound.theme.Theme +import io.element.android.libraries.featureflag.test.InMemoryPreferencesStore import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.awaitLastSequentialItem import kotlinx.coroutines.test.runTest @@ -29,7 +29,6 @@ import org.junit.Rule import org.junit.Test class AdvancedSettingsPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsPresenterTest.kt index 9570258092..f09e667747 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsPresenterTest.kt @@ -29,7 +29,6 @@ import org.junit.Rule import org.junit.Test class AnalyticsSettingsPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt index 9872ed0804..50bf1ab426 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt @@ -37,7 +37,6 @@ import org.junit.Rule import org.junit.Test class DeveloperSettingsPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/tracing/ConfigureTracingPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/tracing/ConfigureTracingPresenterTest.kt index 5ca874b6d6..4dd0c01e56 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/tracing/ConfigureTracingPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/tracing/ConfigureTracingPresenterTest.kt @@ -29,9 +29,9 @@ import org.junit.Rule import org.junit.Test class ConfigureTracingPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() + @Test fun `present - initial state`() = runTest { val store = InMemoryTracingConfigurationStore() diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/EditDefaultNotificationSettingsPresenterTests.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/EditDefaultNotificationSettingsPresenterTests.kt index 330dea4e94..25b5aa4532 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/EditDefaultNotificationSettingsPresenterTests.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/EditDefaultNotificationSettingsPresenterTests.kt @@ -140,5 +140,4 @@ class EditDefaultNotificationSettingsPresenterTests { matrixClient = matrixClient ) } - } diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/FakeSystemNotificationsEnabledProvider.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/FakeSystemNotificationsEnabledProvider.kt index 1a7c1b5004..9859ca21e0 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/FakeSystemNotificationsEnabledProvider.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/FakeSystemNotificationsEnabledProvider.kt @@ -16,7 +16,7 @@ package io.element.android.features.preferences.impl.notifications -class FakeSystemNotificationsEnabledProvider: SystemNotificationsEnabledProvider { +class FakeSystemNotificationsEnabledProvider : SystemNotificationsEnabledProvider { override fun notificationsEnabled(): Boolean { return true } diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenterTests.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenterTests.kt index 96eca14746..e058d4691b 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenterTests.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenterTests.kt @@ -232,7 +232,7 @@ class NotificationSettingsPresenterTests { private fun createNotificationSettingsPresenter( notificationSettingsService: FakeNotificationSettingsService = FakeNotificationSettingsService() - ) : NotificationSettingsPresenter { + ): NotificationSettingsPresenter { val matrixClient = FakeMatrixClient(notificationSettingsService = notificationSettingsService) return NotificationSettingsPresenter( notificationSettingsService = notificationSettingsService, diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt index 0a2dd8efe3..983a820509 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt @@ -41,7 +41,6 @@ import org.junit.Rule import org.junit.Test class PreferencesRootPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenterTest.kt index 8b3bb0c2f8..43d9648684 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenterTest.kt @@ -52,7 +52,6 @@ import java.io.File @ExperimentalCoroutinesApi class EditUserProfilePresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt index 5a59cb0622..cebc94f31d 100644 --- a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt +++ b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt @@ -22,7 +22,6 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface BugReportEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder interface NodeBuilder { diff --git a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/crash/CrashDetectionView.kt b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/crash/CrashDetectionView.kt index 3d49d637e5..48c10a75c4 100644 --- a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/crash/CrashDetectionView.kt +++ b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/crash/CrashDetectionView.kt @@ -20,8 +20,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import io.element.android.features.rageshake.api.R import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.utils.LogCompositions import io.element.android.libraries.ui.strings.CommonStrings @@ -56,7 +56,8 @@ private fun CrashDetectionContent( ) { ConfirmationDialog( title = stringResource(id = CommonStrings.action_report_bug), - content = stringResource(id = R.string.crash_detection_dialog_content, /* TODO App name */ "Element"), + // TODO Replace with app name + content = stringResource(id = R.string.crash_detection_dialog_content, "Element"), submitText = stringResource(id = CommonStrings.action_yes), cancelText = stringResource(id = CommonStrings.action_no), onCancelClicked = onNoClicked, diff --git a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/detection/RageshakeDetectionView.kt b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/detection/RageshakeDetectionView.kt index 0672978a04..996392d879 100644 --- a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/detection/RageshakeDetectionView.kt +++ b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/detection/RageshakeDetectionView.kt @@ -27,8 +27,8 @@ import io.element.android.features.rageshake.api.screenshot.ImageResult import io.element.android.features.rageshake.api.screenshot.screenshot import io.element.android.libraries.androidutils.hardware.vibrate import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.utils.LogCompositions import io.element.android.libraries.designsystem.utils.OnLifecycleEvent import io.element.android.libraries.ui.strings.CommonStrings diff --git a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/preferences/RageshakePreferencesView.kt b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/preferences/RageshakePreferencesView.kt index d3c830a821..0ce48b3d08 100644 --- a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/preferences/RageshakePreferencesView.kt +++ b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/preferences/RageshakePreferencesView.kt @@ -26,8 +26,8 @@ import io.element.android.libraries.designsystem.components.preferences.Preferen import io.element.android.libraries.designsystem.components.preferences.PreferenceSlide import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch import io.element.android.libraries.designsystem.components.preferences.PreferenceText -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.ui.strings.CommonStrings @Composable @@ -56,7 +56,8 @@ fun RageshakePreferencesView( // summary = stringResource(id = CommonStrings.settings_rageshake_detection_threshold_summary), value = state.sensitivity, enabled = state.isEnabled, - steps = 3 /* 5 possible values - steps are in ]0, 1[ */, + // 5 possible values - steps are in ]0, 1[ + steps = 3, onValueChange = ::onSensitivityChanged ) } else { diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportNode.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportNode.kt index db9c2b5aa1..90a81e279d 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportNode.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportNode.kt @@ -38,7 +38,6 @@ class BugReportNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: BugReportPresenter, ) : Node(buildContext, plugins = plugins) { - @Composable override fun View(modifier: Modifier) { val state = presenter.present() diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt index 34506b8e8d..fea6bc95b1 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt @@ -42,12 +42,10 @@ class BugReportPresenter @Inject constructor( private val screenshotHolder: ScreenshotHolder, private val appCoroutineScope: CoroutineScope, ) : Presenter { - private class BugReporterUploadListener( private val sendingProgress: MutableFloatState, private val sendingAction: MutableState> ) : BugReporterListener { - override fun onUploadCancelled() { sendingProgress.floatValue = 0f sendingAction.value = AsyncAction.Uninitialized diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt index 5abaec94b6..8b6bd0723a 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt @@ -28,7 +28,6 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class DefaultBugReportEntryPoint @Inject constructor() : BugReportEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): BugReportEntryPoint.NodeBuilder { - val plugins = ArrayList() return object : BugReportEntryPoint.NodeBuilder { diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/DefaultCrashDetectionPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/DefaultCrashDetectionPresenter.kt index 6a15553bdb..1097c79939 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/DefaultCrashDetectionPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/DefaultCrashDetectionPresenter.kt @@ -20,10 +20,10 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.rememberCoroutineScope import com.squareup.anvil.annotations.ContributesBinding +import io.element.android.features.rageshake.api.crash.CrashDataStore import io.element.android.features.rageshake.api.crash.CrashDetectionEvents import io.element.android.features.rageshake.api.crash.CrashDetectionPresenter import io.element.android.features.rageshake.api.crash.CrashDetectionState -import io.element.android.features.rageshake.api.crash.CrashDataStore import io.element.android.libraries.di.AppScope import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @@ -32,7 +32,6 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class DefaultCrashDetectionPresenter @Inject constructor(private val crashDataStore: CrashDataStore) : CrashDetectionPresenter { - @Composable override fun present(): CrashDetectionState { val localCoroutineScope = rememberCoroutineScope() diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/detection/DefaultRageshakeDetectionPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/detection/DefaultRageshakeDetectionPresenter.kt index 58a49611be..2741505e3e 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/detection/DefaultRageshakeDetectionPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/detection/DefaultRageshakeDetectionPresenter.kt @@ -44,7 +44,6 @@ class DefaultRageshakeDetectionPresenter @Inject constructor( private val rageShake: RageShake, private val preferencesPresenter: RageshakePreferencesPresenter, ) : RageshakeDetectionPresenter { - @Composable override fun present(): RageshakeDetectionState { val localCoroutineScope = rememberCoroutineScope() diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/LogFormatter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/LogFormatter.kt index 45c2d0a65b..e7381c1c58 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/LogFormatter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/LogFormatter.kt @@ -26,7 +26,6 @@ import java.util.logging.Formatter import java.util.logging.LogRecord internal class LogFormatter : Formatter() { - override fun format(r: LogRecord): String { if (!isTimeZoneSet) { DATE_FORMAT.timeZone = TimeZone.getTimeZone("UTC") diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/VectorFileLogger.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/VectorFileLogger.kt index a4d06564a8..859f1c961a 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/VectorFileLogger.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/VectorFileLogger.kt @@ -41,7 +41,6 @@ class VectorFileLogger( // private val vectorPreferences: VectorPreferences private val dispatcher: CoroutineDispatcher = Dispatchers.IO, ) : Timber.Tree() { - companion object { fun getFromTimber(): VectorFileLogger? { return Timber.forest().filterIsInstance().firstOrNull() @@ -82,7 +81,7 @@ class VectorFileLogger( init { for (i in 0..15) { - val file = File(cacheDirectory, "elementLogs.${i}.txt") + val file = File(cacheDirectory, "elementLogs.$i.txt") file.safeDelete() } @@ -119,14 +118,12 @@ class VectorFileLogger( } private fun skipLog(priority: Int): Boolean { - /* - return if (vectorPreferences.labAllowedExtendedLogging()) { - false - } else { - // Exclude verbose logs - priority < Log.DEBUG - } - */ + // return if (vectorPreferences.labAllowedExtendedLogging()) { + // false + // } else { + // // Exclude verbose logs + // priority < Log.DEBUG + // } // Exclude verbose logs return priority < Log.DEBUG } @@ -144,7 +141,7 @@ class VectorFileLogger( ?.flush() ?.let { 0 until logRotationCount } ?.mapNotNull { index -> - File(cacheDirectory, "$fileNamePrefix.${index}.txt") + File(cacheDirectory, "$fileNamePrefix.$index.txt") .takeIf { it.exists() } } } diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/preferences/DefaultRageshakePreferencesPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/preferences/DefaultRageshakePreferencesPresenter.kt index 82a411ec95..2880d908a0 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/preferences/DefaultRageshakePreferencesPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/preferences/DefaultRageshakePreferencesPresenter.kt @@ -38,7 +38,6 @@ class DefaultRageshakePreferencesPresenter @Inject constructor( private val rageshake: RageShake, private val rageshakeDataStore: RageshakeDataStore, ) : RageshakePreferencesPresenter { - @Composable override fun present(): RageshakePreferencesState { val localCoroutineScope = rememberCoroutineScope() diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/rageshake/DefaultRageShake.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/rageshake/DefaultRageShake.kt index 1d9ff6ee5a..9da634b0fe 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/rageshake/DefaultRageShake.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/rageshake/DefaultRageShake.kt @@ -33,7 +33,6 @@ import javax.inject.Inject class DefaultRageShake @Inject constructor( @ApplicationContext context: Context, ) : ShakeDetector.Listener, RageShake { - private var sensorManager = context.getSystemService() private var shakeDetector: ShakeDetector? = null private var interceptor: (() -> Unit)? = null diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt index 5acf5b4103..2fc834086a 100755 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt @@ -88,6 +88,7 @@ class DefaultBugReporter @Inject constructor( // the pending bug report call private var bugReportCall: Call? = null + // boolean to cancel the bug report private val isCancelled = false private val logcatCommandDebug = arrayOf("logcat", "-d", "-v", "threadtime", "*:*") @@ -187,7 +188,8 @@ class DefaultBugReporter @Inject constructor( try { builder.addFormDataPart( "file", - screenshotFile.name, screenshotFile.asRequestBody(MimeTypes.OctetStream.toMediaTypeOrNull()) + screenshotFile.name, + screenshotFile.asRequestBody(MimeTypes.OctetStream.toMediaTypeOrNull()) ) } catch (e: Exception) { Timber.e(e, "## sendBugReport() : fail to write screenshot") diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenterTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenterTest.kt index 9161862256..e36cc5b841 100644 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenterTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenterTest.kt @@ -35,7 +35,6 @@ const val A_SHORT_DESCRIPTION = "bug!" const val A_LONG_DESCRIPTION = "I have seen a bug!" class BugReportPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/crash/ui/CrashDetectionPresenterTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/crash/ui/CrashDetectionPresenterTest.kt index 716f424ce3..917e427d9e 100644 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/crash/ui/CrashDetectionPresenterTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/crash/ui/CrashDetectionPresenterTest.kt @@ -30,7 +30,6 @@ import org.junit.Rule import org.junit.Test class CrashDetectionPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() @@ -58,7 +57,6 @@ class CrashDetectionPresenterTest { skipItems(1) val initialState = awaitItem() assertThat(initialState.crashDetected).isTrue() - } } diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/detection/RageshakeDetectionPresenterTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/detection/RageshakeDetectionPresenterTest.kt index a8a80fdc25..ac8bbd6d86 100644 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/detection/RageshakeDetectionPresenterTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/detection/RageshakeDetectionPresenterTest.kt @@ -37,7 +37,6 @@ import org.junit.Rule import org.junit.Test class RageshakeDetectionPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() @@ -202,4 +201,3 @@ class RageshakeDetectionPresenterTest { } } } - diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/preferences/RageshakePreferencesPresenterTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/preferences/RageshakePreferencesPresenterTest.kt index c639adb98f..a2aa895784 100644 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/preferences/RageshakePreferencesPresenterTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/preferences/RageshakePreferencesPresenterTest.kt @@ -30,7 +30,6 @@ import org.junit.Rule import org.junit.Test class RageshakePreferencesPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() @@ -102,4 +101,3 @@ class RageshakePreferencesPresenterTest { } } } - diff --git a/features/rageshake/test/src/main/kotlin/io/element/android/features/rageshake/test/rageshake/FakeRageShake.kt b/features/rageshake/test/src/main/kotlin/io/element/android/features/rageshake/test/rageshake/FakeRageShake.kt index d127c360cf..b404f85b62 100644 --- a/features/rageshake/test/src/main/kotlin/io/element/android/features/rageshake/test/rageshake/FakeRageShake.kt +++ b/features/rageshake/test/src/main/kotlin/io/element/android/features/rageshake/test/rageshake/FakeRageShake.kt @@ -21,7 +21,6 @@ import io.element.android.features.rageshake.api.rageshake.RageShake class FakeRageShake( private var isAvailableValue: Boolean = true ) : RageShake { - private var interceptor: (() -> Unit)? = null override fun isAvailable() = isAvailableValue diff --git a/features/rageshake/test/src/main/kotlin/io/element/android/features/rageshake/test/rageshake/FakeRageshakeDataStore.kt b/features/rageshake/test/src/main/kotlin/io/element/android/features/rageshake/test/rageshake/FakeRageshakeDataStore.kt index 698e0a3cd8..e5f564bda2 100644 --- a/features/rageshake/test/src/main/kotlin/io/element/android/features/rageshake/test/rageshake/FakeRageshakeDataStore.kt +++ b/features/rageshake/test/src/main/kotlin/io/element/android/features/rageshake/test/rageshake/FakeRageshakeDataStore.kt @@ -26,7 +26,6 @@ class FakeRageshakeDataStore( isEnabled: Boolean = false, sensitivity: Float = A_SENSITIVITY, ) : RageshakeDataStore { - private val isEnabledFlow = MutableStateFlow(isEnabled) override fun isEnabled(): Flow = isEnabledFlow diff --git a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt index bd1a414294..bde560189b 100644 --- a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt +++ b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt @@ -27,7 +27,6 @@ import io.element.android.libraries.matrix.api.core.UserId import kotlinx.parcelize.Parcelize interface RoomDetailsEntryPoint : FeatureEntryPoint { - sealed interface InitialTarget : Parcelable { @Parcelize data object RoomDetails : InitialTarget diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt index 108ef088f0..a5c674416c 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt @@ -29,7 +29,6 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class DefaultRoomDetailsEntryPoint @Inject constructor() : RoomDetailsEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomDetailsEntryPoint.NodeBuilder { return object : RoomDetailsEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsFlowNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsFlowNode.kt index 76a130b681..959d209d88 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsFlowNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsFlowNode.kt @@ -61,7 +61,6 @@ class RoomDetailsFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins, ) { - sealed interface NavTarget : Parcelable { @Parcelize data object RoomDetails : NavTarget diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsNode.kt index dad02d0d07..d57a067a95 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsNode.kt @@ -46,7 +46,6 @@ class RoomDetailsNode @AssistedInject constructor( private val room: MatrixRoom, private val analyticsService: AnalyticsService, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun openRoomMemberList() fun openInviteMembers() diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt index 34a0b2b2e1..e9aebe104b 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt @@ -58,7 +58,6 @@ class RoomDetailsPresenter @Inject constructor( private val leaveRoomPresenter: LeaveRoomPresenter, private val dispatchers: CoroutineDispatchers, ) : Presenter { - @Composable override fun present(): RoomDetailsState { val scope = rememberCoroutineScope() diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt index ad76f78515..b84302463f 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt @@ -90,5 +90,6 @@ fun aRoomDetailsState() = RoomDetailsState( ) fun aDmRoomDetailsState(isDmMemberIgnored: Boolean = false) = aRoomDetailsState().copy( - roomType = RoomDetailsType.Dm(aDmRoomMember(isIgnored = isDmMemberIgnored)), roomMemberDetailsState = aRoomMemberDetailsState() + roomType = RoomDetailsType.Dm(aDmRoomMember(isIgnored = isDmMemberIgnored)), + roomMemberDetailsState = aRoomMemberDetailsState() ) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/blockuser/BlockUserSection.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/blockuser/BlockUserSection.kt index 4ca3c313de..7ecf4ef1f9 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/blockuser/BlockUserSection.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/blockuser/BlockUserSection.kt @@ -56,7 +56,8 @@ internal fun BlockUserSection(state: RoomMemberDetailsState, modifier: Modifier val event = when (state.isBlocked.prevData) { true -> RoomMemberDetailsEvents.UnblockUser(needsConfirmation = false) false -> RoomMemberDetailsEvents.BlockUser(needsConfirmation = false) - null -> /*Should not happen */ RoomMemberDetailsEvents.ClearBlockUserError + // null case Should not happen + null -> RoomMemberDetailsEvents.ClearBlockUserError } state.eventSink(event) }, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/di/RoomMemberModule.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/di/RoomMemberModule.kt index c65b63432e..79aa5c6315 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/di/RoomMemberModule.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/di/RoomMemberModule.kt @@ -29,7 +29,6 @@ import io.element.android.libraries.matrix.api.room.MatrixRoom @Module @ContributesTo(RoomScope::class) object RoomMemberModule { - @Provides fun provideRoomMemberDetailsPresenterFactory( matrixClient: MatrixClient, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditNode.kt index e81cd84c24..34f6be1b7b 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditNode.kt @@ -36,7 +36,6 @@ class RoomDetailsEditNode @AssistedInject constructor( private val presenter: RoomDetailsEditPresenter, private val analyticsService: AnalyticsService, ) : Node(buildContext, plugins = plugins) { - init { lifecycle.subscribe( onResume = { diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt index 6682db392f..32f36a891b 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt @@ -53,7 +53,6 @@ class RoomDetailsEditPresenter @Inject constructor( private val mediaPreProcessor: MediaPreProcessor, permissionsPresenterFactory: PermissionsPresenter.Factory, ) : Presenter { - private val cameraPermissionPresenter = permissionsPresenterFactory.create(android.Manifest.permission.CAMERA) private var pendingPermissionRequest = false @@ -76,9 +75,9 @@ class RoomDetailsEditPresenter @Inject constructor( roomAvatarUri, ) { derivedStateOf { - roomAvatarUri?.toString()?.trim() != room.avatarUrl?.toUri()?.toString()?.trim() - || roomName.trim() != (room.name ?: room.displayName).trim() - || roomTopic.orEmpty().trim() != room.topic.orEmpty().trim() + roomAvatarUri?.toString()?.trim() != room.avatarUrl?.toUri()?.toString()?.trim() || + roomName.trim() != (room.name ?: room.displayName).trim() || + roomTopic.orEmpty().trim() != room.topic.orEmpty().trim() } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt index dca726a77a..cac6e23878 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt @@ -45,9 +45,11 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.features.roomdetails.impl.R import io.element.android.libraries.designsystem.components.LabelledTextField import io.element.android.libraries.designsystem.components.async.AsyncActionView +import io.element.android.libraries.designsystem.components.async.AsyncActionViewDefaults import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.preview.ElementPreview @@ -60,8 +62,6 @@ import io.element.android.libraries.designsystem.theme.components.TopAppBar import io.element.android.libraries.matrix.ui.components.AvatarActionBottomSheet import io.element.android.libraries.matrix.ui.components.EditableAvatarView import io.element.android.libraries.permissions.api.PermissionsView -import io.element.android.compound.theme.ElementTheme -import io.element.android.libraries.designsystem.components.async.AsyncActionViewDefaults import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.coroutines.launch diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersNode.kt index 22147440e0..d5fe439ff3 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersNode.kt @@ -47,7 +47,6 @@ class RoomInviteMembersNode @AssistedInject constructor( private val appErrorStateService: AppErrorStateService, private val analyticsService: AnalyticsService, ) : Node(buildContext, plugins = plugins) { - private val coroutineScope = CoroutineScope(SupervisorJob() + coroutineDispatchers.io) init { diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenter.kt index f7c4363613..971db90450 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenter.kt @@ -47,7 +47,6 @@ class RoomInviteMembersPresenter @Inject constructor( private val roomMemberListDataSource: RoomMemberListDataSource, private val coroutineDispatchers: CoroutineDispatchers, ) : Presenter { - @Composable override fun present(): RoomInviteMembersState { val roomMembers = remember { mutableStateOf>>(AsyncData.Loading()) } @@ -162,4 +161,3 @@ class RoomInviteMembersPresenter @Inject constructor( }.runCatchingUpdatingState(roomMembers) } } - diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersView.kt index e40e624afc..a66813a699 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersView.kt @@ -30,7 +30,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.features.roomdetails.impl.R +import io.element.android.libraries.designsystem.components.async.AsyncLoading import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.preview.ElementPreview @@ -49,8 +51,6 @@ import io.element.android.libraries.matrix.ui.components.CheckableUserRow import io.element.android.libraries.matrix.ui.components.SelectedUsersList import io.element.android.libraries.matrix.ui.model.getAvatarData import io.element.android.libraries.matrix.ui.model.getBestName -import io.element.android.compound.theme.ElementTheme -import io.element.android.libraries.designsystem.components.async.AsyncLoading import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.collections.immutable.ImmutableList diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListDataSource.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListDataSource.kt index 5a9c30698b..867ecd991f 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListDataSource.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListDataSource.kt @@ -31,7 +31,6 @@ class RoomMemberListDataSource @Inject constructor( private val room: MatrixRoom, private val coroutineDispatchers: CoroutineDispatchers, ) { - suspend fun search(query: String): List = withContext(coroutineDispatchers.io) { val roomMembers = room.membersStateFlow .dropWhile { it !is MatrixRoomMembersState.Ready } @@ -42,11 +41,10 @@ class RoomMemberListDataSource @Inject constructor( roomMembers } else { roomMembers.filter { member -> - member.userId.value.contains(query, ignoreCase = true) - || member.displayName?.contains(query, ignoreCase = true).orFalse() + member.userId.value.contains(query, ignoreCase = true) || + member.displayName?.contains(query, ignoreCase = true).orFalse() } } filteredMembers } - } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListNode.kt index 6145ca79d8..8148caaa5b 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListNode.kt @@ -38,7 +38,6 @@ class RoomMemberListNode @AssistedInject constructor( private val presenter: RoomMemberListPresenter, private val analyticsService: AnalyticsService, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun openRoomMemberDetails(roomMemberId: UserId) fun openInviteMembers() diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenter.kt index 0f66f7db4c..6fc5b6ece7 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListPresenter.kt @@ -41,7 +41,6 @@ class RoomMemberListPresenter @Inject constructor( private val roomMemberListDataSource: RoomMemberListDataSource, private val coroutineDispatchers: CoroutineDispatchers, ) : Presenter { - @Composable override fun present(): RoomMemberListState { var roomMembers by remember { mutableStateOf>(AsyncData.Loading()) } @@ -74,13 +73,16 @@ class RoomMemberListPresenter @Inject constructor( SearchBarResultState.Initial() } else { val results = roomMemberListDataSource.search(searchQuery).groupBy { it.membership } - if (results.isEmpty()) SearchBarResultState.NoResultsFound() - else SearchBarResultState.Results( - RoomMembers( - invited = results.getOrDefault(RoomMembershipState.INVITE, emptyList()).toImmutableList(), - joined = results.getOrDefault(RoomMembershipState.JOIN, emptyList()).toImmutableList(), + if (results.isEmpty()) { + SearchBarResultState.NoResultsFound() + } else { + SearchBarResultState.Results( + RoomMembers( + invited = results.getOrDefault(RoomMembershipState.INVITE, emptyList()).toImmutableList(), + joined = results.getOrDefault(RoomMembershipState.JOIN, emptyList()).toImmutableList(), + ) ) - ) + } } } } @@ -100,4 +102,3 @@ class RoomMemberListPresenter @Inject constructor( ) } } - diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListView.kt index abd7d4130a..0fe08ef02c 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListView.kt @@ -67,7 +67,6 @@ fun RoomMemberListView( onMemberSelected: (UserId) -> Unit, modifier: Modifier = Modifier, ) { - fun onUserSelected(roomMember: RoomMember) { onMemberSelected(roomMember.userId) } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsNode.kt index d2de1c1bcf..bdf7385661 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsNode.kt @@ -48,7 +48,6 @@ class RoomMemberDetailsNode @AssistedInject constructor( private val analyticsService: AnalyticsService, presenterFactory: RoomMemberDetailsPresenter.Factory, ) : Node(buildContext, plugins = plugins) { - interface Callback : NodeInputs { fun openAvatarPreview(username: String, avatarUrl: String) fun onStartDM(roomId: RoomId) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt index c583980d08..f3f3488018 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt @@ -47,7 +47,6 @@ class RoomMemberDetailsPresenter @AssistedInject constructor( private val room: MatrixRoom, private val startDMAction: StartDMAction, ) : Presenter { - interface Factory { fun create(roomMemberId: UserId): RoomMemberDetailsPresenter } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsState.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsState.kt index 817e5da46b..535ab79280 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsState.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsState.kt @@ -31,6 +31,7 @@ data class RoomMemberDetailsState( val eventSink: (RoomMemberDetailsEvents) -> Unit ) { enum class ConfirmationDialog { - Block, Unblock + Block, + Unblock } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsEvents.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsEvents.kt index 8b3c25d267..0ce6e56176 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsEvents.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsEvents.kt @@ -20,8 +20,8 @@ import io.element.android.libraries.matrix.api.room.RoomNotificationMode sealed interface RoomNotificationSettingsEvents { data class RoomNotificationModeChanged(val mode: RoomNotificationMode) : RoomNotificationSettingsEvents - data class SetNotificationMode(val isDefault: Boolean): RoomNotificationSettingsEvents - data object DeleteCustomNotification: RoomNotificationSettingsEvents - data object ClearSetNotificationError: RoomNotificationSettingsEvents - data object ClearRestoreDefaultError: RoomNotificationSettingsEvents + data class SetNotificationMode(val isDefault: Boolean) : RoomNotificationSettingsEvents + data object DeleteCustomNotification : RoomNotificationSettingsEvents + data object ClearSetNotificationError : RoomNotificationSettingsEvents + data object ClearRestoreDefaultError : RoomNotificationSettingsEvents } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsNode.kt index 8ccdd3b158..3b65bdf2fd 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsNode.kt @@ -39,7 +39,6 @@ class RoomNotificationSettingsNode @AssistedInject constructor( presenterFactory: RoomNotificationSettingsPresenter.Factory, private val analyticsService: AnalyticsService, ) : Node(buildContext, plugins = plugins) { - data class RoomNotificationSettingInput( val showUserDefinedSettingStyle: Boolean ) : NodeInputs diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenter.kt index 06649d2550..84831fe92b 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenter.kt @@ -49,7 +49,6 @@ class RoomNotificationSettingsPresenter @AssistedInject constructor( private val notificationSettingsService: NotificationSettingsService, @Assisted private val showUserDefinedSettingStyle: Boolean, ) : Presenter { - @AssistedFactory interface Factory { fun create(showUserDefinedSettingStyle: Boolean): RoomNotificationSettingsPresenter diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsStateProvider.kt index 04f0c0859b..7a1cc6c63e 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsStateProvider.kt @@ -45,7 +45,8 @@ internal class RoomNotificationSettingsStateProvider : PreviewParameterProvider< roomName = "Room 1", AsyncData.Success(RoomNotificationSettings( mode = RoomNotificationMode.MUTE, - isDefault = isDefault)), + isDefault = isDefault + )), pendingRoomNotificationMode = null, pendingSetDefault = null, defaultRoomNotificationMode = RoomNotificationMode.ALL_MESSAGES, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsView.kt index b70c21798c..f534fb17f4 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsView.kt @@ -31,6 +31,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.features.roomdetails.impl.R import io.element.android.libraries.core.bool.orTrue import io.element.android.libraries.designsystem.components.async.AsyncActionView @@ -45,7 +46,6 @@ import io.element.android.libraries.designsystem.theme.components.Scaffold import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TopAppBar import io.element.android.libraries.matrix.api.room.RoomNotificationMode -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings @Composable @@ -133,8 +133,8 @@ private fun RoomSpecificNotificationSettingsView( } RoomNotificationMode.MUTE -> stringResource(id = CommonStrings.common_mute) } - val displayMentionsOnlyDisclaimer = state.displayMentionsOnlyDisclaimer - && state.defaultRoomNotificationMode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY + val displayMentionsOnlyDisclaimer = state.displayMentionsOnlyDisclaimer && + state.defaultRoomNotificationMode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY RoomNotificationSettingsOption( roomNotificationSettingsItem = RoomNotificationSettingsItem(state.defaultRoomNotificationMode, defaultModeTitle), isSelected = true, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/UserDefinedRoomNotificationSettingsStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/UserDefinedRoomNotificationSettingsStateProvider.kt index 8e0bea68a6..bb037c2ab5 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/UserDefinedRoomNotificationSettingsStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/UserDefinedRoomNotificationSettingsStateProvider.kt @@ -31,7 +31,8 @@ internal class UserDefinedRoomNotificationSettingsStateProvider : PreviewParamet AsyncData.Success( RoomNotificationSettings( mode = RoomNotificationMode.MUTE, - isDefault = false) + isDefault = false + ) ), pendingRoomNotificationMode = null, pendingSetDefault = null, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/RoomDetailsPresenterTests.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/RoomDetailsPresenterTests.kt index 6ffba16377..0a25434339 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/RoomDetailsPresenterTests.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/RoomDetailsPresenterTests.kt @@ -59,7 +59,6 @@ import kotlin.time.Duration.Companion.milliseconds @ExperimentalCoroutinesApi class RoomDetailsPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() @@ -384,7 +383,6 @@ class RoomDetailsPresenterTests { moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - notificationSettingsService.setRoomNotificationMode(room.roomId, RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY) val updatedState = consumeItemsUntilPredicate { it.roomNotificationSettings?.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY @@ -453,4 +451,3 @@ fun aMatrixRoom( isDirect = isDirect, notificationSettingsService = notificationSettingsService ) - diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/edit/RoomDetailsEditPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/edit/RoomDetailsEditPresenterTest.kt index a9a2d81b20..f2f6f9b1b4 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/edit/RoomDetailsEditPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/edit/RoomDetailsEditPresenterTest.kt @@ -50,7 +50,6 @@ import java.io.File @ExperimentalCoroutinesApi class RoomDetailsEditPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt index 0d2201342f..f80cb773e3 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt @@ -49,7 +49,6 @@ import org.junit.Rule import org.junit.Test internal class RoomInviteMembersPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTests.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTests.kt index f08976a8cb..a869bb5e04 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTests.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTests.kt @@ -42,7 +42,6 @@ import org.junit.Test @ExperimentalCoroutinesApi class RoomMemberListPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTests.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTests.kt index f1553f8d06..e1f0d76ec0 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTests.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTests.kt @@ -45,7 +45,6 @@ import org.junit.Test @ExperimentalCoroutinesApi class RoomMemberDetailsPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/notificationsettings/RoomNotificationSettingsPresenterTests.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/notificationsettings/RoomNotificationSettingsPresenterTests.kt index 41311a4086..23bd504bf8 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/notificationsettings/RoomNotificationSettingsPresenterTests.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/notificationsettings/RoomNotificationSettingsPresenterTests.kt @@ -57,7 +57,7 @@ class RoomNotificationSettingsPresenterTests { }.test { awaitItem().eventSink(RoomNotificationSettingsEvents.RoomNotificationModeChanged(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY)) val updatedState = consumeItemsUntilPredicate { - it.roomNotificationSettings.dataOrNull()?.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY + it.roomNotificationSettings.dataOrNull()?.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY }.last() assertThat(updatedState.roomNotificationSettings.dataOrNull()?.mode).isEqualTo(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY) cancelAndIgnoreRemainingEvents() @@ -73,7 +73,7 @@ class RoomNotificationSettingsPresenterTests { }.test { notificationSettingsService.setRoomNotificationMode(A_ROOM_ID, RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY) val updatedState = consumeItemsUntilPredicate { - it.roomNotificationSettings.dataOrNull()?.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY + it.roomNotificationSettings.dataOrNull()?.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY }.last() assertThat(updatedState.roomNotificationSettings.dataOrNull()?.mode).isEqualTo(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY) } @@ -195,7 +195,7 @@ class RoomNotificationSettingsPresenterTests { private fun createRoomNotificationSettingsPresenter( notificationSettingsService: FakeNotificationSettingsService = FakeNotificationSettingsService(), room: FakeMatrixRoom = aMatrixRoom(notificationSettingsService = notificationSettingsService), - ): RoomNotificationSettingsPresenter{ + ): RoomNotificationSettingsPresenter { return RoomNotificationSettingsPresenter( room = room, notificationSettingsService = notificationSettingsService, diff --git a/features/roomlist/api/src/main/kotlin/io/element/android/features/roomlist/api/RoomListEntryPoint.kt b/features/roomlist/api/src/main/kotlin/io/element/android/features/roomlist/api/RoomListEntryPoint.kt index 7fe01aa64e..1b357c794c 100644 --- a/features/roomlist/api/src/main/kotlin/io/element/android/features/roomlist/api/RoomListEntryPoint.kt +++ b/features/roomlist/api/src/main/kotlin/io/element/android/features/roomlist/api/RoomListEntryPoint.kt @@ -23,7 +23,6 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomId interface RoomListEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder interface NodeBuilder { fun callback(callback: Callback): NodeBuilder @@ -40,4 +39,3 @@ interface RoomListEntryPoint : FeatureEntryPoint { fun onReportBugClicked() } } - diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/DefaultRoomListEntryPoint.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/DefaultRoomListEntryPoint.kt index 25016e7a2f..be8890980e 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/DefaultRoomListEntryPoint.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/DefaultRoomListEntryPoint.kt @@ -27,13 +27,10 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class DefaultRoomListEntryPoint @Inject constructor() : RoomListEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomListEntryPoint.NodeBuilder { - val plugins = ArrayList() return object : RoomListEntryPoint.NodeBuilder { - override fun callback(callback: RoomListEntryPoint.Callback): RoomListEntryPoint.NodeBuilder { plugins += callback return this @@ -45,4 +42,3 @@ class DefaultRoomListEntryPoint @Inject constructor() : RoomListEntryPoint { } } } - diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/InvitesEntryPointView.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/InvitesEntryPointView.kt index d00ac783dc..ea2b5d71a3 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/InvitesEntryPointView.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/InvitesEntryPointView.kt @@ -33,11 +33,11 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.atomic.atoms.UnreadIndicatorAtom -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings @Composable diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListNode.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListNode.kt index 6e1bbd64d3..f505020151 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListNode.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListNode.kt @@ -44,7 +44,6 @@ class RoomListNode @AssistedInject constructor( private val inviteFriendsUseCase: InviteFriendsUseCase, private val analyticsService: AnalyticsService, ) : Node(buildContext, plugins = plugins) { - init { lifecycle.subscribe( onResume = { diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt index a587af0692..05d4d93146 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt @@ -62,7 +62,6 @@ class RoomListPresenter @Inject constructor( private val featureFlagService: FeatureFlagService, private val indicatorService: IndicatorService, ) : Presenter { - @Composable override fun present(): RoomListState { val leaveRoomState = leaveRoomPresenter.present() diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListStateProvider.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListStateProvider.kt index 6610136f5d..406c28592a 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListStateProvider.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListStateProvider.kt @@ -43,7 +43,8 @@ open class RoomListStateProvider : PreviewParameterProvider { aRoomListState().copy(displaySearchResults = true), aRoomListState().copy( contextMenu = RoomListState.ContextMenu.Shown( - roomId = RoomId("!aRoom:aDomain"), roomName = "A nice room name" + roomId = RoomId("!aRoom:aDomain"), + roomName = "A nice room name" ) ), aRoomListState().copy(displayRecoveryKeyPrompt = true), diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListTopBar.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListTopBar.kt index eee2868378..e6aae4da6e 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListTopBar.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListTopBar.kt @@ -180,10 +180,14 @@ private fun DefaultRoomListTopBar( }, blurSize = DpSize(avatarBloomSize, avatarBloomSize), offset = DpOffset(24.dp, 24.dp + statusBarPadding), - clipToSize = if (appBarHeight > 0) DpSize( - avatarBloomSize, - appBarHeight.toDp() - ) else DpSize.Unspecified, + clipToSize = if (appBarHeight > 0) { + DpSize( + avatarBloomSize, + appBarHeight.toDp() + ) + } else { + DpSize.Unspecified + }, bottomSoftEdgeColor = ElementTheme.materialColors.background, bottomSoftEdgeAlpha = 1f - collapsedFraction, alpha = if (areSearchResultsDisplayed) 0f else 1f, @@ -225,7 +229,7 @@ private fun DefaultRoomListTopBar( contentDescription = stringResource(CommonStrings.action_search), ) } - if (RoomListConfig.hasDropdownMenu) { + if (RoomListConfig.HAS_DROP_DOWN_MENU) { var showMenu by remember { mutableStateOf(false) } IconButton( onClick = { showMenu = !showMenu } @@ -239,7 +243,7 @@ private fun DefaultRoomListTopBar( expanded = showMenu, onDismissRequest = { showMenu = false } ) { - if (RoomListConfig.showInviteMenuItem) { + if (RoomListConfig.SHOW_INVITE_MENU_ITEM) { DropdownMenuItem( onClick = { showMenu = false @@ -255,7 +259,7 @@ private fun DefaultRoomListTopBar( } ) } - if (RoomListConfig.showReportProblemMenuItem) { + if (RoomListConfig.SHOW_REPORT_PROBLEM_MENU_ITEM) { DropdownMenuItem( onClick = { showMenu = false diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryPlaceholderRow.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryPlaceholderRow.kt index ae9aed918c..7181afea7a 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryPlaceholderRow.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomSummaryPlaceholderRow.kt @@ -31,12 +31,12 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.atomic.atoms.PlaceholderAtom import io.element.android.libraries.designsystem.components.avatar.AvatarSize -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.placeholderBackground -import io.element.android.compound.theme.ElementTheme /** * https://www.figma.com/file/0MMNu7cTOzLOlWb7ctTkv3/Element-X?node-id=6547%3A147623 diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/datasource/DefaultInviteStateDataSource.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/datasource/DefaultInviteStateDataSource.kt index dc89d163c3..cce14f316a 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/datasource/DefaultInviteStateDataSource.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/datasource/DefaultInviteStateDataSource.kt @@ -40,7 +40,6 @@ class DefaultInviteStateDataSource @Inject constructor( private val seenInvitesStore: SeenInvitesStore, private val coroutineDispatchers: CoroutineDispatchers, ) : InviteStateDataSource { - @Composable override fun inviteState(): InvitesState { val invites by client diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/datasource/InviteStateDataSource.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/datasource/InviteStateDataSource.kt index f44ec1ea83..866bed1efd 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/datasource/InviteStateDataSource.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/datasource/InviteStateDataSource.kt @@ -20,8 +20,6 @@ import androidx.compose.runtime.Composable import io.element.android.features.roomlist.impl.InvitesState interface InviteStateDataSource { - @Composable fun inviteState(): InvitesState - } diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/model/RoomListRoomSummaryPlaceholders.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/model/RoomListRoomSummaryPlaceholders.kt index 111217d7a2..f5976d7d1c 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/model/RoomListRoomSummaryPlaceholders.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/model/RoomListRoomSummaryPlaceholders.kt @@ -21,7 +21,6 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.matrix.api.core.RoomId object RoomListRoomSummaryPlaceholders { - fun create(id: String): RoomListRoomSummary { return RoomListRoomSummary( id = id, diff --git a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTests.kt b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTests.kt index 4573456762..f3b678dd35 100644 --- a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTests.kt +++ b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTests.kt @@ -71,7 +71,6 @@ import org.junit.Rule import org.junit.Test class RoomListPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/datasource/DefaultInviteStateDataSourceTest.kt b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/datasource/DefaultInviteStateDataSourceTest.kt index fc41e48b53..0ff0f02d32 100644 --- a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/datasource/DefaultInviteStateDataSourceTest.kt +++ b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/datasource/DefaultInviteStateDataSourceTest.kt @@ -32,7 +32,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test internal class DefaultInviteStateDataSourceTest { - @Test fun `emits NoInvites state if invites list is empty`() = runTest { val roomListService = FakeRoomListService() diff --git a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/datasource/FakeInviteDataSource.kt b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/datasource/FakeInviteDataSource.kt index 7ea2d7821d..49f4a65f7f 100644 --- a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/datasource/FakeInviteDataSource.kt +++ b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/datasource/FakeInviteDataSource.kt @@ -25,7 +25,6 @@ import kotlinx.coroutines.flow.flowOf class FakeInviteDataSource( private val flow: Flow = flowOf() ) : InviteStateDataSource { - @Composable override fun inviteState(): InvitesState { val state = flow.collectAsState(initial = InvitesState.NoInvites) diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/LoggerTag.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/LoggerTag.kt index b8b56f5ace..49497f1a9a 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/LoggerTag.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/LoggerTag.kt @@ -22,4 +22,3 @@ private val loggerTag = LoggerTag("SecureBackup") val loggerTagRoot = LoggerTag("Root", loggerTag) val loggerTagSetup = LoggerTag("Setup", loggerTag) val loggerTagDisable = LoggerTag("Disable", loggerTag) - diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/SecureBackupFlowNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/SecureBackupFlowNode.kt index bc635e5e98..62eecd09c2 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/SecureBackupFlowNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/SecureBackupFlowNode.kt @@ -50,7 +50,6 @@ class SecureBackupFlowNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins ) { - sealed interface NavTarget : Parcelable { @Parcelize data object Root : NavTarget diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/disable/SecureBackupDisableNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/disable/SecureBackupDisableNode.kt index 6e3d69fe7f..3fd6559858 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/disable/SecureBackupDisableNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/disable/SecureBackupDisableNode.kt @@ -32,7 +32,6 @@ class SecureBackupDisableNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: SecureBackupDisablePresenter, ) : Node(buildContext, plugins = plugins) { - @Composable override fun View(modifier: Modifier) { val state = presenter.present() diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/disable/SecureBackupDisablePresenter.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/disable/SecureBackupDisablePresenter.kt index 4b98599b93..502fc45084 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/disable/SecureBackupDisablePresenter.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/disable/SecureBackupDisablePresenter.kt @@ -38,7 +38,6 @@ class SecureBackupDisablePresenter @Inject constructor( private val encryptionService: EncryptionService, private val buildMeta: BuildMeta, ) : Presenter { - @Composable override fun present(): SecureBackupDisableState { val backupState by encryptionService.backupStateStateFlow.collectAsState() diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enable/SecureBackupEnableNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enable/SecureBackupEnableNode.kt index 9966dd0df0..804af27493 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enable/SecureBackupEnableNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enable/SecureBackupEnableNode.kt @@ -32,7 +32,6 @@ class SecureBackupEnableNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: SecureBackupEnablePresenter, ) : Node(buildContext, plugins = plugins) { - @Composable override fun View(modifier: Modifier) { val state = presenter.present() diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enable/SecureBackupEnablePresenter.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enable/SecureBackupEnablePresenter.kt index 3ce99ff353..c12ea2d24e 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enable/SecureBackupEnablePresenter.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enable/SecureBackupEnablePresenter.kt @@ -34,7 +34,6 @@ import javax.inject.Inject class SecureBackupEnablePresenter @Inject constructor( private val encryptionService: EncryptionService, ) : Presenter { - @Composable override fun present(): SecureBackupEnableState { val enableAction = remember { mutableStateOf>(AsyncData.Uninitialized) } diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyNode.kt index 79576da8a1..8c6ae282fa 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyNode.kt @@ -39,7 +39,6 @@ class SecureBackupEnterRecoveryKeyNode @AssistedInject constructor( private val presenter: SecureBackupEnterRecoveryKeyPresenter, private val snackbarDispatcher: SnackbarDispatcher, ) : Node(buildContext, plugins = plugins) { - @Composable override fun View(modifier: Modifier) { val coroutineScope = rememberCoroutineScope() diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyPresenter.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyPresenter.kt index 2940ef576e..9706b47d7b 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyPresenter.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyPresenter.kt @@ -39,7 +39,6 @@ class SecureBackupEnterRecoveryKeyPresenter @Inject constructor( private val encryptionService: EncryptionService, private val recoveryKeyTools: RecoveryKeyTools, ) : Presenter { - @Composable override fun present(): SecureBackupEnterRecoveryKeyState { val coroutineScope = rememberCoroutineScope() diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt index 0723568881..2fa037860e 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt @@ -39,7 +39,6 @@ class SecureBackupRootNode @AssistedInject constructor( buildContext = buildContext, plugins = plugins ) { - interface Callback : Plugin { fun onSetupClicked() fun onChangeClicked() @@ -69,7 +68,7 @@ class SecureBackupRootNode @AssistedInject constructor( } private fun onLearnMoreClicked(uriHandler: UriHandler) { - uriHandler.openUri(SecureBackupConfig.LearnMoreUrl) + uriHandler.openUri(SecureBackupConfig.LEARN_MORE_URL) } @Composable diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootPresenter.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootPresenter.kt index ca60f7d32f..789506b74f 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootPresenter.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootPresenter.kt @@ -43,7 +43,6 @@ class SecureBackupRootPresenter @Inject constructor( private val buildMeta: BuildMeta, private val snackbarDispatcher: SnackbarDispatcher, ) : Presenter { - @Composable override fun present(): SecureBackupRootState { val localCoroutineScope = rememberCoroutineScope() diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootView.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootView.kt index 54c37761ed..754beb6d5f 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootView.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootView.kt @@ -23,6 +23,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter +import io.element.android.compound.theme.ElementTheme import io.element.android.features.securebackup.impl.R import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.designsystem.components.async.AsyncLoading @@ -41,7 +42,6 @@ import io.element.android.libraries.designsystem.utils.snackbar.SnackbarHost import io.element.android.libraries.designsystem.utils.snackbar.rememberSnackbarHostState import io.element.android.libraries.matrix.api.encryption.BackupState import io.element.android.libraries.matrix.api.encryption.RecoveryState -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings @Composable diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupNode.kt index 84cee69110..495b4a38c1 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupNode.kt @@ -41,7 +41,6 @@ class SecureBackupSetupNode @AssistedInject constructor( presenterFactory: SecureBackupSetupPresenter.Factory, private val snackbarDispatcher: SnackbarDispatcher, ) : Node(buildContext, plugins = plugins) { - data class Inputs( val isChangeRecoveryKeyUserStory: Boolean, ) : NodeInputs @@ -68,10 +67,11 @@ class SecureBackupSetupNode @AssistedInject constructor( private fun CoroutineScope.postSuccessSnackbar() = launch { snackbarDispatcher.post( SnackbarMessage( - messageResId = if (inputs.isChangeRecoveryKeyUserStory) + messageResId = if (inputs.isChangeRecoveryKeyUserStory) { R.string.screen_recovery_key_change_success - else + } else { R.string.screen_recovery_key_setup_success + } ) ) } diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupPresenter.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupPresenter.kt index eab2e0450d..d929a92f52 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupPresenter.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupPresenter.kt @@ -46,7 +46,6 @@ class SecureBackupSetupPresenter @AssistedInject constructor( private val stateMachine: SecureBackupSetupStateMachine, private val encryptionService: EncryptionService, ) : Presenter { - @AssistedFactory interface Factory { fun create(isChangeRecoveryKeyUserStory: Boolean): SecureBackupSetupPresenter diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupStateMachine.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupStateMachine.kt index 7e2c633a61..441076264d 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupStateMachine.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupStateMachine.kt @@ -24,11 +24,9 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import javax.inject.Inject import com.freeletics.flowredux.dsl.State as MachineState -class SecureBackupSetupStateMachine @Inject constructor( -) : FlowReduxStateMachine( +class SecureBackupSetupStateMachine @Inject constructor() : FlowReduxStateMachine( initialState = State.Initial ) { - init { spec { inState { diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupView.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupView.kt index abdf8e9563..c62072b4a5 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupView.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupView.kt @@ -80,10 +80,11 @@ private fun SecureBackupSetupState.canGoBack(): Boolean { private fun title(state: SecureBackupSetupState): String { return when (state.setupState) { SetupState.Init, - SetupState.Creating -> if (state.isChangeRecoveryKeyUserStory) + SetupState.Creating -> if (state.isChangeRecoveryKeyUserStory) { stringResource(id = R.string.screen_recovery_key_change_title) - else + } else { stringResource(id = R.string.screen_recovery_key_setup_title) + } is SetupState.Created, is SetupState.CreatedAndSaved -> stringResource(id = R.string.screen_recovery_key_save_title) @@ -94,10 +95,11 @@ private fun title(state: SecureBackupSetupState): String { private fun subtitle(state: SecureBackupSetupState): String { return when (state.setupState) { SetupState.Init, - SetupState.Creating -> if (state.isChangeRecoveryKeyUserStory) + SetupState.Creating -> if (state.isChangeRecoveryKeyUserStory) { stringResource(id = R.string.screen_recovery_key_change_description) - else + } else { stringResource(id = R.string.screen_recovery_key_setup_description) + } is SetupState.Created, is SetupState.CreatedAndSaved -> stringResource(id = R.string.screen_recovery_key_save_description) diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/views/RecoveryKeyView.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/views/RecoveryKeyView.kt index 34b731b1ab..5cb8f0739b 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/views/RecoveryKeyView.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/views/RecoveryKeyView.kt @@ -41,6 +41,8 @@ import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme +import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.securebackup.impl.R import io.element.android.features.securebackup.impl.tools.RecoveryKeyVisualTransformation import io.element.android.libraries.designsystem.modifiers.clickableIfNotNull @@ -52,8 +54,6 @@ import io.element.android.libraries.designsystem.theme.components.OutlinedTextFi import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.autofill import io.element.android.libraries.designsystem.utils.CommonDrawables -import io.element.android.compound.theme.ElementTheme -import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.ui.strings.CommonStrings @Composable @@ -209,10 +209,11 @@ private fun RecoveryKeyFooter(state: RecoveryKeyViewState) { ) Text( text = stringResource( - id = if (state.recoveryKeyUserStory == RecoveryKeyUserStory.Change) + id = if (state.recoveryKeyUserStory == RecoveryKeyUserStory.Change) { R.string.screen_recovery_key_change_generate_key_description - else + } else { R.string.screen_recovery_key_setup_generate_key_description + } ), color = ElementTheme.colors.textSecondary, modifier = Modifier.padding(start = 8.dp), diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyVisualTransformation.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyVisualTransformation.kt index f15acaa458..d35dbf5ee9 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyVisualTransformation.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyVisualTransformation.kt @@ -37,10 +37,11 @@ class RecoveryKeyVisualTransformation : VisualTransformation { override fun originalToTransformed(offset: Int): Int { if (offset == 0) return 0 val numberOfChunks = offset / 4 - return if (offset == text.length && offset % 4 == 0) + return if (offset == text.length && offset % 4 == 0) { offset + numberOfChunks - 1 - else + } else { offset + numberOfChunks + } } override fun transformedToOriginal(offset: Int): Int { diff --git a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupPresenterTest.kt b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupPresenterTest.kt index f4071c6645..e8fd89841a 100644 --- a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupPresenterTest.kt +++ b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupPresenterTest.kt @@ -140,11 +140,11 @@ class SecureBackupSetupPresenterTest { ) ) val createdState = awaitItem() - assertThat(createdState.setupState).isEqualTo(SetupState.Created(FakeEncryptionService.fakeRecoveryKey)) + assertThat(createdState.setupState).isEqualTo(SetupState.Created(FakeEncryptionService.FAKE_RECOVERY_KEY)) assertThat(createdState.recoveryKeyViewState).isEqualTo( RecoveryKeyViewState( recoveryKeyUserStory = RecoveryKeyUserStory.Change, - formattedRecoveryKey = FakeEncryptionService.fakeRecoveryKey, + formattedRecoveryKey = FakeEncryptionService.FAKE_RECOVERY_KEY, inProgress = false, ) ) diff --git a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyToolsTest.kt b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyToolsTest.kt index 4629211fc9..4f6e27993f 100644 --- a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyToolsTest.kt +++ b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyToolsTest.kt @@ -20,7 +20,6 @@ import com.google.common.truth.Truth.assertThat import org.junit.Test class RecoveryKeyToolsTest { - @Test fun `isRecoveryKeyFormatValid return false for invalid key`() { val sut = RecoveryKeyTools() diff --git a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyVisualTransformationTest.kt b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyVisualTransformationTest.kt index cfe2ba32a6..7d2397b1ee 100644 --- a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyVisualTransformationTest.kt +++ b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyVisualTransformationTest.kt @@ -58,7 +58,8 @@ class RecoveryKeyVisualTransformationTest { @Test fun `RecoveryKeyOffsetMapping computes correct transformedToOriginal values`() { - val sut = RecoveryKeyVisualTransformation.RecoveryKeyOffsetMapping("" /* Not used by transformedToOriginal */) + // text parameter is not used by transformedToOriginal + val sut = RecoveryKeyVisualTransformation.RecoveryKeyOffsetMapping("") assertThat(sut.transformedToOriginal(0)).isEqualTo(0) assertThat(sut.transformedToOriginal(1)).isEqualTo(1) assertThat(sut.transformedToOriginal(2)).isEqualTo(2) diff --git a/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt b/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt index 7a156998d1..13d12ce1d0 100644 --- a/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt +++ b/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt @@ -22,7 +22,6 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.SessionId interface SignedOutEntryPoint : FeatureEntryPoint { - data class Params( val sessionId: SessionId, ) @@ -34,4 +33,3 @@ interface SignedOutEntryPoint : FeatureEntryPoint { fun build(): Node } } - diff --git a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt index 59b19f041e..72afaeb610 100644 --- a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt +++ b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt @@ -27,12 +27,10 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class DefaultSignedOutEntryPoint @Inject constructor() : SignedOutEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): SignedOutEntryPoint.NodeBuilder { val plugins = ArrayList() return object : SignedOutEntryPoint.NodeBuilder { - override fun params(params: SignedOutEntryPoint.Params): SignedOutEntryPoint.NodeBuilder { plugins += SignedOutNode.Inputs(params.sessionId) return this diff --git a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutNode.kt b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutNode.kt index 381daa7278..8fc68a7227 100644 --- a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutNode.kt +++ b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutNode.kt @@ -35,7 +35,6 @@ class SignedOutNode @AssistedInject constructor( @Assisted plugins: List, presenterFactory: SignedOutPresenter.Factory, ) : Node(buildContext, plugins = plugins) { - data class Inputs( val sessionId: SessionId, ) : NodeInputs diff --git a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutPresenter.kt b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutPresenter.kt index a93d22253d..0b3bbba17b 100644 --- a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutPresenter.kt +++ b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutPresenter.kt @@ -31,11 +31,11 @@ import io.element.android.libraries.sessionstorage.api.SessionStore import kotlinx.coroutines.launch class SignedOutPresenter @AssistedInject constructor( - @Assisted private val sessionId: String, /* Cannot inject SessionId */ + // Cannot inject SessionId + @Assisted private val sessionId: String, private val sessionStore: SessionStore, private val buildMeta: BuildMeta, ) : Presenter { - @AssistedFactory interface Factory { fun create(sessionId: String): SignedOutPresenter diff --git a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutView.kt b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutView.kt index 66d552423e..9f62546c1a 100644 --- a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutView.kt +++ b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutView.kt @@ -31,6 +31,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule import io.element.android.libraries.designsystem.atomic.organisms.InfoListItem @@ -41,7 +42,6 @@ import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.temporaryColorBgSpecial import io.element.android.libraries.designsystem.utils.CommonDrawables -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.collections.immutable.persistentListOf diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionNode.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionNode.kt index 2eb9063e3d..7612f9292c 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionNode.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionNode.kt @@ -32,7 +32,6 @@ class VerifySelfSessionNode @AssistedInject constructor( @Assisted plugins: List, private val presenter: VerifySelfSessionPresenter, ) : Node(buildContext, plugins = plugins) { - @Composable override fun View(modifier: Modifier) { val state = presenter.present() diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenter.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenter.kt index 0d04ac544d..4d6889f716 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenter.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenter.kt @@ -40,7 +40,6 @@ class VerifySelfSessionPresenter @Inject constructor( private val sessionVerificationService: SessionVerificationService, private val stateMachine: VerifySelfSessionStateMachine, ) : Presenter { - @Composable override fun present(): VerifySelfSessionState { LaunchedEffect(Unit) { diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionState.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionState.kt index 3076b1fdc7..1273367a71 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionState.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionState.kt @@ -26,7 +26,6 @@ data class VerifySelfSessionState( val verificationFlowStep: VerificationStep, val eventSink: (VerifySelfSessionViewEvents) -> Unit, ) { - @Stable sealed interface VerificationStep { data object Initial : VerificationStep diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateMachine.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateMachine.kt index 52bd38bfbd..2a1c63370e 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateMachine.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateMachine.kt @@ -31,7 +31,6 @@ class VerifySelfSessionStateMachine @Inject constructor( ) : FlowReduxStateMachine( initialState = State.Initial ) { - init { spec { inState { diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionViewEvents.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionViewEvents.kt index 10e95bc09a..8f9c69085c 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionViewEvents.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionViewEvents.kt @@ -17,10 +17,10 @@ package io.element.android.features.verifysession.impl sealed interface VerifySelfSessionViewEvents { - data object RequestVerification: VerifySelfSessionViewEvents - data object StartSasVerification: VerifySelfSessionViewEvents - data object Restart: VerifySelfSessionViewEvents - data object ConfirmVerification: VerifySelfSessionViewEvents - data object DeclineVerification: VerifySelfSessionViewEvents - data object CancelAndClose: VerifySelfSessionViewEvents + data object RequestVerification : VerifySelfSessionViewEvents + data object StartSasVerification : VerifySelfSessionViewEvents + data object Restart : VerifySelfSessionViewEvents + data object ConfirmVerification : VerifySelfSessionViewEvents + data object DeclineVerification : VerifySelfSessionViewEvents + data object CancelAndClose : VerifySelfSessionViewEvents } diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiResource.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiResource.kt index e57239d5f2..f35fe9a51c 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiResource.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiResource.kt @@ -89,6 +89,7 @@ internal fun Int.toEmojiResource(): EmojiResource { 60 -> EmojiResource(R.drawable.ic_verification_60, R.string.verification_emoji_60) 61 -> EmojiResource(R.drawable.ic_verification_61, R.string.verification_emoji_61) 62 -> EmojiResource(R.drawable.ic_verification_62, R.string.verification_emoji_62) - /* 63 */ else -> EmojiResource(R.drawable.ic_verification_63, R.string.verification_emoji_63) + 63 -> EmojiResource(R.drawable.ic_verification_63, R.string.verification_emoji_63) + else -> error("Cannot happen ($this)!") } } diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt index 2943b0aa0f..240a4f0606 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt @@ -35,7 +35,6 @@ import org.junit.Test @ExperimentalCoroutinesApi class VerifySelfSessionPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 411d16ed8c..ac90e58b7e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -170,7 +170,7 @@ opusencoder = "io.element.android:opusencoder:1.1.0" kotlinpoet = "com.squareup:kotlinpoet:1.15.3" # Analytics -posthog = "com.posthog:posthog-android:3.1.0" +posthog = "com.posthog:posthog-android:3.1.1" sentry = "io.sentry:sentry-android:7.1.0" matrix_analytics_events = "com.github.matrix-org:matrix-analytics-events:aa14cbcdf81af2746d20a71779ec751f971e1d7f" @@ -210,7 +210,7 @@ kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } anvil = { id = "com.squareup.anvil", version.ref = "anvil" } detekt = "io.gitlab.arturbosch.detekt:1.23.4" -ktlint = "org.jlleitschuh.gradle.ktlint:12.0.3" +ktlint = "org.jlleitschuh.gradle.ktlint:12.1.0" dependencygraph = "com.savvasdalkitsis.module-dependency-graph:0.12" dependencycheck = "org.owasp.dependencycheck:9.0.8" dependencyanalysis = { id = "com.autonomousapps.dependency-analysis", version.ref = "dependencyAnalysis" } diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/accessibility/ContextExt.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/accessibility/ContextExt.kt index bb223e43fb..803c140c58 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/accessibility/ContextExt.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/accessibility/ContextExt.kt @@ -36,4 +36,3 @@ fun Context.isScreenReaderEnabled(): Boolean { it.isEnabled && it.isTouchExplorationEnabled } } - diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/AndroidClipboardHelper.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/AndroidClipboardHelper.kt index cecf47eb1b..d7f7d5f4a6 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/AndroidClipboardHelper.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/AndroidClipboardHelper.kt @@ -31,7 +31,6 @@ import javax.inject.Inject class AndroidClipboardHelper @Inject constructor( @ApplicationContext private val context: Context, ) : ClipboardHelper { - private val clipboardManager = requireNotNull(context.getSystemService()) override fun copyPlainText(text: String) { diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/FakeClipboardHelper.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/FakeClipboardHelper.kt index 03cd70c768..1d93a207c6 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/FakeClipboardHelper.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/FakeClipboardHelper.kt @@ -17,7 +17,6 @@ package io.element.android.libraries.androidutils.clipboard class FakeClipboardHelper : ClipboardHelper { - var clipboardContents: Any? = null override fun copyPlainText(text: String) { diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/compat/Compat.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/compat/Compat.kt index ca00f72fb7..3c897b3d88 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/compat/Compat.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/compat/Compat.kt @@ -26,6 +26,6 @@ fun PackageManager.getApplicationInfoCompat(packageName: String, flags: Int): Ap packageName, PackageManager.ApplicationInfoFlags.of(flags.toLong()) ) - else -> @Suppress("DEPRECATION") getApplicationInfo(packageName, flags) + else -> getApplicationInfo(packageName, flags) } } diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DefaultDiffCallback.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DefaultDiffCallback.kt index 219441d5e6..9c58e2baa5 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DefaultDiffCallback.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DefaultDiffCallback.kt @@ -26,7 +26,6 @@ internal class DefaultDiffCallback( private val newList: List, private val areItemsTheSame: (oldItem: T?, newItem: T?) -> Boolean, ) : DiffUtil.Callback() { - override fun getOldListSize(): Int { return oldList.size } diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCache.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCache.kt index 3d1161e2e0..b0f93227cc 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCache.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCache.kt @@ -40,7 +40,6 @@ interface MutableDiffCache : DiffCache { * */ class MutableListDiffCache(private val mutableList: MutableList = ArrayList()) : MutableDiffCache { - override fun removeAt(index: Int): E? { return mutableList.removeAt(index) } diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCacheInvalidator.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCacheInvalidator.kt index 4ebdc3224f..d99aad185c 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCacheInvalidator.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCacheInvalidator.kt @@ -36,7 +36,6 @@ interface DiffCacheInvalidator { * It invalidates the cache by setting values to null. */ class DefaultDiffCacheInvalidator : DiffCacheInvalidator { - override fun onChanged(position: Int, count: Int, cache: MutableDiffCache) { for (i in position until position + count) { // Invalidate cache diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCacheUpdater.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCacheUpdater.kt index 500edcb135..d7d5125b58 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCacheUpdater.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCacheUpdater.kt @@ -36,7 +36,6 @@ class DiffCacheUpdater( private val cacheInvalidator: DiffCacheInvalidator = DefaultDiffCacheInvalidator(), private val areItemsTheSame: (oldItem: ListItem?, newItem: ListItem?) -> Boolean, ) { - private val lock = Object() private var prevOriginalList: List = emptyList() diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/file/compressFile.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/file/FileCompression.kt similarity index 100% rename from libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/file/compressFile.kt rename to libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/file/FileCompression.kt diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hardware/vibrator.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hardware/VibratorTools.kt similarity index 100% rename from libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hardware/vibrator.kt rename to libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hardware/VibratorTools.kt diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hash/Hash.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hash/Hash.kt index 6d4cc321a0..c9c0ce956a 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hash/Hash.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hash/Hash.kt @@ -26,8 +26,8 @@ fun String.hash() = try { val digest = MessageDigest.getInstance("SHA-512") digest.update(toByteArray()) digest.digest() - .joinToString("") { String.format(Locale.ROOT, "%02X", it) } - .lowercase(Locale.ROOT) + .joinToString("") { String.format(Locale.ROOT, "%02X", it) } + .lowercase(Locale.ROOT) } catch (exc: Exception) { // Should not happen, but just in case hashCode().toString() diff --git a/libraries/androidutils/src/test/kotlin/io/element/android/libraries/androidutils/filesize/AndroidFileSizeFormatterTest.kt b/libraries/androidutils/src/test/kotlin/io/element/android/libraries/androidutils/filesize/AndroidFileSizeFormatterTest.kt index 4d83a2367a..32239ca36b 100644 --- a/libraries/androidutils/src/test/kotlin/io/element/android/libraries/androidutils/filesize/AndroidFileSizeFormatterTest.kt +++ b/libraries/androidutils/src/test/kotlin/io/element/android/libraries/androidutils/filesize/AndroidFileSizeFormatterTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.libraries.androidutils.filesize +package io.element.android.libraries.androidutils.filesize import android.os.Build import com.google.common.truth.Truth.assertThat diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncAction.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncAction.kt index ef64c973df..38de169db3 100644 --- a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncAction.kt +++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncAction.kt @@ -27,7 +27,6 @@ import kotlin.contracts.contract */ @Stable sealed interface AsyncAction { - /** * Represents an uninitialized operation (i.e. yet to be run by the user). */ diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncData.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncData.kt index de547d87e6..75bb503390 100644 --- a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncData.kt +++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncData.kt @@ -27,7 +27,6 @@ import kotlin.contracts.contract */ @Stable sealed interface AsyncData { - /** * Represents a failed operation. * diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/HideOverlayBackPressHandler.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/HideOverlayBackPressHandler.kt index 38149f2e92..126f95bdb7 100644 --- a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/HideOverlayBackPressHandler.kt +++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/HideOverlayBackPressHandler.kt @@ -23,9 +23,8 @@ import io.element.android.libraries.architecture.overlay.operation.Hide import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map -class HideOverlayBackPressHandler - : BaseBackPressHandlerStrategy() { - +class HideOverlayBackPressHandler : + BaseBackPressHandlerStrategy() { override val canHandleBackPressFlow: Flow by lazy { navModel.elements.map(::areThereElements) } diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/Overlay.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/Overlay.kt index e8f3e3ebc5..ebae1a3381 100644 --- a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/Overlay.kt +++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/Overlay.kt @@ -40,7 +40,6 @@ class Overlay( savedStateMap = savedStateMap, key = key, ) { - override val initialElements: NavElements get() = emptyList() } diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/operation/Hide.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/operation/Hide.kt index e782d4537f..db3b71c2ef 100644 --- a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/operation/Hide.kt +++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/operation/Hide.kt @@ -24,7 +24,6 @@ import kotlinx.parcelize.Parcelize @Parcelize class Hide : OverlayOperation { - override fun isApplicable(elements: BackStackElements): Boolean = elements.any { it.targetState == BackStack.State.ACTIVE } diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/operation/Show.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/operation/Show.kt index 90561127ef..1ed00e65b2 100644 --- a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/operation/Show.kt +++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/operation/Show.kt @@ -29,7 +29,6 @@ import kotlinx.parcelize.RawValue data class Show( private val element: @RawValue T ) : OverlayOperation { - override fun isApplicable(elements: BackStackElements): Boolean = element != elements.activeElement diff --git a/libraries/architecture/src/test/kotlin/io/element/android/libraries/architecture/AsyncDataKtTest.kt b/libraries/architecture/src/test/kotlin/io/element/android/libraries/architecture/AsyncDataKtTest.kt index 5069950b7a..f661e6f61c 100644 --- a/libraries/architecture/src/test/kotlin/io/element/android/libraries/architecture/AsyncDataKtTest.kt +++ b/libraries/architecture/src/test/kotlin/io/element/android/libraries/architecture/AsyncDataKtTest.kt @@ -84,7 +84,7 @@ class AsyncDataKtTest { private class TestableMutableState( value: T ) : MutableState { - + @Suppress("ktlint:standard:property-naming") private val _deque = ArrayDeque(listOf(value)) override var value: T diff --git a/libraries/core/src/main/kotlin/io/element/android/libraries/core/cache/CircularCache.kt b/libraries/core/src/main/kotlin/io/element/android/libraries/core/cache/CircularCache.kt index f5305f006b..48cc6e2e82 100644 --- a/libraries/core/src/main/kotlin/io/element/android/libraries/core/cache/CircularCache.kt +++ b/libraries/core/src/main/kotlin/io/element/android/libraries/core/cache/CircularCache.kt @@ -21,7 +21,6 @@ package io.element.android.libraries.core.cache * This class is not thread safe. */ class CircularCache(cacheSize: Int, factory: (Int) -> Array) { - companion object { inline fun create(cacheSize: Int) = CircularCache(cacheSize) { Array(cacheSize) { null } } } diff --git a/libraries/core/src/main/kotlin/io/element/android/libraries/core/extensions/BasicExtensions.kt b/libraries/core/src/main/kotlin/io/element/android/libraries/core/extensions/BasicExtensions.kt index 343f5ce351..d839be9dee 100644 --- a/libraries/core/src/main/kotlin/io/element/android/libraries/core/extensions/BasicExtensions.kt +++ b/libraries/core/src/main/kotlin/io/element/android/libraries/core/extensions/BasicExtensions.kt @@ -26,20 +26,6 @@ inline fun T.ooi(block: (T) -> Unit): T = also(block) */ fun CharSequence?.orEmpty() = this ?: "" -/** - * Check if a CharSequence is a phone number. - */ -/* -fun CharSequence.isMsisdn(): Boolean { - return try { - PhoneNumberUtil.getInstance().parse(ensurePrefix("+"), null) - true - } catch (e: NumberParseException) { - false - } -} - */ - /** * Useful to append a String at the end of a filename but before the extension if any * Ex: diff --git a/libraries/core/src/main/kotlin/io/element/android/libraries/core/log/logger/LoggerTag.kt b/libraries/core/src/main/kotlin/io/element/android/libraries/core/log/logger/LoggerTag.kt index 1bec5524cd..eaafdf6f61 100644 --- a/libraries/core/src/main/kotlin/io/element/android/libraries/core/log/logger/LoggerTag.kt +++ b/libraries/core/src/main/kotlin/io/element/android/libraries/core/log/logger/LoggerTag.kt @@ -23,7 +23,6 @@ package io.element.android.libraries.core.log.logger * Timber.tag(loggerTag.value).v("My log message") */ open class LoggerTag(name: String, parentTag: LoggerTag? = null) { - object PushLoggerTag : LoggerTag("Push") object NotificationLoggerTag : LoggerTag("Notification", PushLoggerTag) diff --git a/libraries/core/src/main/kotlin/io/element/android/libraries/core/mimetype/MimeTypes.kt b/libraries/core/src/main/kotlin/io/element/android/libraries/core/mimetype/MimeTypes.kt index 6a97757b55..0c1efd0070 100644 --- a/libraries/core/src/main/kotlin/io/element/android/libraries/core/mimetype/MimeTypes.kt +++ b/libraries/core/src/main/kotlin/io/element/android/libraries/core/mimetype/MimeTypes.kt @@ -19,6 +19,7 @@ package io.element.android.libraries.core.mimetype import io.element.android.libraries.core.bool.orFalse // The Android SDK does not provide constant for mime type, add some of them here +@Suppress("ktlint:standard:property-naming") object MimeTypes { const val Any: String = "*/*" const val OctetStream = "application/octet-stream" diff --git a/libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/BasicExtensionsTest.kt b/libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/BasicExtensionsTest.kt index 5a3baa1297..b9d6a91cb1 100644 --- a/libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/BasicExtensionsTest.kt +++ b/libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/BasicExtensionsTest.kt @@ -20,7 +20,6 @@ import org.junit.Assert.assertEquals import org.junit.Test class BasicExtensionsTest { - @Test(expected = IllegalArgumentException::class) fun `test ellipsize at 0`() { "1234567890".ellipsize(0) diff --git a/libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/ResultTest.kt b/libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/ResultTest.kt index 7f83c9de8f..42ac6cd31e 100644 --- a/libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/ResultTest.kt +++ b/libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/ResultTest.kt @@ -20,7 +20,6 @@ import com.google.common.truth.Truth.assertThat import org.junit.Test class ResultTest { - @Test fun testFlatMap() { val initial = Result.success("initial") diff --git a/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/AESEncryptionDecryptionService.kt b/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/AESEncryptionDecryptionService.kt index cf1ea93e3a..2baec4560a 100644 --- a/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/AESEncryptionDecryptionService.kt +++ b/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/AESEncryptionDecryptionService.kt @@ -31,7 +31,6 @@ import javax.inject.Inject */ @ContributesBinding(AppScope::class) class AESEncryptionDecryptionService @Inject constructor() : EncryptionDecryptionService { - override fun createEncryptionCipher(key: SecretKey): Cipher { return Cipher.getInstance(AESEncryptionSpecs.CIPHER_TRANSFORMATION).apply { init(Cipher.ENCRYPT_MODE, key) diff --git a/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/CryptographyModule.kt b/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/CryptographyModule.kt index 7b55dca15b..bd248489f2 100644 --- a/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/CryptographyModule.kt +++ b/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/CryptographyModule.kt @@ -27,7 +27,6 @@ internal const val ANDROID_KEYSTORE = "AndroidKeyStore" @ContributesTo(AppScope::class) @Module object CryptographyModule { - @Provides fun providesAndroidKeyStore(): KeyStore { return KeyStore.getInstance(ANDROID_KEYSTORE).apply { diff --git a/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/KeyStoreSecretKeyRepository.kt b/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/KeyStoreSecretKeyRepository.kt index f1bdb03b5c..c3b14f8bed 100644 --- a/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/KeyStoreSecretKeyRepository.kt +++ b/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/KeyStoreSecretKeyRepository.kt @@ -38,7 +38,6 @@ import javax.inject.Inject class KeyStoreSecretKeyRepository @Inject constructor( private val keyStore: KeyStore, ) : SecretKeyRepository { - // False positive lint issue @SuppressLint("WrongConstant") override fun getOrCreateKey(alias: String, requiresUserAuthentication: Boolean): SecretKey { diff --git a/libraries/cryptography/impl/src/test/kotlin/io/element/android/libraries/cryptography/impl/AESEncryptionDecryptionServiceTest.kt b/libraries/cryptography/impl/src/test/kotlin/io/element/android/libraries/cryptography/impl/AESEncryptionDecryptionServiceTest.kt index 38e1c924ca..61c8466023 100644 --- a/libraries/cryptography/impl/src/test/kotlin/io/element/android/libraries/cryptography/impl/AESEncryptionDecryptionServiceTest.kt +++ b/libraries/cryptography/impl/src/test/kotlin/io/element/android/libraries/cryptography/impl/AESEncryptionDecryptionServiceTest.kt @@ -24,7 +24,6 @@ import java.security.GeneralSecurityException import javax.crypto.KeyGenerator class AESEncryptionDecryptionServiceTest { - private val encryptionDecryptionService = AESEncryptionDecryptionService() @Test @@ -50,5 +49,4 @@ class AESEncryptionDecryptionServiceTest { encryptionDecryptionService.decrypt(decryptionKey, encryptionResult) } } - } diff --git a/libraries/cryptography/test/src/main/kotlin/io/element/android/libraries/cryptography/test/SimpleSecretKeyRepository.kt b/libraries/cryptography/test/src/main/kotlin/io/element/android/libraries/cryptography/test/SimpleSecretKeyRepository.kt index b6f9155d12..e8e2b7e6f7 100644 --- a/libraries/cryptography/test/src/main/kotlin/io/element/android/libraries/cryptography/test/SimpleSecretKeyRepository.kt +++ b/libraries/cryptography/test/src/main/kotlin/io/element/android/libraries/cryptography/test/SimpleSecretKeyRepository.kt @@ -22,7 +22,6 @@ import javax.crypto.KeyGenerator import javax.crypto.SecretKey class SimpleSecretKeyRepository : SecretKeyRepository { - private var secretKeyForAlias = HashMap() override fun getOrCreateKey(alias: String, requiresUserAuthentication: Boolean): SecretKey { diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt index 31b58085ba..9493079925 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt @@ -36,7 +36,6 @@ class DateFormatters @Inject constructor( private val clock: Clock, private val timeZone: TimeZone, ) { - private val onlyTimeFormatter: DateTimeFormatter by lazy { val pattern = DateFormat.getBestDateTimePattern(locale, "HH:mm") ?: "HH:mm" DateTimeFormatter.ofPattern(pattern, locale) diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDaySeparatorFormatter.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDaySeparatorFormatter.kt index 4c6ebbbde0..90d7f5c205 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDaySeparatorFormatter.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDaySeparatorFormatter.kt @@ -26,7 +26,6 @@ class DefaultDaySeparatorFormatter @Inject constructor( private val localDateTimeProvider: LocalDateTimeProvider, private val dateFormatters: DateFormatters, ) : DaySeparatorFormatter { - override fun format(timestamp: Long): String { val dateToFormat = localDateTimeProvider.providesFromTimestamp(timestamp) return dateFormatters.formatDateWithYear(dateToFormat) diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageTimestampFormatter.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageTimestampFormatter.kt index 78294870d2..ace64fb8e6 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageTimestampFormatter.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageTimestampFormatter.kt @@ -26,7 +26,6 @@ class DefaultLastMessageTimestampFormatter @Inject constructor( private val localDateTimeProvider: LocalDateTimeProvider, private val dateFormatters: DateFormatters, ) : LastMessageTimestampFormatter { - override fun format(timestamp: Long?): String { if (timestamp == null) return "" val currentDate = localDateTimeProvider.providesNow() diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt index 8395cb476c..9d3e5735bb 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt @@ -27,7 +27,6 @@ class LocalDateTimeProvider @Inject constructor( private val clock: Clock, private val timezone: TimeZone, ) { - fun providesNow(): LocalDateTime { val now: Instant = clock.now() return now.toLocalDateTime(timezone) diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/di/DateFormatterModule.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/di/DateFormatterModule.kt index 352306da65..bd83d3abce 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/di/DateFormatterModule.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/di/DateFormatterModule.kt @@ -22,7 +22,7 @@ import dagger.Provides import io.element.android.libraries.di.AppScope import kotlinx.datetime.Clock import kotlinx.datetime.TimeZone -import java.util.* +import java.util.Locale @Module @ContributesTo(AppScope::class) diff --git a/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageTimestampFormatterTest.kt b/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageTimestampFormatterTest.kt index 5aefcdcd7b..dd8f75cae3 100644 --- a/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageTimestampFormatterTest.kt +++ b/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageTimestampFormatterTest.kt @@ -25,7 +25,6 @@ import org.junit.Test import java.util.Locale class DefaultLastMessageTimestampFormatterTest { - @Test fun `test null`() { val now = "1980-04-06T18:35:24.00Z" diff --git a/libraries/dateformatter/test/src/main/kotlin/io/element/android/libraries/dateformatter/test/FakeDaySeparatorFormatter.kt b/libraries/dateformatter/test/src/main/kotlin/io/element/android/libraries/dateformatter/test/FakeDaySeparatorFormatter.kt index 202e3ee5ae..c314809e66 100644 --- a/libraries/dateformatter/test/src/main/kotlin/io/element/android/libraries/dateformatter/test/FakeDaySeparatorFormatter.kt +++ b/libraries/dateformatter/test/src/main/kotlin/io/element/android/libraries/dateformatter/test/FakeDaySeparatorFormatter.kt @@ -19,7 +19,6 @@ package io.element.android.libraries.dateformatter.test import io.element.android.libraries.dateformatter.api.DaySeparatorFormatter class FakeDaySeparatorFormatter : DaySeparatorFormatter { - private var format = "" fun givenFormat(format: String) { diff --git a/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/usecase/InviteFriendsUseCase.kt b/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/usecase/InviteFriendsUseCase.kt index 8ee94c31fe..24296f8798 100644 --- a/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/usecase/InviteFriendsUseCase.kt +++ b/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/usecase/InviteFriendsUseCase.kt @@ -21,11 +21,11 @@ import io.element.android.libraries.androidutils.system.startSharePlainTextInten import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.permalink.PermalinkBuilder +import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.services.toolbox.api.strings.StringProvider import timber.log.Timber import javax.inject.Inject import io.element.android.libraries.androidutils.R as AndroidUtilsR -import io.element.android.libraries.ui.strings.CommonStrings class InviteFriendsUseCase @Inject constructor( private val stringProvider: StringProvider, diff --git a/libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeepLinkCreatorTest.kt b/libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeepLinkCreatorTest.kt index 70c047f8ed..5c43624655 100644 --- a/libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeepLinkCreatorTest.kt +++ b/libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeepLinkCreatorTest.kt @@ -23,7 +23,6 @@ import io.element.android.libraries.matrix.test.A_THREAD_ID import org.junit.Test class DeepLinkCreatorTest { - @Test fun room() { val sut = DeepLinkCreator() diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/ElementLogoAtom.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/ElementLogoAtom.kt index e08f156340..338ad05349 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/ElementLogoAtom.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/ElementLogoAtom.kt @@ -38,8 +38,8 @@ import io.element.android.libraries.designsystem.R import io.element.android.libraries.designsystem.modifiers.blurCompat import io.element.android.libraries.designsystem.modifiers.blurredShapeShadow import io.element.android.libraries.designsystem.modifiers.canUseBlurMaskFilter -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight @Composable fun ElementLogoAtom( @@ -49,7 +49,6 @@ fun ElementLogoAtom( darkTheme: Boolean = isSystemInDarkTheme(), ) { val blur = if (darkTheme) 160.dp else 24.dp - //box-shadow: 0px 6.075949668884277px 24.30379867553711px 0px #1B1D2280; val shadowColor = if (darkTheme) size.shadowColorDark else size.shadowColorLight val logoShadowColor = if (darkTheme) size.logoShadowColorDark else size.logoShadowColorLight val backgroundColor = if (darkTheme) Color.White.copy(alpha = 0.2f) else Color.White.copy(alpha = 0.4f) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/PlaceholderAtom.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/PlaceholderAtom.kt index a892667379..96c23c4ae7 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/PlaceholderAtom.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/PlaceholderAtom.kt @@ -26,10 +26,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.placeholderBackground -import io.element.android.compound.theme.ElementTheme @Composable fun PlaceholderAtom( diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RedIndicatorAtom.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RedIndicatorAtom.kt index 772bc723d7..8985446a68 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RedIndicatorAtom.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RedIndicatorAtom.kt @@ -28,9 +28,9 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight -import io.element.android.compound.theme.ElementTheme @Composable fun RedIndicatorAtom( diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RoundedIconAtom.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RoundedIconAtom.kt index 1bb7915fa3..ac0c7ec80a 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RoundedIconAtom.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RoundedIconAtom.kt @@ -32,11 +32,11 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.temporaryColorBgSpecial -import io.element.android.compound.theme.ElementTheme /** * RoundedIconAtom is an atom which displays an icon inside a rounded container. diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/UnreadIndicatorAtom.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/UnreadIndicatorAtom.kt index 99b0c8363c..a770cdcaec 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/UnreadIndicatorAtom.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/UnreadIndicatorAtom.kt @@ -26,10 +26,10 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.unreadIndicator -import io.element.android.compound.theme.ElementTheme @Composable fun UnreadIndicatorAtom( diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/ButtonColumnMolecule.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/ButtonColumnMolecule.kt index bdd5fa4cf3..fd5be7c680 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/ButtonColumnMolecule.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/ButtonColumnMolecule.kt @@ -24,8 +24,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.OutlinedButton import io.element.android.libraries.designsystem.theme.components.TextButton diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/ButtonRowMolecule.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/ButtonRowMolecule.kt index 0d5afbe714..9388b54880 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/ButtonRowMolecule.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/ButtonRowMolecule.kt @@ -22,8 +22,8 @@ import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.TextButton @Composable diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/organisms/InfoListOrganism.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/organisms/InfoListOrganism.kt index 47ae6d46d0..e3611de5db 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/organisms/InfoListOrganism.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/organisms/InfoListOrganism.kt @@ -29,13 +29,13 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.atomic.molecules.InfoListItemMolecule import io.element.android.libraries.designsystem.atomic.molecules.InfoListItemPosition import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt index 0c94df7bf2..c08eb5149a 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt @@ -26,11 +26,11 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Scaffold import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme /** * @param modifier Classical modifier. diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/OnBoardingPage.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/OnBoardingPage.kt index 7a66ac97a5..1b8aed72c2 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/OnBoardingPage.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/OnBoardingPage.kt @@ -29,11 +29,11 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.R -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme /** * Page for onboarding screens, with content and optional footer. diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/colors/AvatarColors.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/colors/AvatarColors.kt index abac299ca6..ed56bde5ce 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/colors/AvatarColors.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/colors/AvatarColors.kt @@ -22,4 +22,3 @@ data class AvatarColors( val background: Color, val foreground: Color, ) - diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/LabelledOutlinedTextField.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/LabelledOutlinedTextField.kt index 9b31970da0..615abcb187 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/LabelledOutlinedTextField.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/LabelledOutlinedTextField.kt @@ -25,11 +25,11 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.OutlinedTextField import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme @Composable fun LabelledOutlinedTextField( @@ -83,4 +83,3 @@ internal fun LabelledOutlinedTextFieldPreview() = ElementPreview { ) } } - diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/LabelledTextField.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/LabelledTextField.kt index 027aeb8f95..9ea59545ee 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/LabelledTextField.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/LabelledTextField.kt @@ -25,11 +25,11 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TextField -import io.element.android.compound.theme.ElementTheme @Composable fun LabelledTextField( diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/PinIcon.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/PinIcon.kt index 11bed90654..7ad7ec17ec 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/PinIcon.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/PinIcon.kt @@ -24,11 +24,11 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.R -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon -import io.element.android.compound.theme.ElementTheme @Composable fun PinIcon( diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ProgressDialog.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ProgressDialog.kt index f2dc8f470e..d94a0486a4 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ProgressDialog.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ProgressDialog.kt @@ -35,10 +35,10 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties -import io.element.android.libraries.designsystem.theme.components.DialogPreview import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator +import io.element.android.libraries.designsystem.theme.components.DialogPreview import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TextButton import io.element.android.libraries.ui.strings.CommonStrings diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncFailure.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncFailure.kt index e3186f5600..c6b226e055 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncFailure.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncFailure.kt @@ -26,8 +26,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.ui.strings.CommonStrings diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncLoading.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncLoading.kt index 7f6385658d..544f35c038 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncLoading.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncLoading.kt @@ -23,8 +23,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator @Composable diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt index 7bcb8bf1dd..810e0cae10 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt @@ -25,7 +25,6 @@ data class AvatarData( val url: String? = null, val size: AvatarSize, ) { - val initial by lazy { (name?.takeIf { it.isNotBlank() } ?: id) .let { dn -> diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/ButtonVisuals.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/ButtonVisuals.kt index 3da88c49a4..491d0637b0 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/ButtonVisuals.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/ButtonVisuals.kt @@ -29,7 +29,6 @@ import io.element.android.libraries.designsystem.theme.components.TextButton */ @Immutable sealed interface ButtonVisuals { - val action: () -> Unit /** diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/MultipleSelectionDialog.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/MultipleSelectionDialog.kt index 055843edae..e790cb1921 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/MultipleSelectionDialog.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/MultipleSelectionDialog.kt @@ -29,9 +29,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.airbnb.android.showkase.annotation.ShowkaseComposable import io.element.android.libraries.designsystem.components.list.CheckboxListItem -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewGroup +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.DialogPreview import io.element.android.libraries.designsystem.theme.components.ListSupportingText import io.element.android.libraries.designsystem.theme.components.SimpleAlertDialogContent diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SingleSelectionDialog.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SingleSelectionDialog.kt index 36869bf270..2462fd779f 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SingleSelectionDialog.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SingleSelectionDialog.kt @@ -27,9 +27,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.airbnb.android.showkase.annotation.ShowkaseComposable import io.element.android.libraries.designsystem.components.list.RadioButtonListItem -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewGroup +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.DialogPreview import io.element.android.libraries.designsystem.theme.components.ListSupportingText import io.element.android.libraries.designsystem.theme.components.SimpleAlertDialogContent diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/keyboard/Keyboard.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/keyboard/Keyboard.kt index 1ebb67f75a..c96f7f5963 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/keyboard/Keyboard.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/keyboard/Keyboard.kt @@ -29,7 +29,8 @@ import androidx.lifecycle.Lifecycle * Inspired from https://stackoverflow.com/questions/68847559/how-can-i-detect-keyboard-opening-and-closing-in-jetpack-compose */ enum class Keyboard { - Opened, Closed + Opened, + Closed } // Note: it does not work as expected... diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/list/SingleSelectionListItem.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/list/SingleSelectionListItem.kt index 01dff71991..d119025b9b 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/list/SingleSelectionListItem.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/list/SingleSelectionListItem.kt @@ -166,7 +166,7 @@ internal fun SingleSelectionListItemCustomFormattertPreview() { options = listOptionOf("Option 1", "Option 2", "Option 3"), supportingText = "Supporting text", onSelectionChanged = {}, - resultFormatter = { "Selected index: $it"}, + resultFormatter = { "Selected index: $it" }, selected = 1, displayResultInTrailingContent = true, ) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/list/TextFieldListItem.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/list/TextFieldListItem.kt index c26c12c7ea..f0e9458a02 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/list/TextFieldListItem.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/list/TextFieldListItem.kt @@ -24,11 +24,11 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.theme.components.OutlinedTextField import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme @Composable fun TextFieldListItem( diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/DrawScopeWaveformExtensions.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/DrawScopeWaveformExtensions.kt index 9e09d97471..4723c8ffa9 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/DrawScopeWaveformExtensions.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/DrawScopeWaveformExtensions.kt @@ -23,23 +23,22 @@ import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.Fill import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import kotlinx.collections.immutable.ImmutableList import kotlin.math.max fun DrawScope.drawWaveform( waveformData: ImmutableList, - canvasSize: DpSize, + canvasSizePx: Size, brush: Brush, minimumGraphAmplitude: Float = 2F, lineWidth: Dp = 2.dp, linePadding: Dp = 2.dp, ) { - val centerY = canvasSize.height.toPx() / 2 + val centerY = canvasSizePx.height / 2 val cornerRadius = lineWidth / 2 waveformData.forEachIndexed { index, amplitude -> - val drawingAmplitude = max(minimumGraphAmplitude, amplitude * (canvasSize.height.toPx() - 2)) + val drawingAmplitude = max(minimumGraphAmplitude, amplitude * (canvasSizePx.height - 2)) drawRoundRect( brush = brush, topLeft = Offset( diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveformPlaybackView.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveformPlaybackView.kt index 6921c7f809..6aa96cf6c5 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveformPlaybackView.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveformPlaybackView.kt @@ -40,12 +40,13 @@ import androidx.compose.ui.graphics.drawscope.Fill import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.input.pointer.RequestDisallowInterceptTouchEvent import androidx.compose.ui.input.pointer.pointerInteropFilter +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight -import io.element.android.compound.theme.ElementTheme import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toPersistentList @@ -58,7 +59,7 @@ private const val DEFAULT_GRAPHICS_LAYER_ALPHA: Float = 0.99F * * @param playbackProgress The current playback progress, between 0 and 1. * @param showCursor Whether to show the cursor or not. - * @param waveform The waveform to display. Use [FakeWaveformFactory] to generate a fake waveform. + * @param waveform The waveform to display. Use [createFakeWaveform] to generate a fake waveform. * @param onSeek Callback when the user seeks the waveform. Called with a value between 0 and 1. * @param modifier The modifier to be applied to the view. * @param seekEnabled Whether the user can seek the waveform or not. @@ -103,6 +104,11 @@ fun WaveformPlaybackView( } } + val density = LocalDensity.current + val waveformWidthPx by remember { + derivedStateOf { with(density) { normalizedWaveformData.size * (lineWidth + linePadding).roundToPx().toFloat() } } + } + val requestDisallowInterceptTouchEvent = remember { RequestDisallowInterceptTouchEvent() } Canvas( modifier = Modifier @@ -110,19 +116,20 @@ fun WaveformPlaybackView( .graphicsLayer(alpha = DEFAULT_GRAPHICS_LAYER_ALPHA) .let { if (!seekEnabled) return@let it - it.pointerInteropFilter(requestDisallowInterceptTouchEvent = requestDisallowInterceptTouchEvent) { e -> return@pointerInteropFilter when (e.action) { MotionEvent.ACTION_DOWN -> { - if (e.x in 0F..canvasSizePx.width) { + if (e.x in 0F..waveformWidthPx) { requestDisallowInterceptTouchEvent.invoke(true) - seekProgress.value = e.x / canvasSizePx.width + seekProgress.value = e.x / waveformWidthPx true - } else false + } else { + false + } } MotionEvent.ACTION_MOVE -> { - if (e.x in 0F..canvasSizePx.width) { - seekProgress.value = e.x / canvasSizePx.width + if (e.x in 0F..waveformWidthPx) { + seekProgress.value = e.x / waveformWidthPx } true } @@ -140,11 +147,11 @@ fun WaveformPlaybackView( ) { canvasSize = size.toDpSize() canvasSizePx = size - val centerY = canvasSize.height.toPx() / 2 val cornerRadius = lineWidth / 2 + // Calculate the size of the waveform by summing the width of all the lines and paddings drawWaveform( waveformData = normalizedWaveformData, - canvasSize = canvasSize, + canvasSizePx = canvasSizePx, brush = brush, lineWidth = lineWidth, linePadding = linePadding @@ -152,8 +159,8 @@ fun WaveformPlaybackView( drawRect( brush = progressBrush, size = Size( - width = progressAnimated.value * canvasSize.width.toPx(), - height = canvasSize.height.toPx() + width = progressAnimated.value * waveformWidthPx, + height = canvasSizePx.height ), blendMode = BlendMode.SrcAtop ) @@ -161,12 +168,12 @@ fun WaveformPlaybackView( drawRoundRect( brush = cursorBrush, topLeft = Offset( - x = progressAnimated.value * canvasSize.width.toPx(), - y = centerY - (canvasSize.height.toPx() - 2) / 2 + x = progressAnimated.value * waveformWidthPx, + y = 1f ), size = Size( width = lineWidth.toPx(), - height = canvasSize.height.toPx() - 2 + height = canvasSizePx.height - 2 ), cornerRadius = CornerRadius(cornerRadius.toPx(), cornerRadius.toPx()), style = Fill diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceCategory.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceCategory.kt index 2c7efb0680..42dc343782 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceCategory.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceCategory.kt @@ -24,11 +24,11 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme +import io.element.android.libraries.designsystem.icons.CompoundDrawables import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme -import io.element.android.libraries.designsystem.icons.CompoundDrawables @Composable fun PreferenceCategory( diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDivider.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDivider.kt index 83757ca2f7..27a846aa10 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDivider.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDivider.kt @@ -19,10 +19,10 @@ package io.element.android.libraries.designsystem.components.preferences import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.theme.components.HorizontalDivider -import io.element.android.compound.theme.ElementTheme @Composable fun PreferenceDivider( diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferencePage.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferencePage.kt index 66c99fda45..063c17aac1 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferencePage.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferencePage.kt @@ -95,7 +95,6 @@ private fun PreferenceTopAppBar( overflow = TextOverflow.Ellipsis ) } - ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceTextField.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceTextField.kt index 648ea97434..0c3735547b 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceTextField.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceTextField.kt @@ -55,7 +55,7 @@ fun PreferenceTextField( style: ListItemStyle = ListItemStyle.Default, ) { var displayTextFieldDialog by rememberSaveable { mutableStateOf(false) } - val valueToDisplay = if (displayValue(value)) { value } else supportingText + val valueToDisplay = if (displayValue(value)) value else supportingText ListItem( modifier = modifier, diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/icons/IconsPreview.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/icons/IconsPreview.kt index a131410646..8bd7d2b16e 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/icons/IconsPreview.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/icons/IconsPreview.kt @@ -55,7 +55,7 @@ internal class OtherIconListPreviewProvider : PreviewParameterProvider - IconChunk(index = index+1, total = chunks.size, icons = chunk.toPersistentList()) + IconChunk(index = index + 1, total = chunks.size, icons = chunk.toPersistentList()) } .asSequence() } @@ -76,7 +76,8 @@ internal fun IconsCompoundPreview(@PreviewParameter(CompoundIconListPreviewProvi iconNameTransform = { name -> name.removePrefix("ic_compound_") .replace("_", " ") - }) + } + ) } @PreviewsDayNight @@ -88,7 +89,8 @@ internal fun IconsOtherPreview(@PreviewParameter(OtherIconListPreviewProvider::c iconNameTransform = { name -> name.removePrefix("ic_") .replace("_", " ") - }) + } + ) } @Composable diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/CircularReveal.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/CircularReveal.kt index 9675c54a20..3f9ea0040e 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/CircularReveal.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/CircularReveal.kt @@ -78,10 +78,11 @@ fun Modifier.circularReveal( val path = Path() val center = revealFrom.mapTo(size) val radius = calculateRadius(revealFrom, size) - val scrimColor = if (showScrim) + val scrimColor = if (showScrim) { Color.Gray - else + } else { Color.Transparent + } path.addOval(Rect(center, radius * transitionProgress.value)) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/preview/ElementPreview.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/preview/ElementPreview.kt index a7fba965dc..e489419e8c 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/preview/ElementPreview.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/preview/ElementPreview.kt @@ -18,8 +18,8 @@ package io.element.android.libraries.designsystem.preview import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.runtime.Composable -import io.element.android.libraries.designsystem.theme.components.Surface import io.element.android.compound.theme.ElementTheme +import io.element.android.libraries.designsystem.theme.components.Surface @Composable @Suppress("ModifierMissing") diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/preview/PreviewGroup.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/preview/PreviewGroup.kt index a1f458ee08..494f3a404b 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/preview/PreviewGroup.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/preview/PreviewGroup.kt @@ -16,6 +16,7 @@ package io.element.android.libraries.designsystem.preview +@Suppress("ktlint:standard:property-naming") object PreviewGroup { const val AppBars = "App Bars" const val Avatars = "Avatars" diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ruler/HorizontalRuler.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ruler/HorizontalRuler.kt index f5636aaf10..545abd4291 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ruler/HorizontalRuler.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ruler/HorizontalRuler.kt @@ -26,8 +26,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight /** * Horizontal ruler is a debug composable that displays a horizontal ruler. diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ruler/VerticalRuler.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ruler/VerticalRuler.kt index 057cb543b3..7d1f879e74 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ruler/VerticalRuler.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ruler/VerticalRuler.kt @@ -26,8 +26,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight /** * Vertical ruler is a debug composable that displays a vertical ruler. diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ruler/WithRulers.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ruler/WithRulers.kt index fd8f6ba37a..c24b34271f 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ruler/WithRulers.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/ruler/WithRulers.kt @@ -21,8 +21,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.layout.Layout import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.ButtonSize import io.element.android.libraries.designsystem.theme.components.OutlinedButton diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/text/DpScale.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/text/DpScale.kt index a593e81f7b..9db1255df3 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/text/DpScale.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/text/DpScale.kt @@ -25,10 +25,10 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.WithFontScale import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme /** * Return the maximum value between the receiver value and the value with fontScale applied. diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ColorAliases.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ColorAliases.kt index d81484d512..938cbf03c6 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ColorAliases.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ColorAliases.kt @@ -109,7 +109,7 @@ val SemanticColors.pinDigitBg } val SemanticColors.currentUserMentionPillText - get() = if (isLight) { + get() = if (isLight) { // We want LightDesignTokens.colorGreen1100 Color(0xff005c45) } else { @@ -118,7 +118,7 @@ val SemanticColors.currentUserMentionPillText } val SemanticColors.currentUserMentionPillBackground - get() = if (isLight) { + get() = if (isLight) { // We want LightDesignTokens.colorGreenAlpha400 Color(0x3b07b661) } else { @@ -130,7 +130,7 @@ val SemanticColors.mentionPillText get() = textPrimary val SemanticColors.mentionPillBackground - get() = if (isLight) { + get() = if (isLight) { // We want LightDesignTokens.colorGray400 Color(0x1f052e61) } else { diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt index 70a906f758..8ea42eef88 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt @@ -232,10 +232,11 @@ internal fun AlertDialogContent( // Align the title to the center when an icon is present. Modifier .then( - if (applyPaddingToContents) + if (applyPaddingToContents) { Modifier - else + } else { Modifier.padding(DialogContentDefaults.externalHorizontalPadding) + } ) .padding(DialogContentDefaults.titlePadding) .align( @@ -364,8 +365,10 @@ private fun AlertDialogFlowRow( val mainAxisPositions = IntArray(childrenMainAxisSizes.size) { 0 } with(arrangement) { arrange( - mainAxisLayoutSize, childrenMainAxisSizes, - layoutDirection, mainAxisPositions + mainAxisLayoutSize, + childrenMainAxisSizes, + layoutDirection, + mainAxisPositions ) } placeables.forEachIndexed { j, placeable -> @@ -444,7 +447,8 @@ internal fun DialogWithTitleIconAndOkButtonPreview() { ) }, title = "Dialog Title", - content = "A dialog is a type of modal window that appears in front of app content to provide critical information, or prompt for a decision to be made. Learn more", + content = "A dialog is a type of modal window that appears in front of app content to provide critical information," + + " or prompt for a decision to be made. Learn more", submitText = "OK", onSubmitClicked = {}, ) @@ -460,7 +464,8 @@ internal fun DialogWithTitleAndOkButtonPreview() { DialogPreview { SimpleAlertDialogContent( title = "Dialog Title", - content = "A dialog is a type of modal window that appears in front of app content to provide critical information, or prompt for a decision to be made. Learn more", + content = "A dialog is a type of modal window that appears in front of app content to provide critical information," + + " or prompt for a decision to be made. Learn more", submitText = "OK", onSubmitClicked = {}, ) @@ -475,7 +480,8 @@ internal fun DialogWithOnlyMessageAndOkButtonPreview() { ElementThemedPreview(showBackground = false) { DialogPreview { SimpleAlertDialogContent( - content = "A dialog is a type of modal window that appears in front of app content to provide critical information, or prompt for a decision to be made. Learn more", + content = "A dialog is a type of modal window that appears in front of app content to provide critical information," + + " or prompt for a decision to be made. Learn more", submitText = "OK", onSubmitClicked = {}, ) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/BottomSheetDragHandle.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/BottomSheetDragHandle.kt index da1bf0e4fe..ae331e7ba1 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/BottomSheetDragHandle.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/BottomSheetDragHandle.kt @@ -33,9 +33,9 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight -import io.element.android.compound.theme.ElementTheme @Composable fun BottomSheetDragHandle( @@ -68,7 +68,6 @@ fun BottomSheetDragHandle( } } - @PreviewsDayNight @Composable internal fun BottomSheetDragHandlePreview() = ElementPreview { diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Button.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Button.kt index fe0d807745..a1f6e8ebcc 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Button.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Button.kt @@ -147,25 +147,29 @@ private fun ButtonInternal( val contentPadding = when (size) { ButtonSize.Medium -> when (style) { ButtonStyle.Filled, - ButtonStyle.Outlined -> if (hasStartDrawable) + ButtonStyle.Outlined -> if (hasStartDrawable) { PaddingValues(start = 16.dp, top = 10.dp, end = 24.dp, bottom = 10.dp) - else + } else { PaddingValues(start = 24.dp, top = 10.dp, end = 24.dp, bottom = 10.dp) - ButtonStyle.Text -> if (hasStartDrawable) + } + ButtonStyle.Text -> if (hasStartDrawable) { PaddingValues(start = 12.dp, top = 10.dp, end = 16.dp, bottom = 10.dp) - else + } else { PaddingValues(start = 12.dp, top = 10.dp, end = 12.dp, bottom = 10.dp) + } } ButtonSize.Large -> when (style) { ButtonStyle.Filled, - ButtonStyle.Outlined -> if (hasStartDrawable) + ButtonStyle.Outlined -> if (hasStartDrawable) { PaddingValues(start = 24.dp, top = 13.dp, end = 32.dp, bottom = 13.dp) - else + } else { PaddingValues(start = 32.dp, top = 13.dp, end = 32.dp, bottom = 13.dp) - ButtonStyle.Text -> if (hasStartDrawable) + } + ButtonStyle.Text -> if (hasStartDrawable) { PaddingValues(start = 12.dp, top = 13.dp, end = 16.dp, bottom = 13.dp) - else + } else { PaddingValues(start = 16.dp, top = 13.dp, end = 16.dp, bottom = 13.dp) + } } } @@ -179,12 +183,13 @@ private fun ButtonInternal( ButtonStyle.Filled -> null ButtonStyle.Outlined -> BorderStroke( width = 1.dp, - color = if (destructive) + color = if (destructive) { ElementTheme.colors.borderCriticalPrimary.copy( alpha = if (enabled) 1f else 0.5f ) - else + } else { ElementTheme.colors.borderInteractiveSecondary + } ) ButtonStyle.Text -> null } @@ -254,11 +259,14 @@ sealed interface IconSource { } enum class ButtonSize { - Medium, Large + Medium, + Large } internal enum class ButtonStyle { - Filled, Outlined, Text; + Filled, + Outlined, + Text; @Composable fun getColors(destructive: Boolean): ButtonColors = when (this) { diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Checkbox.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Checkbox.kt index caa2314b0d..007755ddff 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Checkbox.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Checkbox.kt @@ -31,9 +31,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.state.ToggleableState import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup -import io.element.android.compound.theme.ElementTheme // Designs in https://www.figma.com/file/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?type=design&mode=design&t=qb99xBP5mwwCtGkN-1 diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/CircularProgressIndicator.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/CircularProgressIndicator.kt index 88d8d83078..18ec93ae8f 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/CircularProgressIndicator.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/CircularProgressIndicator.kt @@ -72,8 +72,7 @@ fun CircularProgressIndicator( internal fun CircularProgressIndicatorPreview() = ElementThemedPreview(vertical = false) { Column(verticalArrangement = Arrangement.spacedBy(4.dp)) { // Indeterminate progress - CircularProgressIndicator( - ) + CircularProgressIndicator() // Fixed progress CircularProgressIndicator( progress = { 0.90F } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/FloatingActionButton.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/FloatingActionButton.kt index 15893cb610..f5f8f6b130 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/FloatingActionButton.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/FloatingActionButton.kt @@ -38,7 +38,8 @@ import io.element.android.libraries.designsystem.preview.PreviewGroup fun FloatingActionButton( onClick: () -> Unit, modifier: Modifier = Modifier, - shape: Shape = CircleShape, // FloatingActionButtonDefaults.shape, + // FloatingActionButtonDefaults.shape + shape: Shape = CircleShape, containerColor: Color = FloatingActionButtonDefaults.containerColor, contentColor: Color = contentColorFor(containerColor), elevation: FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation(), diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/LinearProgressIndicator.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/LinearProgressIndicator.kt index 0c4dbd68fc..ca676d1d27 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/LinearProgressIndicator.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/LinearProgressIndicator.kt @@ -77,8 +77,7 @@ fun LinearProgressIndicator( internal fun LinearProgressIndicatorPreview() = ElementThemedPreview(vertical = false) { Column(verticalArrangement = Arrangement.spacedBy(4.dp)) { // Indeterminate progress - LinearProgressIndicator( - ) + LinearProgressIndicator() // Fixed progress LinearProgressIndicator( progress = { 0.90F } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListItem.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListItem.kt index ebb8358321..081cc02e02 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListItem.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListItem.kt @@ -119,9 +119,13 @@ fun ListItem( androidx.compose.material3.ListItem( headlineContent = decoratedHeadlineContent, - modifier = if (onClick != null) Modifier - .clickable(enabled = enabled, onClick = onClick) - .then(modifier) else modifier, + modifier = if (onClick != null) { + Modifier + .clickable(enabled = enabled, onClick = onClick) + .then(modifier) + } else { + modifier + }, overlineContent = null, supportingContent = decoratedSupportingContent, leadingContent = decoratedLeadingContent, @@ -374,7 +378,6 @@ internal fun ListItemDisabledWithIconPreview() = PreviewItems.OneLineListItemPre @Suppress("ModifierMissing") private object PreviewItems { - @Composable fun ThreeLinesListItemPreview( modifier: Modifier = Modifier, diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListSectionHeader.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListSectionHeader.kt index 4ad6a3c48d..b50d0c985e 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListSectionHeader.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListSectionHeader.kt @@ -27,9 +27,9 @@ import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup -import io.element.android.compound.theme.ElementTheme // Designs: https://www.figma.com/file/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?type=design&node-id=425%3A24208&mode=design&t=G5hCfkLB6GgXDuWe-1 diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListSupportingText.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListSupportingText.kt index e6305d4dc2..aca326279d 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListSupportingText.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListSupportingText.kt @@ -81,7 +81,6 @@ fun ListSupportingText( } object ListSupportingTextDefaults { - /** Specifies the padding to use for the supporting text. */ @Immutable sealed interface Padding { diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ModalBottomSheet.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ModalBottomSheet.kt index c4fa7f00e8..6230592edd 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ModalBottomSheet.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ModalBottomSheet.kt @@ -34,12 +34,12 @@ import androidx.compose.ui.graphics.Shape import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme +import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.sheetStateForPreview -import io.element.android.compound.theme.ElementTheme -import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ModalBottomSheetLayout.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ModalBottomSheetLayout.kt index 64f7b4c1f3..8dd63d1cc6 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ModalBottomSheetLayout.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ModalBottomSheetLayout.kt @@ -119,9 +119,12 @@ private fun ContentToPreview() { displayHandle = true, sheetState = ModalBottomSheetState(ModalBottomSheetValue.Expanded, density = LocalDensity.current), sheetContent = { - Text(text = "Sheet Content", modifier = Modifier - .padding(start = 16.dp, end = 16.dp, bottom = 20.dp) - .background(color = Color.Green)) + Text( + text = "Sheet Content", + modifier = Modifier + .padding(start = 16.dp, end = 16.dp, bottom = 20.dp) + .background(color = Color.Green) + ) } ) { Text(text = "Content", modifier = Modifier.background(color = Color.Red)) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/RadioButton.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/RadioButton.kt index 789b7dbd5a..3b438b5f2f 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/RadioButton.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/RadioButton.kt @@ -30,9 +30,9 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup -import io.element.android.compound.theme.ElementTheme // Designs in https://www.figma.com/file/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?type=design&node-id=425%3A24202&mode=design&t=qb99xBP5mwwCtGkN-1 diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt index d32d7de685..470f0d7b4e 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt @@ -151,7 +151,6 @@ fun SearchBar( } object ElementSearchBarDefaults { - @OptIn(ExperimentalMaterial3Api::class) @Composable fun inactiveColors() = SearchBarDefaults.colors( diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Slider.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Slider.kt index 1bdbcf82cf..65f43bb250 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Slider.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Slider.kt @@ -37,7 +37,7 @@ fun Slider( modifier: Modifier = Modifier, enabled: Boolean = true, valueRange: ClosedFloatingPointRange = 0f..1f, - /*@IntRange(from = 0)*/ + // @IntRange(from = 0) steps: Int = 0, onValueChangeFinished: (() -> Unit)? = null, colors: SliderColors = SliderDefaults.colors(), diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Switch.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Switch.kt index b11cf433e0..7efb9d52eb 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Switch.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Switch.kt @@ -32,9 +32,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup -import io.element.android.compound.theme.ElementTheme import androidx.compose.material3.Switch as Material3Switch // Designs in https://www.figma.com/file/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?type=design&node-id=425%3A24203&mode=design&t=qb99xBP5mwwCtGkN-1 diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/bottomsheet/CustomBottomSheetScaffold.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/bottomsheet/CustomBottomSheetScaffold.kt index 22b55c19af..1cccaf0744 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/bottomsheet/CustomBottomSheetScaffold.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/bottomsheet/CustomBottomSheetScaffold.kt @@ -282,11 +282,13 @@ private fun CustomStandardBottomSheet( if (anchoredDraggableState.anchors.size > 1 && sheetSwipeEnabled) { if (currentValue == SheetValue.PartiallyExpanded) { expand(expandActionLabel) { - scope.launch { expand() }; true + scope.launch { expand() } + true } } else { collapse(partialExpandActionLabel) { - scope.launch { partialExpand() }; true + scope.launch { partialExpand() } + true } } if (!state.skipHiddenState) { @@ -314,7 +316,6 @@ private fun CustomStandardBottomSheet( */ @ExperimentalFoundationApi class DraggableAnchorsConfig { - internal val anchors = mutableMapOf() /** @@ -344,7 +345,6 @@ internal fun DraggableAnchors( ): DraggableAnchors = MapDraggableAnchors(DraggableAnchorsConfig().apply(builder).anchors) private class MapDraggableAnchors(private val anchors: Map) : DraggableAnchors { - override fun positionOf(value: T): Float = anchors[value] ?: Float.NaN override fun hasAnchorFor(value: T) = anchors.containsKey(value) @@ -498,10 +498,10 @@ internal fun rememberSheetState( initialValue: SheetValue = SheetValue.Hidden, skipHiddenState: Boolean = false, ): CustomSheetState { - val density = LocalDensity.current return rememberSaveable( - skipPartiallyExpanded, confirmValueChange, + skipPartiallyExpanded, + confirmValueChange, saver = CustomSheetState.Saver( skipPartiallyExpanded = skipPartiallyExpanded, confirmValueChange = confirmValueChange, diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/bottomsheet/CustomSheetState.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/bottomsheet/CustomSheetState.kt index 9a2ff713db..d861a38a6a 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/bottomsheet/CustomSheetState.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/bottomsheet/CustomSheetState.kt @@ -35,21 +35,22 @@ import kotlinx.coroutines.CancellationException @OptIn(ExperimentalFoundationApi::class) @Stable @ExperimentalMaterial3Api -class CustomSheetState @Deprecated( +class CustomSheetState +@Deprecated( message = "This constructor is deprecated. " + - "Please use the constructor that provides a [Density]", + "Please use the constructor that provides a [Density]", replaceWith = ReplaceWith( "SheetState(" + - "skipPartiallyExpanded, LocalDensity.current, initialValue, " + - "confirmValueChange, skipHiddenState)" + "skipPartiallyExpanded, LocalDensity.current, initialValue, " + + "confirmValueChange, skipHiddenState)" ) -) constructor( +) +constructor( internal val skipPartiallyExpanded: Boolean, initialValue: SheetValue = Hidden, confirmValueChange: (SheetValue) -> Boolean = { true }, internal val skipHiddenState: Boolean = false, ) { - /** * State of a sheet composable, such as [ModalBottomSheet] * @@ -77,11 +78,12 @@ class CustomSheetState @Deprecated( ) : this(skipPartiallyExpanded, initialValue, confirmValueChange, skipHiddenState) { this.density = density } + init { if (skipPartiallyExpanded) { require(initialValue != PartiallyExpanded) { "The initial value must not be set to PartiallyExpanded if skipPartiallyExpanded " + - "is set to true." + "is set to true." } } if (skipHiddenState) { @@ -168,7 +170,7 @@ class CustomSheetState @Deprecated( suspend fun partialExpand() { check(!skipPartiallyExpanded) { "Attempted to animate to partial expanded when skipPartiallyExpanded was enabled. Set" + - " skipPartiallyExpanded to false to use this function." + " skipPartiallyExpanded to false to use this function." } animateTo(PartiallyExpanded) } @@ -194,7 +196,7 @@ class CustomSheetState @Deprecated( suspend fun hide() { check(!skipHiddenState) { "Attempted to animate to hidden when skipHiddenState was enabled. Set skipHiddenState" + - " to false to use this function." + " to false to use this function." } animateTo(Hidden) } @@ -254,7 +256,7 @@ class CustomSheetState @Deprecated( internal var density: Density? = null private fun requireDensity() = requireNotNull(density) { "SheetState did not have a density attached. Are you using SheetState with " + - "BottomSheetScaffold or ModalBottomSheet component?" + "BottomSheetScaffold or ModalBottomSheet component?" } companion object { @@ -278,7 +280,7 @@ class CustomSheetState @Deprecated( */ @Deprecated( message = "This function is deprecated. Please use the overload where Density is" + - " provided.", + " provided.", replaceWith = ReplaceWith( "Saver(skipPartiallyExpanded, confirmValueChange, LocalDensity.current)" ) @@ -290,7 +292,7 @@ class CustomSheetState @Deprecated( ) = Saver( save = { it.currentValue }, restore = { savedValue -> - CustomSheetState(skipPartiallyExpanded, savedValue, confirmValueChange) + CustomSheetState(skipPartiallyExpanded, savedValue, confirmValueChange) } ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/DatePickerPreview.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/DatePickerPreview.kt index cace4b5aa3..fc25d05750 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/DatePickerPreview.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/DatePickerPreview.kt @@ -24,10 +24,10 @@ import androidx.compose.material3.rememberDatePickerState import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage -import io.element.android.libraries.designsystem.theme.components.AlertDialogContent import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.PreviewGroup +import io.element.android.libraries.designsystem.theme.components.AlertDialogContent @Preview(group = PreviewGroup.DateTimePickers) @Composable diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/TimePickerPreview.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/TimePickerPreview.kt index 9e56a38137..94e596c360 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/TimePickerPreview.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/previews/TimePickerPreview.kt @@ -24,11 +24,11 @@ import androidx.compose.material3.TimePickerLayoutType import androidx.compose.material3.rememberTimePickerState import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview -import io.element.android.libraries.designsystem.theme.components.AlertDialogContent import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup +import io.element.android.libraries.designsystem.theme.components.AlertDialogContent @OptIn(ExperimentalMaterial3Api::class) @Preview(widthDp = 600, group = PreviewGroup.DateTimePickers) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/CommonResources.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/CommonDrawables.kt similarity index 100% rename from libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/CommonResources.kt rename to libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/CommonDrawables.kt diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/snackbar/SnackbarHost.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/snackbar/SnackbarHost.kt index a327d2f651..11074f759b 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/snackbar/SnackbarHost.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/snackbar/SnackbarHost.kt @@ -30,7 +30,8 @@ import io.element.android.libraries.designsystem.theme.components.Snackbar fun SnackbarHost(hostState: SnackbarHostState, modifier: Modifier = Modifier) { androidx.compose.material3.SnackbarHost(hostState, modifier) { data -> Snackbar( - modifier = Modifier.padding(12.dp), // Add default padding + // Add default padding + modifier = Modifier.padding(12.dp), message = data.visuals.message, action = data.visuals.actionLabel?.let { ButtonVisuals.Text(it, data::performAction) }, dismissAction = if (data.visuals.withDismissAction) { @@ -38,7 +39,9 @@ fun SnackbarHost(hostState: SnackbarHostState, modifier: Modifier = Modifier) { IconSource.Vector(CompoundIcons.Close), data::dismiss ) - } else null, + } else { + null + }, ) } } diff --git a/libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/colors/AvatarColorsTest.kt b/libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/colors/AvatarColorsTest.kt index 2db042cdd0..29a1478b4d 100644 --- a/libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/colors/AvatarColorsTest.kt +++ b/libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/colors/AvatarColorsTest.kt @@ -22,7 +22,6 @@ import io.element.android.compound.theme.avatarColorsLight import org.junit.Test class AvatarColorsTest { - @Test fun `ensure the size of the avatar color are equal for light and dark theme`() { assertThat(avatarColorsDark.size).isEqualTo(avatarColorsLight.size) diff --git a/libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/utils/snackbar/SnackbarDispatcherTests.kt b/libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/utils/snackbar/SnackbarDispatcherTests.kt index fbccaa4e75..68cded1601 100644 --- a/libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/utils/snackbar/SnackbarDispatcherTests.kt +++ b/libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/utils/snackbar/SnackbarDispatcherTests.kt @@ -22,7 +22,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class SnackbarDispatcherTests { - @Test fun `given an empty queue the flow emits a null item`() = runTest { val snackbarDispatcher = SnackbarDispatcher() @@ -87,5 +86,4 @@ class SnackbarDispatcherTests { assertThat(awaitItem()).isNull() } } - } diff --git a/libraries/encrypted-db/src/main/kotlin/io/element/encrypteddb/passphrase/RandomSecretPassphraseProvider.kt b/libraries/encrypted-db/src/main/kotlin/io/element/encrypteddb/passphrase/RandomSecretPassphraseProvider.kt index dd09188bc4..ce8a365bc4 100644 --- a/libraries/encrypted-db/src/main/kotlin/io/element/encrypteddb/passphrase/RandomSecretPassphraseProvider.kt +++ b/libraries/encrypted-db/src/main/kotlin/io/element/encrypteddb/passphrase/RandomSecretPassphraseProvider.kt @@ -33,7 +33,6 @@ class RandomSecretPassphraseProvider( private val file: File, private val secretSize: Int = 256, ) : PassphraseProvider { - override fun getPassphrase(): ByteArray { val encryptedFile = EncryptedFileFactory(context).create(file) return if (!file.exists()) { diff --git a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt index 6119fa00d9..131250fac7 100644 --- a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt +++ b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt @@ -62,7 +62,6 @@ class DefaultRoomLastMessageFormatter @Inject constructor( private val profileChangeContentFormatter: ProfileChangeContentFormatter, private val stateContentFormatter: StateContentFormatter, ) : RoomLastMessageFormatter { - companion object { // Max characters to display in the last message. This works around https://github.com/element-hq/element-x-android/issues/2105 private const val MAX_SAFE_LENGTH = 500 @@ -72,43 +71,43 @@ class DefaultRoomLastMessageFormatter @Inject constructor( val isOutgoing = event.isOwn val senderDisplayName = (event.senderProfile as? ProfileTimelineDetails.Ready)?.displayName ?: event.sender.value return when (val content = event.content) { - is MessageContent -> processMessageContents(content, senderDisplayName, isDmRoom) - RedactedContent -> { - val message = sp.getString(CommonStrings.common_message_removed) - if (!isDmRoom) { - prefix(message, senderDisplayName) - } else { - message - } - } - is StickerContent -> { - content.body - } - is UnableToDecryptContent -> { - val message = sp.getString(CommonStrings.common_waiting_for_decryption_key) - if (!isDmRoom) { - prefix(message, senderDisplayName) - } else { - message - } - } - is RoomMembershipContent -> { - roomMembershipContentFormatter.format(content, senderDisplayName, isOutgoing) + is MessageContent -> processMessageContents(content, senderDisplayName, isDmRoom) + RedactedContent -> { + val message = sp.getString(CommonStrings.common_message_removed) + if (!isDmRoom) { + prefix(message, senderDisplayName) + } else { + message } - is ProfileChangeContent -> { - profileChangeContentFormatter.format(content, senderDisplayName, isOutgoing) - } - is StateContent -> { - stateContentFormatter.format(content, senderDisplayName, isOutgoing, RenderingMode.RoomList) - } - is PollContent -> { - val message = sp.getString(CommonStrings.common_poll_summary, content.question) - prefixIfNeeded(message, senderDisplayName, isDmRoom) - } - is FailedToParseMessageLikeContent, is FailedToParseStateContent, is UnknownContent -> { - prefixIfNeeded(sp.getString(CommonStrings.common_unsupported_event), senderDisplayName, isDmRoom) + } + is StickerContent -> { + content.body + } + is UnableToDecryptContent -> { + val message = sp.getString(CommonStrings.common_waiting_for_decryption_key) + if (!isDmRoom) { + prefix(message, senderDisplayName) + } else { + message } - }?.take(MAX_SAFE_LENGTH) + } + is RoomMembershipContent -> { + roomMembershipContentFormatter.format(content, senderDisplayName, isOutgoing) + } + is ProfileChangeContent -> { + profileChangeContentFormatter.format(content, senderDisplayName, isOutgoing) + } + is StateContent -> { + stateContentFormatter.format(content, senderDisplayName, isOutgoing, RenderingMode.RoomList) + } + is PollContent -> { + val message = sp.getString(CommonStrings.common_poll_summary, content.question) + prefixIfNeeded(message, senderDisplayName, isDmRoom) + } + is FailedToParseMessageLikeContent, is FailedToParseStateContent, is UnknownContent -> { + prefixIfNeeded(sp.getString(CommonStrings.common_unsupported_event), senderDisplayName, isDmRoom) + } + }?.take(MAX_SAFE_LENGTH) } private fun processMessageContents(messageContent: MessageContent, senderDisplayName: String, isDmRoom: Boolean): CharSequence? { diff --git a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt index ce4e4aa860..63c8f939a0 100644 --- a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt +++ b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt @@ -46,7 +46,6 @@ class DefaultTimelineEventFormatter @Inject constructor( private val profileChangeContentFormatter: ProfileChangeContentFormatter, private val stateContentFormatter: StateContentFormatter, ) : TimelineEventFormatter { - override fun format(event: EventTimelineItem): CharSequence? { val isOutgoing = event.isOwn val senderDisplayName = (event.senderProfile as? ProfileTimelineDetails.Ready)?.displayName ?: event.sender.value diff --git a/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt b/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt index 049d5af4dd..c75fb9ed4b 100644 --- a/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt +++ b/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt @@ -65,7 +65,6 @@ import org.robolectric.annotation.Config @Suppress("LargeClass") @RunWith(RobolectricTestRunner::class) class DefaultRoomLastMessageFormatterTest { - private lateinit var context: Context private lateinit var fakeMatrixClient: FakeMatrixClient private lateinit var formatter: DefaultRoomLastMessageFormatter diff --git a/libraries/eventformatter/test/src/main/kotlin/io/element/android/libraries/eventformatter/test/FakeRoomLastMessageFormatter.kt b/libraries/eventformatter/test/src/main/kotlin/io/element/android/libraries/eventformatter/test/FakeRoomLastMessageFormatter.kt index cd723a27af..e24758c197 100644 --- a/libraries/eventformatter/test/src/main/kotlin/io/element/android/libraries/eventformatter/test/FakeRoomLastMessageFormatter.kt +++ b/libraries/eventformatter/test/src/main/kotlin/io/element/android/libraries/eventformatter/test/FakeRoomLastMessageFormatter.kt @@ -20,7 +20,6 @@ import io.element.android.libraries.eventformatter.api.RoomLastMessageFormatter import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem class FakeRoomLastMessageFormatter : RoomLastMessageFormatter { - private var result: CharSequence? = null override fun format(event: EventTimelineItem, isDmRoom: Boolean): CharSequence? { diff --git a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/DefaultFeatureFlagService.kt b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/DefaultFeatureFlagService.kt index fd6f1b1f47..ac5e0d56cf 100644 --- a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/DefaultFeatureFlagService.kt +++ b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/DefaultFeatureFlagService.kt @@ -30,7 +30,6 @@ import javax.inject.Inject class DefaultFeatureFlagService @Inject constructor( private val providers: Set<@JvmSuppressWildcards FeatureFlagProvider> ) : FeatureFlagService { - override fun isFeatureEnabledFlow(feature: Feature): Flow { return providers.filter { it.hasFeature(feature) } .sortedByDescending(FeatureFlagProvider::priority) diff --git a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/FeatureFlagProvider.kt b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/FeatureFlagProvider.kt index e40d59ec5b..5fe716caa3 100644 --- a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/FeatureFlagProvider.kt +++ b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/FeatureFlagProvider.kt @@ -28,4 +28,3 @@ interface FeatureFlagProvider { const val LOW_PRIORITY = 0 const val MEDIUM_PRIORITY = 1 const val HIGH_PRIORITY = 2 - diff --git a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt index 7866ac1f1f..3c9b15def5 100644 --- a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt +++ b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt @@ -28,7 +28,6 @@ import javax.inject.Inject */ class StaticFeatureFlagProvider @Inject constructor() : FeatureFlagProvider { - override val priority = LOW_PRIORITY override fun isFeatureEnabledFlow(feature: Feature): Flow { diff --git a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/di/FeatureFlagModule.kt b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/di/FeatureFlagModule.kt index b2f0a4106d..19d4b1336d 100644 --- a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/di/FeatureFlagModule.kt +++ b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/di/FeatureFlagModule.kt @@ -22,14 +22,13 @@ import dagger.Provides import dagger.multibindings.ElementsIntoSet import io.element.android.libraries.core.meta.BuildType import io.element.android.libraries.di.AppScope -import io.element.android.libraries.featureflag.impl.StaticFeatureFlagProvider import io.element.android.libraries.featureflag.impl.FeatureFlagProvider import io.element.android.libraries.featureflag.impl.PreferencesFeatureFlagProvider +import io.element.android.libraries.featureflag.impl.StaticFeatureFlagProvider @Module @ContributesTo(AppScope::class) object FeatureFlagModule { - @JvmStatic @Provides @ElementsIntoSet diff --git a/libraries/featureflag/impl/src/test/kotlin/io/element/android/libraries/featureflag/impl/DefaultFeatureFlagServiceTest.kt b/libraries/featureflag/impl/src/test/kotlin/io/element/android/libraries/featureflag/impl/DefaultFeatureFlagServiceTest.kt index fc2b605d47..0fd503d6d4 100644 --- a/libraries/featureflag/impl/src/test/kotlin/io/element/android/libraries/featureflag/impl/DefaultFeatureFlagServiceTest.kt +++ b/libraries/featureflag/impl/src/test/kotlin/io/element/android/libraries/featureflag/impl/DefaultFeatureFlagServiceTest.kt @@ -23,7 +23,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class DefaultFeatureFlagServiceTest { - @Test fun `given service without provider when feature is checked then it returns the default value`() = runTest { val featureFlagService = DefaultFeatureFlagService(emptySet()) diff --git a/libraries/featureflag/impl/src/test/kotlin/io/element/android/libraries/featureflag/impl/FakeMutableFeatureFlagProvider.kt b/libraries/featureflag/impl/src/test/kotlin/io/element/android/libraries/featureflag/impl/FakeMutableFeatureFlagProvider.kt index 20242cca69..315624d474 100644 --- a/libraries/featureflag/impl/src/test/kotlin/io/element/android/libraries/featureflag/impl/FakeMutableFeatureFlagProvider.kt +++ b/libraries/featureflag/impl/src/test/kotlin/io/element/android/libraries/featureflag/impl/FakeMutableFeatureFlagProvider.kt @@ -21,7 +21,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow class FakeMutableFeatureFlagProvider(override val priority: Int) : MutableFeatureFlagProvider { - private val enabledFeatures = mutableMapOf>() override suspend fun setFeatureEnabled(feature: Feature, enabled: Boolean) { diff --git a/libraries/featureflag/test/src/main/java/io/element/android/libraries/featureflag/test/FakeFeatureFlagService.kt b/libraries/featureflag/test/src/main/java/io/element/android/libraries/featureflag/test/FakeFeatureFlagService.kt index 18c9920d74..1cdde03286 100644 --- a/libraries/featureflag/test/src/main/java/io/element/android/libraries/featureflag/test/FakeFeatureFlagService.kt +++ b/libraries/featureflag/test/src/main/java/io/element/android/libraries/featureflag/test/FakeFeatureFlagService.kt @@ -24,7 +24,6 @@ import kotlinx.coroutines.flow.MutableStateFlow class FakeFeatureFlagService( initialState: Map = emptyMap() ) : FeatureFlagService { - private val enabledFeatures = initialState .map { it.key to MutableStateFlow(it.value) diff --git a/libraries/featureflag/ui/src/main/kotlin/io/element/android/libraries/featureflag/ui/FeatureListView.kt b/libraries/featureflag/ui/src/main/kotlin/io/element/android/libraries/featureflag/ui/FeatureListView.kt index 6bf4467de8..a0e298db26 100644 --- a/libraries/featureflag/ui/src/main/kotlin/io/element/android/libraries/featureflag/ui/FeatureListView.kt +++ b/libraries/featureflag/ui/src/main/kotlin/io/element/android/libraries/featureflag/ui/FeatureListView.kt @@ -20,8 +20,8 @@ import androidx.compose.foundation.layout.Column import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import io.element.android.libraries.designsystem.components.preferences.PreferenceCheckbox -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.featureflag.ui.model.FeatureUiModel import io.element.android.libraries.featureflag.ui.model.aFeatureUiModelList import kotlinx.collections.immutable.ImmutableList diff --git a/libraries/indicator/impl/src/main/kotlin/io/element/android/libraries/indicator/impl/DefaultIndicatorService.kt b/libraries/indicator/impl/src/main/kotlin/io/element/android/libraries/indicator/impl/DefaultIndicatorService.kt index a47da27a38..80af72d6a9 100644 --- a/libraries/indicator/impl/src/main/kotlin/io/element/android/libraries/indicator/impl/DefaultIndicatorService.kt +++ b/libraries/indicator/impl/src/main/kotlin/io/element/android/libraries/indicator/impl/DefaultIndicatorService.kt @@ -39,7 +39,6 @@ class DefaultIndicatorService @Inject constructor( private val encryptionService: EncryptionService, private val featureFlagService: FeatureFlagService, ) : IndicatorService { - @Composable override fun showRoomListTopBarIndicator(): State { val canVerifySession by sessionVerificationService.canVerifySessionFlow.collectAsState(initial = false) diff --git a/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapApplier.kt b/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapApplier.kt index b6cfff034a..650e9d27ef 100644 --- a/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapApplier.kt +++ b/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapApplier.kt @@ -36,7 +36,6 @@ internal class MapApplier( val style: Style, val symbolManager: SymbolManager, ) : AbstractApplier(MapNodeRoot) { - private val decorations = mutableListOf() override fun onClear() { diff --git a/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapUpdater.kt b/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapUpdater.kt index e4e3565f22..759061ac3d 100644 --- a/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapUpdater.kt +++ b/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapUpdater.kt @@ -16,6 +16,7 @@ * limitations under the License. */ @file:Suppress("MatchingDeclarationName") + package io.element.android.libraries.maplibre.compose import android.annotation.SuppressLint @@ -41,7 +42,6 @@ internal class MapPropertiesNode( cameraPositionState: CameraPositionState, locationSettings: MapLocationSettings, ) : MapNode { - init { map.locationComponent.activateLocationComponent( LocationComponentActivationOptions.Builder(context, style) diff --git a/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapboxMap.kt b/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapboxMap.kt index 5af79e7524..4fab4b506f 100644 --- a/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapboxMap.kt +++ b/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapboxMap.kt @@ -24,7 +24,7 @@ import android.content.res.Configuration import android.os.Bundle import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box -import androidx.compose.material.Text +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.Composition import androidx.compose.runtime.CompositionContext @@ -81,7 +81,10 @@ public fun MapboxMap( uiSettings: MapUiSettings = DefaultMapUiSettings, symbolManagerSettings: MapSymbolManagerSettings = DefaultMapSymbolManagerSettings, locationSettings: MapLocationSettings = DefaultMapLocationSettings, - content: (@Composable @MapboxMapComposable () -> Unit)? = null, + content: ( + @Composable @MapboxMapComposable + () -> Unit + )? = null, ) { // When in preview, early return a Box with the received modifier preserving layout if (LocalInspectionMode.current) { @@ -158,7 +161,8 @@ private suspend inline fun CompositionContext.newComposition( val style = map.awaitStyle(context, styleUri, images) val symbolManager = SymbolManager(mapView, map, style) return Composition( - MapApplier(map, style, symbolManager), this + MapApplier(map, style, symbolManager), + this ).apply { setContent(content) } @@ -234,7 +238,7 @@ private fun MapView.lifecycleObserver(previousState: MutableState this.onPause() Lifecycle.Event.ON_STOP -> this.onStop() Lifecycle.Event.ON_DESTROY -> { - //handled in onDispose + // handled in onDispose } Lifecycle.Event.ON_ANY -> error("ON_ANY should never be used") } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetails.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetails.kt index f5fc38eb16..f360c12096 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetails.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetails.kt @@ -24,4 +24,4 @@ data class MatrixHomeServerDetails( val url: String, val supportsPasswordLogin: Boolean, val supportsOidcLogin: Boolean, -): Parcelable +) : Parcelable diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/OidcConfig.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/OidcConfig.kt index ae473885da..466457664e 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/OidcConfig.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/OidcConfig.kt @@ -17,5 +17,5 @@ package io.element.android.libraries.matrix.api.auth object OidcConfig { - const val redirectUri = "io.element:/callback" + const val REDIRECT_URI = "io.element:/callback" } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/MatrixPatterns.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/MatrixPatterns.kt index a668448752..d0e0f4c13e 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/MatrixPatterns.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/MatrixPatterns.kt @@ -24,7 +24,6 @@ import timber.log.Timber * Ref: https://matrix.org/docs/spec/appendices#identifier-grammar */ object MatrixPatterns { - // Note: TLD is not mandatory (localhost, IP address...) private const val DOMAIN_REGEX = ":[A-Z0-9.-]+(:[0-9]{2,5})?" diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/RoomId.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/RoomId.kt index d21d3ec368..e74bdd0c6d 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/RoomId.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/RoomId.kt @@ -21,7 +21,6 @@ import java.io.Serializable @JvmInline value class RoomId(val value: String) : Serializable { - init { if (BuildConfig.DEBUG && !MatrixPatterns.isRoomId(value)) { error("`$value` is not a valid room id.\n Example room id: `!room_id:domain`.") diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/SpaceId.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/SpaceId.kt index 89901b7350..2ccc7dacba 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/SpaceId.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/SpaceId.kt @@ -25,8 +25,8 @@ value class SpaceId(val value: String) : Serializable { if (BuildConfig.DEBUG && !MatrixPatterns.isSpaceId(value)) { error( "`$value` is not a valid space id.\n" + - "Space ids are the same as room ids.\n" + - "Example space id: `!space_id:domain`." + "Space ids are the same as room ids.\n" + + "Example space id: `!space_id:domain`." ) } } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/ThreadId.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/ThreadId.kt index b6ec9766f4..83212b8d53 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/ThreadId.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/ThreadId.kt @@ -25,8 +25,8 @@ value class ThreadId(val value: String) : Serializable { if (BuildConfig.DEBUG && !MatrixPatterns.isThreadId(value)) { error( "`$value` is not a valid thread id.\n" + - "Thread ids are the same as event ids.\n" + - "Example thread id: `\$Rqnc-F-dvnEYJTyHq_iKxU2bZ1CI92-kuZq3a5lr5Zg`." + "Thread ids are the same as event ids.\n" + + "Example thread id: `\$Rqnc-F-dvnEYJTyHq_iKxU2bZ1CI92-kuZq3a5lr5Zg`." ) } } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/UserId.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/UserId.kt index e72af8596a..fd9073c981 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/UserId.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/core/UserId.kt @@ -26,7 +26,6 @@ import java.io.Serializable */ @JvmInline value class UserId(val value: String) : Serializable { - init { if (BuildConfig.DEBUG && !MatrixPatterns.isUserId(value)) { error("`$value` is not a valid user id.\nExample user id: `@name:domain`.") diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/BackupState.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/BackupState.kt index 03f650e316..ba023d8a12 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/BackupState.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/BackupState.kt @@ -31,5 +31,5 @@ enum class BackupState { RESUMING, ENABLED, DOWNLOADING, - DISABLING; + DISABLING } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notificationsettings/NotificationSettingsService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notificationsettings/NotificationSettingsService.kt index f1fe18d6e6..2a6cb42e33 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notificationsettings/NotificationSettingsService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notificationsettings/NotificationSettingsService.kt @@ -26,7 +26,7 @@ interface NotificationSettingsService { /** * State of the current room notification settings flow ([MatrixRoomNotificationSettingsState.Unknown] if not started). */ - val notificationSettingsChangeFlow : SharedFlow + val notificationSettingsChangeFlow: SharedFlow suspend fun getRoomNotificationSettings(roomId: RoomId, isEncrypted: Boolean, isOneToOne: Boolean): Result suspend fun getDefaultRoomNotificationMode(isEncrypted: Boolean, isOneToOne: Boolean): Result suspend fun setDefaultRoomNotificationMode(isEncrypted: Boolean, mode: RoomNotificationMode, isOneToOne: Boolean): Result diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverter.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverter.kt index 19e71db332..4ae7b7dc94 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverter.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverter.kt @@ -23,7 +23,6 @@ import io.element.android.appconfig.MatrixConfiguration * Mapping of an input URI to a matrix.to compliant URI. */ object MatrixToConverter { - /** * Try to convert a URL from an element web instance or from a client permalink to a matrix.to url. * To be successfully converted, URL path should contain one of the [SUPPORTED_PATHS]. @@ -34,7 +33,7 @@ object MatrixToConverter { */ fun convert(uri: Uri): Uri? { val uriString = uri.toString() - val baseUrl = MatrixConfiguration.matrixToPermalinkBaseUrl + val baseUrl = MatrixConfiguration.MATRIX_TO_PERMALINK_BASE_URL return when { // URL is already a matrix.to diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilder.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilder.kt index 2a388ae580..c46e15db3b 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilder.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilder.kt @@ -22,11 +22,10 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId object PermalinkBuilder { - private const val ROOM_PATH = "room/" private const val USER_PATH = "user/" - private val permalinkBaseUrl get() = (MatrixConfiguration.clientPermalinkBaseUrl ?: MatrixConfiguration.matrixToPermalinkBaseUrl).also { + private val permalinkBaseUrl get() = (MatrixConfiguration.clientPermalinkBaseUrl ?: MatrixConfiguration.MATRIX_TO_PERMALINK_BASE_URL).also { var baseUrl = it if (!baseUrl.endsWith("/")) { baseUrl += "/" @@ -80,7 +79,7 @@ object PermalinkBuilder { private fun escapeId(value: String) = value.replace("/", "%2F") - private fun isMatrixTo(): Boolean = permalinkBaseUrl.startsWith(MatrixConfiguration.matrixToPermalinkBaseUrl) + private fun isMatrixTo(): Boolean = permalinkBaseUrl.startsWith(MatrixConfiguration.MATRIX_TO_PERMALINK_BASE_URL) } sealed class PermalinkBuilderError : Throwable() { diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkData.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkData.kt index 1fc350775d..e39fee5a22 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkData.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkData.kt @@ -27,7 +27,6 @@ import kotlinx.collections.immutable.ImmutableList */ @Immutable sealed interface PermalinkData { - data class RoomLink( val roomIdOrAlias: String, val isRoomAlias: Boolean, diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParser.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParser.kt index dcd5221de8..3b90aee1be 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParser.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParser.kt @@ -30,7 +30,6 @@ import java.net.URLDecoder * or client permalinks (e.g. user/@chagai95:matrix.org) */ object PermalinkParser { - /** * Turns a uri string to a [PermalinkData]. */ @@ -130,7 +129,9 @@ object PermalinkParser { val splitNameValue = it.split("=") if (splitNameValue.size == 2) { Pair(splitNameValue[0], URLDecoder.decode(splitNameValue[1], "UTF-8")) - } else null + } else { + null + } } private fun String.getViaParameters(): List { diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/CurrentUserMembership.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/CurrentUserMembership.kt index 3aa71a9459..f3e20b5529 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/CurrentUserMembership.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/CurrentUserMembership.kt @@ -17,5 +17,7 @@ package io.element.android.libraries.matrix.api.room enum class CurrentUserMembership { - INVITED, JOINED, LEFT + INVITED, + JOINED, + LEFT } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/ForwardEventException.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/ForwardEventException.kt index 6b2813feb8..56bf0d4b17 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/ForwardEventException.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/ForwardEventException.kt @@ -21,6 +21,5 @@ import io.element.android.libraries.matrix.api.core.RoomId class ForwardEventException( val roomIds: List ) : Exception() { - override val message: String? = "Failed to deliver event to $roomIds rooms" } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoomMembersState.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoomMembersState.kt index 9a25aaa12e..759b0f46cb 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoomMembersState.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoomMembersState.kt @@ -35,5 +35,3 @@ fun MatrixRoomMembersState.roomMembers(): List? { else -> null } } - - diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/Mention.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/Mention.kt index 6a1b1f60ef..47fd900a8f 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/Mention.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/Mention.kt @@ -20,7 +20,7 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId sealed interface Mention { - data class User(val userId: UserId): Mention - data object AtRoom: Mention - data class Room(val roomId: RoomId?, val roomAlias: String?): Mention + data class User(val userId: UserId) : Mention + data object AtRoom : Mention + data class Room(val roomId: RoomId?, val roomAlias: String?) : Mention } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt index 54c00572c5..86cff93688 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt @@ -30,7 +30,11 @@ data class RoomMember( ) enum class RoomMembershipState { - BAN, INVITE, JOIN, KNOCK, LEAVE + BAN, + INVITE, + JOIN, + KNOCK, + LEAVE } fun RoomMember.getBestName(): String { diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomNotificationSettings.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomNotificationSettings.kt index 23f2b41797..8efbf20d19 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomNotificationSettings.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomNotificationSettings.kt @@ -22,5 +22,7 @@ data class RoomNotificationSettings( ) enum class RoomNotificationMode { - ALL_MESSAGES, MENTIONS_AND_KEYWORDS_ONLY, MUTE + ALL_MESSAGES, + MENTIONS_AND_KEYWORDS_ONLY, + MUTE } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StateEventType.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StateEventType.kt index 3cfacf4a23..487623970e 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StateEventType.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StateEventType.kt @@ -38,5 +38,5 @@ enum class StateEventType { ROOM_TOMBSTONE, ROOM_TOPIC, SPACE_CHILD, - SPACE_PARENT; + SPACE_PARENT } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/MatrixRoomPowerLevels.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/MatrixRoomPowerLevels.kt index e0ba452efe..3a89f61d9d 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/MatrixRoomPowerLevels.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/MatrixRoomPowerLevels.kt @@ -39,4 +39,3 @@ suspend fun MatrixRoom.canSendMessage(type: MessageEventType): Result = * Shortcut for calling [MatrixRoom.canUserRedact] with our own user. */ suspend fun MatrixRoom.canRedact(): Result = canUserRedact(sessionId) - diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/DynamicRoomList.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/DynamicRoomList.kt index 1f46c2780d..02833762e2 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/DynamicRoomList.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/DynamicRoomList.kt @@ -28,7 +28,6 @@ import kotlinx.coroutines.flow.onEach * It lets load rooms on demand and filter them. */ interface DynamicRoomList : RoomList { - sealed interface Filter { /** * No filter applied. diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomList.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomList.kt index 8722e2c5bd..5ffc58c332 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomList.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomList.kt @@ -28,7 +28,6 @@ import kotlin.time.Duration * Can be retrieved from [RoomListService] methods. */ interface RoomList { - sealed interface LoadingState { data object NotLoaded : LoadingState data class Loaded(val numberOfRooms: Int) : LoadingState diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomListService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomListService.kt index 5682a43389..c13e6ecad9 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomListService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomListService.kt @@ -25,7 +25,6 @@ import kotlinx.coroutines.flow.StateFlow * It requires the SyncService to be started to receive updates. */ interface RoomListService { - @Immutable sealed interface State { data object Idle : State diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/MatrixTimeline.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/MatrixTimeline.kt index 2c22b80246..9a423d07bb 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/MatrixTimeline.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/MatrixTimeline.kt @@ -21,7 +21,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow interface MatrixTimeline : AutoCloseable { - data class PaginationState( val isBackPaginating: Boolean, val hasMoreToLoadBackwards: Boolean, diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/MatrixTimelineItem.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/MatrixTimelineItem.kt index ae4e07a8f4..b677332e5f 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/MatrixTimelineItem.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/MatrixTimelineItem.kt @@ -30,4 +30,3 @@ sealed interface MatrixTimelineItem { data class Virtual(val uniqueId: String, val virtual: VirtualTimelineItem) : MatrixTimelineItem data object Other : MatrixTimelineItem } - diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/ReceiptType.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/ReceiptType.kt index 7f02285b7e..3cf556dc5a 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/ReceiptType.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/ReceiptType.kt @@ -19,5 +19,5 @@ package io.element.android.libraries.matrix.api.timeline enum class ReceiptType { READ, READ_PRIVATE, - FULLY_READ; + FULLY_READ } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventContent.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventContent.kt index 5dcfd88016..fc4840d610 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventContent.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventContent.kt @@ -56,7 +56,6 @@ data class PollContent( data class UnableToDecryptContent( val data: Data ) : EventContent { - @Immutable sealed interface Data { data class OlmV1Curve25519AesSha2( diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventType.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventType.kt index 8141528f34..67b57b6a07 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventType.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventType.kt @@ -88,12 +88,12 @@ object EventType { fun isCallEvent(type: String): Boolean { return type == CALL_INVITE || - type == CALL_CANDIDATES || - type == CALL_ANSWER || - type == CALL_HANGUP || - type == CALL_SELECT_ANSWER || - type == CALL_NEGOTIATE || - type == CALL_REJECT || - type == CALL_REPLACES + type == CALL_CANDIDATES || + type == CALL_ANSWER || + type == CALL_HANGUP || + type == CALL_SELECT_ANSWER || + type == CALL_NEGOTIATE || + type == CALL_REJECT || + type == CALL_REPLACES } } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MembershipChange.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MembershipChange.kt index 8aa8845f23..6159391928 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MembershipChange.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MembershipChange.kt @@ -33,5 +33,5 @@ enum class MembershipChange { KNOCK_ACCEPTED, KNOCK_RETRACTED, KNOCK_DENIED, - NOT_IMPLEMENTED; + NOT_IMPLEMENTED } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MessageFormat.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MessageFormat.kt index 4e88113355..16490ebf5f 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MessageFormat.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MessageFormat.kt @@ -17,5 +17,6 @@ package io.element.android.libraries.matrix.api.timeline.item.event enum class MessageFormat { - HTML, UNKNOWN + HTML, + UNKNOWN } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/ReactionSender.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/ReactionSender.kt index 60398cffd5..7d26e0257b 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/ReactionSender.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/ReactionSender.kt @@ -28,4 +28,3 @@ data class ReactionSender( val senderId: UserId, val timestamp: Long ) - diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/TimelineItemEventOrigin.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/TimelineItemEventOrigin.kt index 0f906e6719..11415eaf6a 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/TimelineItemEventOrigin.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/TimelineItemEventOrigin.kt @@ -17,5 +17,7 @@ package io.element.android.libraries.matrix.api.timeline.item.event enum class TimelineItemEventOrigin { - LOCAL, SYNC, PAGINATION; + LOCAL, + SYNC, + PAGINATION } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/virtual/VirtualTimelineItem.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/virtual/VirtualTimelineItem.kt index ae1b24c902..9839d35a27 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/virtual/VirtualTimelineItem.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/virtual/VirtualTimelineItem.kt @@ -17,7 +17,6 @@ package io.element.android.libraries.matrix.api.timeline.item.virtual sealed interface VirtualTimelineItem { - data class DayDivider( val timestamp: Long ) : VirtualTimelineItem diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationService.kt index db8fa1a939..00fd9dc561 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationService.kt @@ -21,7 +21,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow interface SessionVerificationService { - /** * State of the current verification flow ([VerificationFlowState.Initial] if not started). */ diff --git a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/AuthErrorCodeTest.kt b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/AuthErrorCodeTest.kt index 5f987ad725..855c9a2c9e 100644 --- a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/AuthErrorCodeTest.kt +++ b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/AuthErrorCodeTest.kt @@ -20,7 +20,6 @@ import com.google.common.truth.Truth.assertThat import org.junit.Test class AuthErrorCodeTest { - @Test fun `errorCode finds UNKNOWN code`() { val error = AuthenticationException.Generic("M_UNKNOWN") @@ -44,5 +43,4 @@ class AuthErrorCodeTest { val error = AuthenticationException.Generic("Some other error") assertThat(error.errorCode).isEqualTo(AuthErrorCode.UNKNOWN) } - } diff --git a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverterTest.kt b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverterTest.kt index d3d928c189..cbf1bffc88 100644 --- a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverterTest.kt +++ b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverterTest.kt @@ -24,7 +24,6 @@ import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) class MatrixToConverterTest { - @Test fun `converting a matrix-to url does nothing`() { val url = Uri.parse("https://matrix.to/#/#element-android:matrix.org") @@ -54,5 +53,4 @@ class MatrixToConverterTest { val url = Uri.parse("https://element.io/") assertThat(MatrixToConverter.convert(url)).isNull() } - } diff --git a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilderTest.kt b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilderTest.kt index 282f58ab21..69621297c8 100644 --- a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilderTest.kt +++ b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilderTest.kt @@ -24,7 +24,6 @@ import io.element.android.tests.testutils.isInDebug import org.junit.Test class PermalinkBuilderTest { - fun `building a permalink for an invalid user id throws when verifying the id`() { assertThrowsInDebug { val userId = UserId("some invalid user id") diff --git a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkDataTest.kt b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkDataTest.kt index 08955411d8..03a56651e8 100644 --- a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkDataTest.kt +++ b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkDataTest.kt @@ -21,14 +21,13 @@ import kotlinx.collections.immutable.persistentListOf import org.junit.Test class PermalinkDataTest { - @Test fun `getRoomId() returns value when isRoomAlias is false`() { val permalinkData = PermalinkData.RoomLink( - roomIdOrAlias = "!abcdef123456:matrix.org", - isRoomAlias = false, - eventId = null, - viaParameters = persistentListOf(), + roomIdOrAlias = "!abcdef123456:matrix.org", + isRoomAlias = false, + eventId = null, + viaParameters = persistentListOf(), ) assertThat(permalinkData.getRoomId()).isNotNull() assertThat(permalinkData.getRoomAlias()).isNull() @@ -45,5 +44,4 @@ class PermalinkDataTest { assertThat(permalinkData.getRoomId()).isNull() assertThat(permalinkData.getRoomAlias()).isNotNull() } - } diff --git a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParserTest.kt b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParserTest.kt index 590be150c4..66cdaf88ee 100644 --- a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParserTest.kt +++ b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParserTest.kt @@ -24,7 +24,6 @@ import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) class PermalinkParserTest { - @Test fun `parsing an invalid url returns a fallback link`() { val url = "https://element.io" @@ -53,9 +52,9 @@ class PermalinkParserTest { fun `parsing a valid user url returns a user link`() { val url = "https://app.element.io/#/user/@test:matrix.org" assertThat(PermalinkParser.parse(url)).isEqualTo( - PermalinkData.UserLink( - userId = "@test:matrix.org" - ) + PermalinkData.UserLink( + userId = "@test:matrix.org" + ) ) } @@ -115,12 +114,12 @@ class PermalinkParserTest { fun `parsing a valid room alias url returns a room link`() { val url = "https://app.element.io/#/room/#element-android:matrix.org" assertThat(PermalinkParser.parse(url)).isEqualTo( - PermalinkData.RoomLink( - roomIdOrAlias = "#element-android:matrix.org", - isRoomAlias = true, - eventId = null, - viaParameters = persistentListOf(), - ) + PermalinkData.RoomLink( + roomIdOrAlias = "#element-android:matrix.org", + isRoomAlias = true, + eventId = null, + viaParameters = persistentListOf(), + ) ) } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index f7c157d2ba..94e0eb56e4 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -101,11 +101,10 @@ class RustMatrixClient( baseCacheDirectory: File, private val clock: SystemClock, ) : MatrixClient { - override val sessionId: UserId = UserId(client.userId()) private val innerRoomListService = syncService.roomListService() private val sessionDispatcher = dispatchers.io.limitedParallelism(64) - private val sessionCoroutineScope = appCoroutineScope.childScope(dispatchers.main, "Session-${sessionId}") + private val sessionCoroutineScope = appCoroutineScope.childScope(dispatchers.main, "Session-$sessionId") private val rustSyncService = RustSyncService(syncService, sessionCoroutineScope) private val verificationService = RustSessionVerificationService(rustSyncService, sessionCoroutineScope) private val pushersService = RustPushersService( @@ -137,7 +136,7 @@ class RustMatrixClient( Timber.w("didReceiveAuthError(isSoftLogout=$isSoftLogout)") if (isLoggingOut.getAndSet(true).not()) { Timber.v("didReceiveAuthError -> do the cleanup") - //TODO handle isSoftLogout parameter. + // TODO handle isSoftLogout parameter. appCoroutineScope.launch { val existingData = sessionStore.getSession(client.userId()) if (existingData != null) { @@ -204,7 +203,7 @@ class RustMatrixClient( // Check if already in memory... var cachedPairOfRoom = pairOfRoom(roomId) if (cachedPairOfRoom == null) { - //... otherwise, lets wait for the SS to load all rooms and check again. + // ... otherwise, lets wait for the SS to load all rooms and check again. roomListService.allRooms.awaitLoaded() cachedPairOfRoom = pairOfRoom(roomId) } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt index b1cb3ffac4..53aa560b97 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt @@ -39,7 +39,6 @@ class RustMatrixClientFactory @Inject constructor( private val userAgentProvider: UserAgentProvider, private val clock: SystemClock, ) { - suspend fun create(sessionData: SessionData): RustMatrixClient = withContext(coroutineDispatchers.io) { val client = ClientBuilder() .basePath(baseDirectory.absolutePath) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/OidcConfiguration.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/OidcConfiguration.kt index ad848ef95a..2f9a6e3bb8 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/OidcConfiguration.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/OidcConfiguration.kt @@ -21,7 +21,7 @@ import org.matrix.rustcomponents.sdk.OidcConfiguration val oidcConfiguration: OidcConfiguration = OidcConfiguration( clientName = "Element", - redirectUri = OidcConfig.redirectUri, + redirectUri = OidcConfig.REDIRECT_URI, clientUri = "https://element.io", logoUri = "https://element.io/mobile-icon.png", tosUri = "https://element.io/acceptable-use-policy-terms", @@ -29,9 +29,7 @@ val oidcConfiguration: OidcConfiguration = OidcConfiguration( contacts = listOf( "support@element.io", ), - /** - * Some homeservers/auth issuers don't support dynamic client registration, and have to be registered manually - */ + // Some homeservers/auth issuers don't support dynamic client registration, and have to be registered manually staticRegistrations = mapOf( "https://id.thirdroom.io/realms/thirdroom" to "elementx", ), diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt index 033a5f6073..bfce2b3ec2 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt @@ -52,7 +52,6 @@ class RustMatrixAuthenticationService @Inject constructor( userAgentProvider: UserAgentProvider, private val rustMatrixClientFactory: RustMatrixClientFactory, ) : MatrixAuthenticationService { - private val authService: RustAuthenticationService = RustAuthenticationService( basePath = baseDirectory.absolutePath, passphrase = null, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt index 8732645330..b0c33949d3 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt @@ -52,7 +52,6 @@ internal class RustEncryptionService( sessionCoroutineScope: CoroutineScope, private val dispatchers: CoroutineDispatchers, ) : EncryptionService { - private val service: Encryption = client.encryption() private val backupStateMapper = BackupStateMapper() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/MediaUploadHandlerImpl.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/MediaUploadHandlerImpl.kt index 639f9149c4..5241c920ab 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/MediaUploadHandlerImpl.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/MediaUploadHandlerImpl.kt @@ -29,7 +29,7 @@ class MediaUploadHandlerImpl( runCatching { sendAttachmentJoinHandle.join() } - .also { cleanUpFiles() } + .also { cleanUpFiles() } override fun cancel() { sendAttachmentJoinHandle.cancel() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaFile.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaFile.kt index 3274bfc123..cbc0079512 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaFile.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaFile.kt @@ -20,7 +20,6 @@ import io.element.android.libraries.matrix.api.media.MediaFile import org.matrix.rustcomponents.sdk.MediaFileHandle class RustMediaFile(private val inner: MediaFileHandle) : MediaFile { - override fun path(): String { return inner.path() } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaLoader.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaLoader.kt index 6ae20e06af..3392dc6c1b 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaLoader.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaLoader.kt @@ -34,7 +34,6 @@ class RustMediaLoader( dispatchers: CoroutineDispatchers, private val innerClient: Client, ) : MatrixMediaLoader { - @OptIn(ExperimentalCoroutinesApi::class) private val mediaDispatcher = dispatchers.io.limitedParallelism(32) private val cacheDirectory diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/TimelineEventToNotificationContentMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/TimelineEventToNotificationContentMapper.kt index 3d444f9a63..cc14fad815 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/TimelineEventToNotificationContentMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/TimelineEventToNotificationContentMapper.kt @@ -28,7 +28,6 @@ import org.matrix.rustcomponents.sdk.use import javax.inject.Inject class TimelineEventToNotificationContentMapper @Inject constructor() { - fun map(timelineEvent: TimelineEvent): NotificationContent { return timelineEvent.use { timelineEvent.eventType().use { eventType -> diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/MatrixRoomInfoMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/MatrixRoomInfoMapper.kt index 3ea1895e22..b2a13fbe4a 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/MatrixRoomInfoMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/MatrixRoomInfoMapper.kt @@ -29,7 +29,6 @@ import org.matrix.rustcomponents.sdk.RoomNotificationMode as RustRoomNotificatio class MatrixRoomInfoMapper( private val timelineItemMapper: EventTimelineItemMapper = EventTimelineItemMapper(), ) { - fun map(rustRoomInfo: RustRoomInfo): MatrixRoomInfo = rustRoomInfo.use { return MatrixRoomInfo( id = it.id, @@ -43,7 +42,7 @@ class MatrixRoomInfoMapper( canonicalAlias = it.canonicalAlias, alternativeAliases = it.alternativeAliases.toImmutableList(), currentUserMembership = it.membership.map(), - latestEvent = it.latestEvent?.use (timelineItemMapper::map), + latestEvent = it.latestEvent?.use(timelineItemMapper::map), inviter = it.inviter?.use(RoomMemberMapper::map), activeMembersCount = it.activeMembersCount.toLong(), invitedMembersCount = it.invitedMembersCount.toLong(), @@ -57,13 +56,13 @@ class MatrixRoomInfoMapper( } } -fun RustMembership.map(): CurrentUserMembership = when(this) { +fun RustMembership.map(): CurrentUserMembership = when (this) { RustMembership.INVITED -> CurrentUserMembership.INVITED RustMembership.JOINED -> CurrentUserMembership.JOINED RustMembership.LEFT -> CurrentUserMembership.LEFT } -fun RustRoomNotificationMode.map(): RoomNotificationMode = when(this) { +fun RustRoomNotificationMode.map(): RoomNotificationMode = when (this) { RustRoomNotificationMode.ALL_MESSAGES -> RoomNotificationMode.ALL_MESSAGES RustRoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY -> RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY RustRoomNotificationMode.MUTE -> RoomNotificationMode.MUTE diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomContentForwarder.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomContentForwarder.kt index f58a5c930d..1d610422f9 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomContentForwarder.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomContentForwarder.kt @@ -35,7 +35,6 @@ import kotlin.time.Duration.Companion.milliseconds class RoomContentForwarder( private val roomListService: RoomListService, ) { - /** * Forwards the event with the given [eventId] from the [fromTimeline] to the given [toRoomIds]. * @param fromTimeline the room to forward the event from diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomMemberMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomMemberMapper.kt index e79a8088aa..3354abbe16 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomMemberMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomMemberMapper.kt @@ -23,7 +23,6 @@ import org.matrix.rustcomponents.sdk.MembershipState as RustMembershipState import org.matrix.rustcomponents.sdk.RoomMember as RustRoomMember object RoomMemberMapper { - fun map(roomMember: RustRoomMember): RoomMember = roomMember.use { RoomMember( UserId(it.userId()), diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomSyncSubscriber.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomSyncSubscriber.kt index 4286fbb1ec..1b6b364844 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomSyncSubscriber.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomSyncSubscriber.kt @@ -31,7 +31,6 @@ class RoomSyncSubscriber( private val roomListService: RoomListService, private val dispatchers: CoroutineDispatchers, ) { - private val subscriptionCounts = HashMap() private val mutex = Mutex() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt index fc7215f583..84ccacb75f 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt @@ -104,7 +104,6 @@ class RustMatrixRoom( private val roomSyncSubscriber: RoomSyncSubscriber, private val matrixRoomInfoMapper: MatrixRoomInfoMapper, ) : MatrixRoom { - override val roomId = RoomId(innerRoom.id()) override val roomInfoFlow: Flow = mxCallbackFlow { @@ -122,7 +121,7 @@ class RustMatrixRoom( // Create a dispatcher for all room methods... private val roomDispatcher = coroutineDispatchers.io.limitedParallelism(32) - //...except getMember methods as it could quickly fill the roomDispatcher... + // ...except getMember methods as it could quickly fill the roomDispatcher... private val roomMembersDispatcher = coroutineDispatchers.io.limitedParallelism(8) private val roomCoroutineScope = sessionCoroutineScope.childScope(coroutineDispatchers.main, "RoomScope-$roomId") diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFactory.kt index 17bff4f5b7..c8d4dfd507 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFactory.kt @@ -39,7 +39,6 @@ internal class RoomListFactory( private val dispatcher: CoroutineDispatcher, private val roomSummaryDetailsFactory: RoomSummaryDetailsFactory = RoomSummaryDetailsFactory(), ) { - /** * Creates a room list that can be used to load more rooms and filter them dynamically. */ @@ -98,7 +97,6 @@ private class RustDynamicRoomList( private val processor: RoomSummaryListProcessor, override val pageSize: Int, ) : DynamicRoomList { - override suspend fun rebuildSummaries() { processor.rebuildRoomSummaries() } @@ -135,4 +133,3 @@ private fun DynamicRoomList.Filter.toRustFilter(): RoomListEntriesDynamicFilterK DynamicRoomList.Filter.AllNonLeft -> RoomListEntriesDynamicFilterKind.AllNonLeft } } - diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryDetailsFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryDetailsFactory.kt index 41c8ad40dd..81507b6955 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryDetailsFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryDetailsFactory.kt @@ -25,7 +25,6 @@ import org.matrix.rustcomponents.sdk.RoomInfo import org.matrix.rustcomponents.sdk.use class RoomSummaryDetailsFactory(private val roomMessageFactory: RoomMessageFactory = RoomMessageFactory()) { - fun create(roomInfo: RoomInfo): RoomSummaryDetails { val latestRoomMessage = roomInfo.latestEvent?.use { roomMessageFactory.create(it) @@ -45,4 +44,3 @@ class RoomSummaryDetailsFactory(private val roomMessageFactory: RoomMessageFacto ) } } - diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessor.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessor.kt index f0dd3a4176..5525d802bf 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessor.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessor.kt @@ -35,7 +35,6 @@ class RoomSummaryListProcessor( private val dispatcher: CoroutineDispatcher, private val roomSummaryDetailsFactory: RoomSummaryDetailsFactory = RoomSummaryDetailsFactory(), ) { - private val roomSummariesByIdentifier = HashMap() private val mutex = Mutex() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RustRoomListService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RustRoomListService.kt index 3dce8a0fc4..77d3a4e1fe 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RustRoomListService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RustRoomListService.kt @@ -43,7 +43,6 @@ internal class RustRoomListService( private val sessionCoroutineScope: CoroutineScope, roomListFactory: RoomListFactory, ) : RoomListService { - override val allRooms: DynamicRoomList = roomListFactory.createRoomList( pageSize = DEFAULT_PAGE_SIZE, initialFilter = DynamicRoomList.Filter.AllNonLeft, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/RustSyncService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/RustSyncService.kt index 932da42afb..ce7b536a59 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/RustSyncService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/RustSyncService.kt @@ -33,7 +33,6 @@ class RustSyncService( private val innerSyncService: SyncServiceInterface, sessionCoroutineScope: CoroutineScope ) : SyncService { - override suspend fun startSync() = runCatching { Timber.i("Start sync") innerSyncService.start() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/AsyncMatrixTimeline.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/AsyncMatrixTimeline.kt index 9be6d3e3bd..0cfb8dfc26 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/AsyncMatrixTimeline.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/AsyncMatrixTimeline.kt @@ -43,7 +43,6 @@ class AsyncMatrixTimeline( dispatcher: CoroutineDispatcher, private val timelineProvider: suspend () -> MatrixTimeline ) : MatrixTimeline { - private val _timelineItems: MutableStateFlow> = MutableStateFlow(emptyList()) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineDiffProcessor.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineDiffProcessor.kt index 38c4ef8fb6..602220c1c7 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineDiffProcessor.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineDiffProcessor.kt @@ -29,7 +29,6 @@ internal class MatrixTimelineDiffProcessor( private val timelineItems: MutableStateFlow>, private val timelineItemFactory: MatrixTimelineItemMapper, ) { - private val mutex = Mutex() suspend fun postItems(items: List) { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineItemMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineItemMapper.kt index beca5f17fb..5bf55105cc 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineItemMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/MatrixTimelineItemMapper.kt @@ -30,7 +30,6 @@ class MatrixTimelineItemMapper( private val virtualTimelineItemMapper: VirtualTimelineItemMapper = VirtualTimelineItemMapper(), private val eventTimelineItemMapper: EventTimelineItemMapper = EventTimelineItemMapper(), ) { - fun map(timelineItem: TimelineItem): MatrixTimelineItem = timelineItem.use { val uniqueId = timelineItem.uniqueId().toString() val asEvent = it.asEvent() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt index 547ccf1377..80c8f1d391 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt @@ -65,7 +65,6 @@ class RustMatrixTimeline( lastLoginTimestamp: Date?, private val onNewSyncedEvent: () -> Unit, ) : MatrixTimeline { - private val initLatch = CompletableDeferred() private val isInit = AtomicBoolean(false) @@ -257,7 +256,7 @@ class RustMatrixTimeline( private fun List.hasEncryptionHistoryBanner(): Boolean { val firstItem = firstOrNull() - return firstItem is MatrixTimelineItem.Virtual - && firstItem.virtual is VirtualTimelineItem.EncryptedHistoryBanner + return firstItem is MatrixTimelineItem.Virtual && + firstItem.virtual is VirtualTimelineItem.EncryptedHistoryBanner } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventMessageMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventMessageMapper.kt index 4f19a5c40f..debb35e870 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventMessageMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventMessageMapper.kt @@ -43,7 +43,6 @@ import org.matrix.rustcomponents.sdk.MessageFormat as RustMessageFormat import org.matrix.rustcomponents.sdk.MessageType as RustMessageType class EventMessageMapper { - private val timelineEventContentMapper by lazy { TimelineEventContentMapper() } fun map(message: Message): MessageContent = message.use { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt index 4e965fc4ef..1cfbb11e02 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt @@ -39,7 +39,6 @@ import org.matrix.rustcomponents.sdk.ProfileDetails as RustProfileDetails import org.matrix.rustcomponents.sdk.Receipt as RustReceipt class EventTimelineItemMapper(private val contentMapper: TimelineEventContentMapper = TimelineEventContentMapper()) { - fun map(eventTimelineItem: RustEventTimelineItem): EventTimelineItem = eventTimelineItem.use { EventTimelineItem( eventId = it.eventId()?.let(::EventId), @@ -100,11 +99,11 @@ private fun List?.map(): ImmutableList { private fun Map.map(): ImmutableList { return map { - Receipt( - userId = UserId(it.key), - timestamp = it.value.timestamp?.toLong() ?: 0 - ) - } + Receipt( + userId = UserId(it.key), + timestamp = it.value.timestamp?.toLong() ?: 0 + ) + } .sortedByDescending { it.timestamp } .toImmutableList() } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/TimelineEventContentMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/TimelineEventContentMapper.kt index ee28b18d08..67afb3907c 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/TimelineEventContentMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/TimelineEventContentMapper.kt @@ -42,7 +42,6 @@ import org.matrix.rustcomponents.sdk.MembershipChange as RustMembershipChange import org.matrix.rustcomponents.sdk.OtherState as RustOtherState class TimelineEventContentMapper(private val eventMessageMapper: EventMessageMapper = EventMessageMapper()) { - fun map(content: TimelineItemContent): EventContent { return content.use { content.kind().use { kind -> @@ -147,7 +146,7 @@ private fun RustMembershipChange.map(): MembershipChange { } } -//TODO extract state events? +// TODO extract state events? private fun RustOtherState.map(): OtherState { return when (this) { is RustOtherState.Custom -> OtherState.Custom(eventType) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/virtual/VirtualTimelineItemMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/virtual/VirtualTimelineItemMapper.kt index c2b6a8c863..912ababe9f 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/virtual/VirtualTimelineItemMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/virtual/VirtualTimelineItemMapper.kt @@ -20,7 +20,6 @@ import io.element.android.libraries.matrix.api.timeline.item.virtual.VirtualTime import org.matrix.rustcomponents.sdk.VirtualTimelineItem as RustVirtualTimelineItem class VirtualTimelineItemMapper { - fun map(virtualTimelineItem: RustVirtualTimelineItem): VirtualTimelineItem { return when (virtualTimelineItem) { is RustVirtualTimelineItem.DayDivider -> VirtualTimelineItem.DayDivider(virtualTimelineItem.ts.toLong()) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/postprocessor/TimelineEncryptedHistoryPostProcessor.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/postprocessor/TimelineEncryptedHistoryPostProcessor.kt index 9c0fbfd115..e2b0530c53 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/postprocessor/TimelineEncryptedHistoryPostProcessor.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/postprocessor/TimelineEncryptedHistoryPostProcessor.kt @@ -29,7 +29,6 @@ class TimelineEncryptedHistoryPostProcessor( private val isRoomEncrypted: Boolean, private val isKeyBackupEnabled: Boolean, ) { - suspend fun process(items: List): List = withContext(dispatcher) { Timber.d("Process on Thread=${Thread.currentThread()}") if (!isRoomEncrypted || isKeyBackupEnabled || lastLoginTimestamp == null) return@withContext items diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/LogEventLocation.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/LogEventLocation.kt index 712735649c..e5e6d86388 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/LogEventLocation.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/LogEventLocation.kt @@ -24,7 +24,6 @@ data class LogEventLocation( val file: String, val line: UInt?, ) { - companion object { /** * Create a [LogEventLocation] from a [StackTraceElement]. @@ -37,4 +36,3 @@ data class LogEventLocation( } } } - diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingService.kt index c211f48c05..a03813f347 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingService.kt @@ -28,7 +28,6 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class RustTracingService @Inject constructor(private val buildMeta: BuildMeta) : TracingService { - override fun setupTracing(tracingConfiguration: TracingConfiguration) { val filter = tracingConfiguration.filterConfiguration val rustTracingConfiguration = org.matrix.rustcomponents.sdk.TracingConfiguration( diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingTree.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingTree.kt index f97b08a018..6daa8134b6 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingTree.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingTree.kt @@ -36,7 +36,6 @@ private val fqcnIgnore = listOf( * A Timber tree that passes logs to the Rust SDK. */ internal class RustTracingTree(private val retrieveFromStackTrace: Boolean) : Timber.Tree() { - override fun log(priority: Int, tag: String?, message: String, t: Throwable?) { val location = if (retrieveFromStackTrace) { getLogEventLocationFromStackTrace() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/usersearch/UserSearchResultMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/usersearch/UserSearchResultMapper.kt index b95cbaeed1..976edd494e 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/usersearch/UserSearchResultMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/usersearch/UserSearchResultMapper.kt @@ -21,7 +21,6 @@ import kotlinx.collections.immutable.toImmutableList import org.matrix.rustcomponents.sdk.SearchUsersResults object UserSearchResultMapper { - fun map(result: SearchUsersResults): MatrixSearchUserResults { return MatrixSearchUserResults( results = result.results.map(UserProfileMapper::map).toImmutableList(), diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/util/TaskHandle.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/util/TaskHandle.kt index 5842ba1546..ffc3d55d53 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/util/TaskHandle.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/util/TaskHandle.kt @@ -25,7 +25,6 @@ fun TaskHandle.cancelAndDestroy() { } class TaskHandleBag(private val taskHandles: MutableSet = CopyOnWriteArraySet()) : Set by taskHandles { - operator fun plusAssign(taskHandle: TaskHandle?) { if (taskHandle == null) return taskHandles += taskHandle diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt index 0d705d6834..3872d27ab5 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt @@ -40,7 +40,6 @@ class RustSessionVerificationService( private val syncService: RustSyncService, private val sessionCoroutineScope: CoroutineScope, ) : SessionVerificationService, SessionVerificationControllerDelegate { - var verificationController: SessionVerificationControllerInterface? = null set(value) { field = value diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt index 641be4c618..68affed00d 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt @@ -34,8 +34,7 @@ class RustWidgetDriver( widgetSettings: MatrixWidgetSettings, private val room: Room, private val widgetCapabilitiesProvider: WidgetCapabilitiesProvider, -): MatrixWidgetDriver { - +) : MatrixWidgetDriver { // It's important to have extra capacity here to make sure we don't drop any messages override val incomingMessages = MutableSharedFlow(extraBufferCapacity = 10) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt index b0c02c9dcd..f6778489e4 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt @@ -23,7 +23,6 @@ import org.junit.Test import org.matrix.rustcomponents.sdk.AuthenticationException as RustAuthenticationException class AuthenticationExceptionMappingTest { - @Test fun `mapping an exception with no message returns 'Unknown error' message`() { val exception = Exception() @@ -41,12 +40,12 @@ class AuthenticationExceptionMappingTest { @Test fun `mapping specific exceptions map to their kotlin counterparts`() { assertThat(RustAuthenticationException.ClientMissing("Client missing").mapAuthenticationException()) - .isException("Client missing") + .isException("Client missing") assertThat(RustAuthenticationException.Generic("Generic").mapAuthenticationException()).isException("Generic") assertThat(RustAuthenticationException.InvalidServerName("Invalid server name").mapAuthenticationException()) - .isException("Invalid server name") + .isException("Invalid server name") assertThat(RustAuthenticationException.SessionMissing("Session missing").mapAuthenticationException()) .isException("Session missing") diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTests.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTests.kt index e4cd1c3abd..a9b0fea454 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTests.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTests.kt @@ -40,7 +40,6 @@ import org.matrix.rustcomponents.sdk.TaskHandle // NOTE: this class is using a fake implementation of a Rust SDK interface which returns actual Rust objects with pointers. // Since we don't access the data in those objects, this is fine for our tests, but that's as far as we can test this class. class RoomSummaryListProcessorTests { - private val summaries = MutableStateFlow>(emptyList()) @Test diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/postprocessor/TimelineEncryptedHistoryPostProcessorTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/postprocessor/TimelineEncryptedHistoryPostProcessorTest.kt index 8d36c45bb6..3343cbbdf4 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/postprocessor/TimelineEncryptedHistoryPostProcessorTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/postprocessor/TimelineEncryptedHistoryPostProcessorTest.kt @@ -29,7 +29,6 @@ import java.util.Date private const val FAKE_UNIQUE_ID = "FAKE_UNIQUE_ID" class TimelineEncryptedHistoryPostProcessorTest { - private val defaultLastLoginTimestamp = Date(1_689_061_264L) @Test diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt index 3977fbb133..a8d1d09818 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt @@ -59,7 +59,6 @@ class FakeMatrixClient( private val encryptionService: FakeEncryptionService = FakeEncryptionService(), private val accountManagementUrlString: Result = Result.success(null), ) : MatrixClient { - var setDisplayNameCalled: Boolean = false private set var uploadAvatarCalled: Boolean = false diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/encryption/FakeEncryptionService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/encryption/FakeEncryptionService.kt index fe13d9766d..945821f7f2 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/encryption/FakeEncryptionService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/encryption/FakeEncryptionService.kt @@ -84,7 +84,7 @@ class FakeEncryptionService : EncryptionService { } override suspend fun resetRecoveryKey(): Result = simulateLongTask { - return Result.success(fakeRecoveryKey) + return Result.success(FAKE_RECOVERY_KEY) } override suspend fun enableRecovery(waitForBackupsToUpload: Boolean): Result = simulateLongTask { @@ -108,6 +108,6 @@ class FakeEncryptionService : EncryptionService { } companion object { - const val fakeRecoveryKey = "fake" + const val FAKE_RECOVERY_KEY = "fake" } } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/media/FakeMediaLoader.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/media/FakeMediaLoader.kt index 3cf01f49bf..c31beb8e4a 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/media/FakeMediaLoader.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/media/FakeMediaLoader.kt @@ -22,7 +22,6 @@ import io.element.android.libraries.matrix.api.media.MediaSource import io.element.android.tests.testutils.simulateLongTask class FakeMediaLoader : MatrixMediaLoader { - var shouldFail = false var path: String = "" diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notificationsettings/FakeNotificationSettingsService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notificationsettings/FakeNotificationSettingsService.kt index 68bc508723..450ada5695 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notificationsettings/FakeNotificationSettingsService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notificationsettings/FakeNotificationSettingsService.kt @@ -33,7 +33,7 @@ class FakeNotificationSettingsService( initialOneToOneDefaultMode: RoomNotificationMode = RoomNotificationMode.ALL_MESSAGES, initialEncryptedOneToOneDefaultMode: RoomNotificationMode = RoomNotificationMode.ALL_MESSAGES, ) : NotificationSettingsService { - private var _notificationSettingsStateFlow = MutableStateFlow(Unit) + private val notificationSettingsStateFlow = MutableStateFlow(Unit) private var defaultGroupRoomNotificationMode: RoomNotificationMode = initialGroupDefaultMode private var defaultEncryptedGroupRoomNotificationMode: RoomNotificationMode = initialEncryptedGroupDefaultMode private var defaultOneToOneRoomNotificationMode: RoomNotificationMode = initialOneToOneDefaultMode @@ -49,7 +49,7 @@ class FakeNotificationSettingsService( private var setAtRoomError: Throwable? = null private var canHomeServerPushEncryptedEventsToDeviceResult = Result.success(true) override val notificationSettingsChangeFlow: SharedFlow - get() = _notificationSettingsStateFlow + get() = notificationSettingsStateFlow override suspend fun getRoomNotificationSettings(roomId: RoomId, isEncrypted: Boolean, isOneToOne: Boolean): Result { return Result.success( @@ -94,7 +94,7 @@ class FakeNotificationSettingsService( defaultGroupRoomNotificationMode = mode } } - _notificationSettingsStateFlow.emit(Unit) + notificationSettingsStateFlow.emit(Unit) return Result.success(Unit) } @@ -105,7 +105,7 @@ class FakeNotificationSettingsService( } else { roomNotificationModeIsDefault = false roomNotificationMode = mode - _notificationSettingsStateFlow.emit(Unit) + notificationSettingsStateFlow.emit(Unit) Result.success(Unit) } } @@ -117,7 +117,7 @@ class FakeNotificationSettingsService( } roomNotificationModeIsDefault = true roomNotificationMode = defaultEncryptedGroupRoomNotificationMode - _notificationSettingsStateFlow.emit(Unit) + notificationSettingsStateFlow.emit(Unit) return Result.success(Unit) } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt index 9f036a6b62..9c12ba1f4f 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt @@ -80,7 +80,6 @@ class FakeMatrixRoom( private val matrixTimeline: MatrixTimeline = FakeMatrixTimeline(), canRedact: Boolean = false, ) : MatrixRoom { - private var ignoreResult: Result = Result.success(Unit) private var unignoreResult: Result = Result.success(Unit) private var userDisplayNameResult = Result.success(null) diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/roomlist/FakeRoomListService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/roomlist/FakeRoomListService.kt index 073a314e9f..e998a35ecf 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/roomlist/FakeRoomListService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/roomlist/FakeRoomListService.kt @@ -24,7 +24,6 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow class FakeRoomListService : RoomListService { - private val allRoomSummariesFlow = MutableStateFlow>(emptyList()) private val inviteRoomSummariesFlow = MutableStateFlow>(emptyList()) private val allRoomsLoadingStateFlow = MutableStateFlow(RoomList.LoadingState.NotLoaded) diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/roomlist/SimplePagedRoomList.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/roomlist/SimplePagedRoomList.kt index e94002bd1d..e5f70b1b30 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/roomlist/SimplePagedRoomList.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/roomlist/SimplePagedRoomList.kt @@ -28,12 +28,11 @@ data class SimplePagedRoomList( override val loadingState: StateFlow, override val currentFilter: MutableStateFlow ) : DynamicRoomList { - override val pageSize: Int = Int.MAX_VALUE override val loadedPages = MutableStateFlow(1) override suspend fun loadMore() { - //No-op + // No-op loadedPages.getAndUpdate { it + 1 } } @@ -46,6 +45,6 @@ data class SimplePagedRoomList( } override suspend fun rebuildSummaries() { - //No-op + // No-op } } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/sync/FakeSyncService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/sync/FakeSyncService.kt index 4e618deb9a..d140bafd6f 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/sync/FakeSyncService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/sync/FakeSyncService.kt @@ -22,7 +22,6 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow class FakeSyncService : SyncService { - private val syncStateFlow = MutableStateFlow(SyncState.Idle) fun simulateError() { diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/FakeMatrixTimeline.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/FakeMatrixTimeline.kt index 94a8de2ced..5530bb8d13 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/FakeMatrixTimeline.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/FakeMatrixTimeline.kt @@ -36,7 +36,6 @@ class FakeMatrixTimeline( beginningOfRoomReached = false, ) ) : MatrixTimeline { - private val _paginationState: MutableStateFlow = MutableStateFlow(initialPaginationState) private val _timelineItems: MutableStateFlow> = MutableStateFlow(initialTimelineItems) diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/TimelineFixture.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/TimelineFixture.kt index 0cbbe81eef..d53bc7b18f 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/TimelineFixture.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/TimelineFixture.kt @@ -119,7 +119,9 @@ fun aTimelineItemDebugInfo( originalJson: String? = null, latestEditedJson: String? = null, ) = TimelineItemDebugInfo( - model, originalJson, latestEditedJson + model, + originalJson, + latestEditedJson ) fun aPollContent( diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeCallWidgetSettingsProvider.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeCallWidgetSettingsProvider.kt index 74cf94e4ad..d2be886ea6 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeCallWidgetSettingsProvider.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeCallWidgetSettingsProvider.kt @@ -22,7 +22,6 @@ import io.element.android.libraries.matrix.api.widget.MatrixWidgetSettings class FakeCallWidgetSettingsProvider( private val provideFn: (String, String) -> MatrixWidgetSettings = { _, _ -> MatrixWidgetSettings("id", true, "url") } ) : CallWidgetSettingsProvider { - val providedBaseUrls = mutableListOf() override fun provide(baseUrl: String, widgetId: String): MatrixWidgetSettings { diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeWidgetDriver.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeWidgetDriver.kt index f7fa2b494a..a64691fb40 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeWidgetDriver.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeWidgetDriver.kt @@ -23,7 +23,6 @@ import java.util.UUID class FakeWidgetDriver( override val id: String = UUID.randomUUID().toString(), ) : MatrixWidgetDriver { - private val _sentMessages = mutableListOf() val sentMessages: List = _sentMessages diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AttachmentThumbnail.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AttachmentThumbnail.kt index e0f3e7748c..3e8534e415 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AttachmentThumbnail.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AttachmentThumbnail.kt @@ -136,7 +136,13 @@ fun AttachmentThumbnail( @Parcelize enum class AttachmentThumbnailType : Parcelable { - Image, Video, File, Audio, Location, Voice, Poll + Image, + Video, + File, + Audio, + Location, + Voice, + Poll, } @Parcelize diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AvatarActionBottomSheet.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AvatarActionBottomSheet.kt index 5ca418073e..fd154928ef 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AvatarActionBottomSheet.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AvatarActionBottomSheet.kt @@ -34,6 +34,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.components.list.ListItemContent import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -43,7 +44,6 @@ import io.element.android.libraries.designsystem.theme.components.ListItemStyle import io.element.android.libraries.designsystem.theme.components.ModalBottomSheetLayout import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.matrix.ui.media.AvatarAction -import io.element.android.compound.theme.ElementTheme import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.launch diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt index 8a00be4663..581b70dfb1 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeader.kt @@ -29,15 +29,15 @@ import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.AvatarSize -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.ui.model.getAvatarData import io.element.android.libraries.matrix.ui.model.getBestName -import io.element.android.compound.theme.ElementTheme @Composable fun MatrixUserHeader( diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeaderPlaceholder.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeaderPlaceholder.kt index 0df8b027f9..03f0055463 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeaderPlaceholder.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserHeaderPlaceholder.kt @@ -31,12 +31,12 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.atomic.atoms.PlaceholderAtom import io.element.android.libraries.designsystem.components.avatar.AvatarSize -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.placeholderBackground -import io.element.android.compound.theme.ElementTheme @Composable fun MatrixUserHeaderPlaceholder( diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt index 947afd8bbd..5197ca0ebd 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt @@ -20,8 +20,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.PreviewParameter import io.element.android.libraries.designsystem.components.avatar.AvatarSize -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.ui.model.getAvatarData import io.element.android.libraries.matrix.ui.model.getBestName diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UnsavedAvatar.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UnsavedAvatar.kt index 0303e2eb6c..c67e918e34 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UnsavedAvatar.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UnsavedAvatar.kt @@ -35,12 +35,12 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import coil.request.ImageRequest -import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.debugPlaceholderBackground import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.temporaryColorBgSpecial -import io.element.android.compound.theme.ElementTheme /** * An avatar that the user has selected, but which has not yet been uploaded to Matrix. diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/CoilMediaFetcher.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/CoilMediaFetcher.kt index 8945c46817..455041aabd 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/CoilMediaFetcher.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/CoilMediaFetcher.kt @@ -41,7 +41,6 @@ internal class CoilMediaFetcher( private val mediaData: MediaRequestData?, private val options: Options ) : Fetcher { - override suspend fun fetch(): FetchResult? { if (mediaData?.source == null) return null return when (mediaData.kind) { @@ -126,9 +125,7 @@ internal class CoilMediaFetcher( class AvatarFactory( private val context: Context, private val client: MatrixClient - ) : - Fetcher.Factory { - + ) : Fetcher.Factory { override fun create( data: AvatarData, options: Options, diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestData.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestData.kt index 979d42b826..18629aa0e9 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestData.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestData.kt @@ -33,7 +33,6 @@ data class MediaRequestData( val source: MediaSource?, val kind: Kind ) { - sealed interface Kind { data object Content : Kind data class File(val body: String?, val mimeType: String) : Kind @@ -42,4 +41,3 @@ data class MediaRequestData( } } } - diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestDataKeyer.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestDataKeyer.kt index 0064c1b63b..5a7b93ad90 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestDataKeyer.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestDataKeyer.kt @@ -34,5 +34,5 @@ internal class MediaRequestDataKeyer : Keyer { private fun MediaRequestData.toKey(): String? { if (source == null) return null - return "${source.url}_${kind}" + return "${source.url}_$kind" } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/ToHtmlDocument.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/ToHtmlDocument.kt index 056aa5e8be..b3c6a0bf86 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/ToHtmlDocument.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/ToHtmlDocument.kt @@ -37,17 +37,17 @@ fun FormattedBody.toHtmlDocument(prefix: String? = null): Document? { // We don't trim the start in case it's used as indentation. ?.trimEnd() ?.let { formattedBody -> - val dom = if (prefix != null) { - Jsoup.parse("$prefix $formattedBody") - } else { - Jsoup.parse(formattedBody) - } + val dom = if (prefix != null) { + Jsoup.parse("$prefix $formattedBody") + } else { + Jsoup.parse(formattedBody) + } - // Prepend `@` to mentions - fixMentions(dom) + // Prepend `@` to mentions + fixMentions(dom) - dom - } + dom + } } private fun fixMentions(dom: Document) { diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/ToPlainText.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/ToPlainText.kt index f20252c42a..0cea2d7ae2 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/ToPlainText.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/ToPlainText.kt @@ -17,8 +17,8 @@ package io.element.android.libraries.matrix.ui.messages import io.element.android.libraries.matrix.api.timeline.item.event.FormattedBody -import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType import io.element.android.libraries.matrix.api.timeline.item.event.MessageFormat +import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType import org.jsoup.nodes.Document import org.jsoup.nodes.Element import org.jsoup.nodes.Node diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/MatrixRoomState.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/MatrixRoomState.kt index f2a73545bf..dea6195ba8 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/MatrixRoomState.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/room/MatrixRoomState.kt @@ -37,4 +37,3 @@ fun MatrixRoom.canRedactAsState(updateKey: Long): State { value = canRedact().getOrElse { false } } } - diff --git a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/ToHtmlDocumentTest.kt b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/ToHtmlDocumentTest.kt index d6c740b77d..704b87c593 100644 --- a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/ToHtmlDocumentTest.kt +++ b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/ToHtmlDocumentTest.kt @@ -26,7 +26,6 @@ import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) class ToHtmlDocumentTest { - @Test fun `toHtmlDocument - returns null if format is not HTML`() { val body = FormattedBody( diff --git a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/ToPlainTextTest.kt b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/ToPlainTextTest.kt index 3c1a469f42..7c61075584 100644 --- a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/ToPlainTextTest.kt +++ b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/ToPlainTextTest.kt @@ -28,7 +28,6 @@ import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) class ToPlainTextTest { - @Test fun `Document toPlainText - returns a plain text version of the document`() { val document = Jsoup.parse( @@ -40,7 +39,8 @@ class ToPlainTextTest { """.trimIndent() ) - assertThat(document.toPlainText()).isEqualTo(""" + assertThat(document.toPlainText()).isEqualTo( + """ Hello world • This is an unordered list. 1. This is an ordered list. @@ -59,7 +59,8 @@ class ToPlainTextTest {
""".trimIndent() ) - assertThat(formattedBody.toPlainText()).isEqualTo(""" + assertThat(formattedBody.toPlainText()).isEqualTo( + """ Hello world • This is an unordered list. 1. This is an ordered list. @@ -95,7 +96,8 @@ class ToPlainTextTest { """.trimIndent() ) ) - assertThat(messageType.toPlainText()).isEqualTo(""" + assertThat(messageType.toPlainText()).isEqualTo( + """ Hello world • This is an unordered list. 1. This is an ordered list. diff --git a/libraries/mediapickers/api/src/main/kotlin/io/element/android/libraries/mediapickers/api/PickerProvider.kt b/libraries/mediapickers/api/src/main/kotlin/io/element/android/libraries/mediapickers/api/PickerProvider.kt index 9becdc8aee..c221f511f5 100644 --- a/libraries/mediapickers/api/src/main/kotlin/io/element/android/libraries/mediapickers/api/PickerProvider.kt +++ b/libraries/mediapickers/api/src/main/kotlin/io/element/android/libraries/mediapickers/api/PickerProvider.kt @@ -21,7 +21,6 @@ import androidx.activity.result.PickVisualMediaRequest import androidx.compose.runtime.Composable interface PickerProvider { - @Composable fun registerGalleryPicker( onResult: (uri: Uri?, mimeType: String?) -> Unit diff --git a/libraries/mediapickers/api/src/test/kotlin/io/element/android/libraries/mediapickers/PickerTypeTest.kt b/libraries/mediapickers/api/src/test/kotlin/io/element/android/libraries/mediapickers/PickerTypeTest.kt index d759dc3020..3a0305daad 100644 --- a/libraries/mediapickers/api/src/test/kotlin/io/element/android/libraries/mediapickers/PickerTypeTest.kt +++ b/libraries/mediapickers/api/src/test/kotlin/io/element/android/libraries/mediapickers/PickerTypeTest.kt @@ -27,7 +27,6 @@ import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) class PickerTypeTest { - @Test fun `ImageAndVideo - assert types`() { val pickerType = PickerType.ImageAndVideo @@ -62,5 +61,4 @@ class PickerTypeTest { assertThat(pickerType.getContract()).isInstanceOf(ActivityResultContracts.CaptureVideo::class.java) assertThat(pickerType.getDefaultRequest()).isEqualTo(uri) } - } diff --git a/libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/PickerProviderImpl.kt b/libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/PickerProviderImpl.kt index f3c186a34f..d5e092f9ca 100644 --- a/libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/PickerProviderImpl.kt +++ b/libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/PickerProviderImpl.kt @@ -38,9 +38,8 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class PickerProviderImpl(private val isInTest: Boolean) : PickerProvider { - @Inject - constructor(): this(false) + constructor() : this(false) /** * Remembers and returns a [PickerLauncher] for a certain media/file [type]. diff --git a/libraries/mediaplayer/api/src/main/kotlin/io/element/android/libraries/mediaplayer/api/MediaPlayer.kt b/libraries/mediaplayer/api/src/main/kotlin/io/element/android/libraries/mediaplayer/api/MediaPlayer.kt index 3598edccf3..6be7e710fb 100644 --- a/libraries/mediaplayer/api/src/main/kotlin/io/element/android/libraries/mediaplayer/api/MediaPlayer.kt +++ b/libraries/mediaplayer/api/src/main/kotlin/io/element/android/libraries/mediaplayer/api/MediaPlayer.kt @@ -23,7 +23,6 @@ import kotlinx.coroutines.flow.StateFlow * A media player for Element X. */ interface MediaPlayer : AutoCloseable { - /** * The current state of the player. */ diff --git a/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/MediaPlayerImpl.kt b/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/MediaPlayerImpl.kt index 04919b0e56..1cd14051a7 100644 --- a/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/MediaPlayerImpl.kt +++ b/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/MediaPlayerImpl.kt @@ -46,7 +46,6 @@ import kotlin.time.Duration.Companion.seconds class MediaPlayerImpl @Inject constructor( private val player: SimplePlayer, ) : MediaPlayer { - private val listener = object : SimplePlayer.Listener { override fun onIsPlayingChanged(isPlaying: Boolean) { _state.update { diff --git a/libraries/mediaplayer/test/src/main/kotlin/io/element/android/libraries/mediaplayer/test/FakeMediaPlayer.kt b/libraries/mediaplayer/test/src/main/kotlin/io/element/android/libraries/mediaplayer/test/FakeMediaPlayer.kt index 9bfb974622..fa5d4b57b9 100644 --- a/libraries/mediaplayer/test/src/main/kotlin/io/element/android/libraries/mediaplayer/test/FakeMediaPlayer.kt +++ b/libraries/mediaplayer/test/src/main/kotlin/io/element/android/libraries/mediaplayer/test/FakeMediaPlayer.kt @@ -30,7 +30,6 @@ class FakeMediaPlayer( private val fakeTotalDurationMs: Long = 10_000L, private val fakePlayedDurationMs: Long = 1000L, ) : MediaPlayer { - private val _state = MutableStateFlow( MediaPlayer.State( isReady = false, diff --git a/libraries/mediaupload/api/src/main/kotlin/io/element/android/libraries/mediaupload/api/MediaPreProcessor.kt b/libraries/mediaupload/api/src/main/kotlin/io/element/android/libraries/mediaupload/api/MediaPreProcessor.kt index 9a48b50aca..db1197f81a 100644 --- a/libraries/mediaupload/api/src/main/kotlin/io/element/android/libraries/mediaupload/api/MediaPreProcessor.kt +++ b/libraries/mediaupload/api/src/main/kotlin/io/element/android/libraries/mediaupload/api/MediaPreProcessor.kt @@ -33,4 +33,3 @@ interface MediaPreProcessor { data class Failure(override val cause: Throwable?) : Exception(cause) } - diff --git a/libraries/mediaupload/api/src/main/kotlin/io/element/android/libraries/mediaupload/api/MediaSender.kt b/libraries/mediaupload/api/src/main/kotlin/io/element/android/libraries/mediaupload/api/MediaSender.kt index dfcef7fb33..89698a577e 100644 --- a/libraries/mediaupload/api/src/main/kotlin/io/element/android/libraries/mediaupload/api/MediaSender.kt +++ b/libraries/mediaupload/api/src/main/kotlin/io/element/android/libraries/mediaupload/api/MediaSender.kt @@ -30,7 +30,6 @@ class MediaSender @Inject constructor( private val preProcessor: MediaPreProcessor, private val room: MatrixRoom, ) { - private val ongoingUploadJobs = ConcurrentHashMap() val hasOngoingMediaUploads get() = ongoingUploadJobs.isNotEmpty() diff --git a/libraries/mediaupload/api/src/main/kotlin/io/element/android/libraries/mediaupload/api/MediaUploadInfo.kt b/libraries/mediaupload/api/src/main/kotlin/io/element/android/libraries/mediaupload/api/MediaUploadInfo.kt index 76e6fd7cb1..8fc4430af2 100644 --- a/libraries/mediaupload/api/src/main/kotlin/io/element/android/libraries/mediaupload/api/MediaUploadInfo.kt +++ b/libraries/mediaupload/api/src/main/kotlin/io/element/android/libraries/mediaupload/api/MediaUploadInfo.kt @@ -23,7 +23,6 @@ import io.element.android.libraries.matrix.api.media.VideoInfo import java.io.File sealed interface MediaUploadInfo { - val file: File data class Image(override val file: File, val imageInfo: ImageInfo, val thumbnailFile: File?) : MediaUploadInfo diff --git a/libraries/mediaupload/api/src/test/kotlin/io/element/android/libraries/mediaupload/api/MediaSenderTests.kt b/libraries/mediaupload/api/src/test/kotlin/io/element/android/libraries/mediaupload/api/MediaSenderTests.kt index 35aee8b2d5..f4e58530f8 100644 --- a/libraries/mediaupload/api/src/test/kotlin/io/element/android/libraries/mediaupload/api/MediaSenderTests.kt +++ b/libraries/mediaupload/api/src/test/kotlin/io/element/android/libraries/mediaupload/api/MediaSenderTests.kt @@ -33,7 +33,6 @@ import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) class MediaSenderTests { - @Test fun `given an attachment when sending it the preprocessor always runs`() = runTest { val preProcessor = FakeMediaPreProcessor() diff --git a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/AndroidMediaPreProcessor.kt b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/AndroidMediaPreProcessor.kt index 486364a7d7..884336c48e 100644 --- a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/AndroidMediaPreProcessor.kt +++ b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/AndroidMediaPreProcessor.kt @@ -124,7 +124,6 @@ class AndroidMediaPreProcessor @Inject constructor( } private suspend fun processImage(uri: Uri, mimeType: String, shouldBeCompressed: Boolean): MediaUploadInfo { - suspend fun processImageWithCompression(): MediaUploadInfo { // Read the orientation metadata from its own stream. Trying to reuse this stream for compression will fail. val orientation = contentResolver.openInputStream(uri).use { input -> @@ -272,4 +271,3 @@ private fun MediaMetadataRetriever.extractDuration(): Duration { val durationInMs = extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)?.toLong() ?: 0L return durationInMs.milliseconds } - diff --git a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/ThumbnailFactory.kt b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/ThumbnailFactory.kt index 1ee7b40bb3..bc0e6589a6 100644 --- a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/ThumbnailFactory.kt +++ b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/ThumbnailFactory.kt @@ -61,7 +61,6 @@ class ThumbnailFactory @Inject constructor( @ApplicationContext private val context: Context, private val sdkIntProvider: BuildVersionSdkIntProvider ) { - @SuppressLint("NewApi") suspend fun createImageThumbnail(file: File): ThumbnailResult? { return createThumbnail { cancellationSignal -> diff --git a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/VideoCompressor.kt b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/VideoCompressor.kt index 762dd04901..228c320f08 100644 --- a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/VideoCompressor.kt +++ b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/VideoCompressor.kt @@ -33,7 +33,6 @@ import javax.inject.Inject class VideoCompressor @Inject constructor( @ApplicationContext private val context: Context, ) { - fun compress(uri: Uri) = callbackFlow { val tmpFile = context.createTmpFile(extension = "mp4") val future = Transcoder.into(tmpFile.path) diff --git a/libraries/mediaupload/impl/src/test/kotlin/io/element/android/libraries/mediaupload/impl/AndroidMediaPreProcessorTest.kt b/libraries/mediaupload/impl/src/test/kotlin/io/element/android/libraries/mediaupload/impl/AndroidMediaPreProcessorTest.kt index 4086627561..3d0f9be181 100644 --- a/libraries/mediaupload/impl/src/test/kotlin/io/element/android/libraries/mediaupload/impl/AndroidMediaPreProcessorTest.kt +++ b/libraries/mediaupload/impl/src/test/kotlin/io/element/android/libraries/mediaupload/impl/AndroidMediaPreProcessorTest.kt @@ -230,7 +230,8 @@ class AndroidMediaPreProcessorTest { assertThat(info.thumbnailFile).isNotNull() assertThat(info.videoInfo).isEqualTo( VideoInfo( - duration = Duration.ZERO, // Not available with Robolectric? + // Not available with Robolectric? + duration = Duration.ZERO, height = 1_178, width = 1_818, mimetype = MimeTypes.Mp4, @@ -260,9 +261,12 @@ class AndroidMediaPreProcessorTest { assertThat(info.thumbnailFile).isNull() assertThat(info.videoInfo).isEqualTo( VideoInfo( - duration = Duration.ZERO, // Not available with Robolectric? - height = 0, // Not available with Robolectric? - width = 0, // Not available with Robolectric? + // Not available with Robolectric? + duration = Duration.ZERO, + // Not available with Robolectric? + height = 0, + // Not available with Robolectric? + width = 0, mimetype = MimeTypes.Mp4, size = 1_673_712, thumbnailInfo = null, @@ -288,7 +292,8 @@ class AndroidMediaPreProcessorTest { val info = result as MediaUploadInfo.Audio assertThat(info.audioInfo).isEqualTo( AudioInfo( - duration = Duration.ZERO, // Not available with Robolectric? + // Not available with Robolectric? + duration = Duration.ZERO, size = 52_079, mimetype = MimeTypes.Mp3, ) diff --git a/libraries/mediaupload/test/src/main/kotlin/io/element/android/libraries/mediaupload/test/FakeMediaPreProcessor.kt b/libraries/mediaupload/test/src/main/kotlin/io/element/android/libraries/mediaupload/test/FakeMediaPreProcessor.kt index 0c612c8d1c..e841bd7d93 100644 --- a/libraries/mediaupload/test/src/main/kotlin/io/element/android/libraries/mediaupload/test/FakeMediaPreProcessor.kt +++ b/libraries/mediaupload/test/src/main/kotlin/io/element/android/libraries/mediaupload/test/FakeMediaPreProcessor.kt @@ -27,7 +27,6 @@ import java.io.File import kotlin.time.Duration.Companion.seconds class FakeMediaPreProcessor : MediaPreProcessor { - var processCallCount = 0 private set diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/helper/fileExtensionAndSize.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/helper/FileExtensionAndSizeFormatter.kt similarity index 100% rename from libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/helper/fileExtensionAndSize.kt rename to libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/helper/FileExtensionAndSizeFormatter.kt diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaActions.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaActions.kt index 158c748a94..6743d34976 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaActions.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaActions.kt @@ -19,7 +19,6 @@ package io.element.android.libraries.mediaviewer.api.local import androidx.compose.runtime.Composable interface LocalMediaActions { - @Composable fun Configure() @@ -41,4 +40,3 @@ interface LocalMediaActions { */ suspend fun open(localMedia: LocalMedia): Result } - diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaFactory.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaFactory.kt index 64dfbd03d8..2235ff90bd 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaFactory.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaFactory.kt @@ -20,7 +20,6 @@ import android.net.Uri import io.element.android.libraries.matrix.api.media.MediaFile interface LocalMediaFactory { - /** * This method will create a [LocalMedia] with the given [MediaFile] and [MediaInfo]. */ diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaView.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaView.kt index 1e81f75e9f..af6b5f4251 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaView.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/LocalMediaView.kt @@ -56,9 +56,6 @@ import androidx.media3.common.util.UnstableApi import androidx.media3.ui.AspectRatioFrameLayout import androidx.media3.ui.PlayerView import io.element.android.compound.theme.ElementTheme -import io.element.android.libraries.mediaviewer.api.local.exoplayer.ExoPlayerWrapper -import io.element.android.libraries.mediaviewer.api.local.pdf.PdfViewer -import io.element.android.libraries.mediaviewer.api.local.pdf.rememberPdfViewerState import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.core.mimetype.MimeTypes import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeAudio @@ -70,6 +67,9 @@ import io.element.android.libraries.designsystem.utils.CommonDrawables import io.element.android.libraries.designsystem.utils.KeepScreenOn import io.element.android.libraries.designsystem.utils.OnLifecycleEvent import io.element.android.libraries.mediaviewer.api.helper.formatFileExtensionAndSize +import io.element.android.libraries.mediaviewer.api.local.exoplayer.ExoPlayerWrapper +import io.element.android.libraries.mediaviewer.api.local.pdf.PdfViewer +import io.element.android.libraries.mediaviewer.api.local.pdf.rememberPdfViewerState import io.element.android.libraries.ui.strings.CommonStrings import me.saket.telephoto.zoomable.ZoomSpec import me.saket.telephoto.zoomable.ZoomableState @@ -107,7 +107,7 @@ fun LocalMediaView( zoomableState = zoomableState, modifier = modifier ) - //TODO handle audio with exoplayer + // TODO handle audio with exoplayer else -> MediaFileView( localMediaViewState = localMediaViewState, uri = localMedia?.uri, diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/MediaInfo.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/MediaInfo.kt index 726c9dcf0b..1def7b4522 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/MediaInfo.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/MediaInfo.kt @@ -29,21 +29,36 @@ data class MediaInfo( ) : Parcelable fun anImageInfo(): MediaInfo = MediaInfo( - "an image file.jpg", MimeTypes.Jpeg, "4MB", "jpg" + "an image file.jpg", + MimeTypes.Jpeg, + "4MB", + "jpg" ) fun aVideoInfo(): MediaInfo = MediaInfo( - "a video file.mp4", MimeTypes.Mp4, "14MB", "mp4" + "a video file.mp4", + MimeTypes.Mp4, + "14MB", + "mp4" ) fun aPdfInfo(): MediaInfo = MediaInfo( - "a pdf file.pdf", MimeTypes.Pdf, "23MB", "pdf" + "a pdf file.pdf", + MimeTypes.Pdf, + "23MB", + "pdf" ) fun aFileInfo(): MediaInfo = MediaInfo( - "an apk file.apk", MimeTypes.Apk, "50MB", "apk" + "an apk file.apk", + MimeTypes.Apk, + "50MB", + "apk" ) fun anAudioInfo(): MediaInfo = MediaInfo( - "an audio file.mp3", MimeTypes.Mp3, "7MB", "mp3" + "an audio file.mp3", + MimeTypes.Mp3, + "7MB", + "mp3" ) diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/exoplayer/ExoPlayerWrapper.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/exoplayer/ExoPlayerWrapper.kt index 581a018c43..fc614dfe2e 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/exoplayer/ExoPlayerWrapper.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/exoplayer/ExoPlayerWrapper.kt @@ -27,7 +27,6 @@ import androidx.media3.exoplayer.ExoPlayer */ @UnstableApi class ExoPlayerWrapper(private val exoPlayer: ExoPlayer) : ExoPlayer by exoPlayer { - override fun isCommandAvailable(command: Int): Boolean { return availableCommands.contains(command) } diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/ParcelFileDescriptorFactory.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/ParcelFileDescriptorFactory.kt index 523e8b593c..29e76f2d34 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/ParcelFileDescriptorFactory.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/ParcelFileDescriptorFactory.kt @@ -22,7 +22,6 @@ import android.os.ParcelFileDescriptor import java.io.File class ParcelFileDescriptorFactory(private val context: Context) { - fun create(model: Any?) = runCatching { when (model) { is File -> ParcelFileDescriptor.open(model, ParcelFileDescriptor.MODE_READ_ONLY) diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfPage.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfPage.kt index 1da6d1a21c..076caff3a9 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfPage.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfPage.kt @@ -39,7 +39,6 @@ class PdfPage( private val pdfRenderer: PdfRenderer, private val coroutineScope: CoroutineScope, ) { - sealed interface State { data class Loading(val width: Int, val height: Int) : State data class Loaded(val bitmap: Bitmap) : State @@ -92,7 +91,9 @@ class PdfPage( private fun PdfRenderer.openPageRenderAndClose(index: Int, bitmapWidth: Int, bitmapHeight: Int): Bitmap { fun createBitmap(bitmapWidth: Int, bitmapHeight: Int): Bitmap { val bitmap = Bitmap.createBitmap( - bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888 + bitmapWidth, + bitmapHeight, + Bitmap.Config.ARGB_8888 ) val canvas = Canvas(bitmap) canvas.drawColor(Color.WHITE) @@ -106,6 +107,3 @@ class PdfPage( } } } - - - diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfRendererManager.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfRendererManager.kt index 56fe175647..e4e3c7a79c 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfRendererManager.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfRendererManager.kt @@ -32,7 +32,6 @@ class PdfRendererManager( private val width: Int, private val coroutineScope: CoroutineScope, ) { - private val mutex = Mutex() private var pdfRenderer: PdfRenderer? = null private val mutablePdfPages = MutableStateFlow>(emptyList()) diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfViewer.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfViewer.kt index 1bad0e75f5..0f00e3faa6 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfViewer.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfViewer.kt @@ -75,7 +75,6 @@ private fun PdfPagesView( modifier = modifier.fillMaxSize(), state = lazyListState, verticalArrangement = Arrangement.spacedBy(4.dp, Alignment.CenterVertically) - ) { items(pdfPages.size) { index -> val pdfPage = pdfPages[index] diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfViewerState.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfViewerState.kt index 8df8bfdecf..7e9f778e5d 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfViewerState.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/local/pdf/PdfViewerState.kt @@ -40,15 +40,14 @@ class PdfViewerState( val zoomableState: ZoomableState, val lazyListState: LazyListState, ) { - var isLoaded by mutableStateOf(false) private var pdfRendererManager by mutableStateOf(null) @Composable - fun getPages(): List{ + fun getPages(): List { return pdfRendererManager?.run { pdfPages.collectAsState().value - }?: emptyList() + } ?: emptyList() } fun openForWidth(maxWidth: Int) { diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerEvents.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerEvents.kt index b9f8b0aa4d..4d82a04105 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerEvents.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerEvents.kt @@ -17,9 +17,9 @@ package io.element.android.libraries.mediaviewer.api.viewer sealed interface MediaViewerEvents { - data object SaveOnDisk: MediaViewerEvents - data object Share: MediaViewerEvents - data object OpenWith: MediaViewerEvents + data object SaveOnDisk : MediaViewerEvents + data object Share : MediaViewerEvents + data object OpenWith : MediaViewerEvents data object RetryLoading : MediaViewerEvents data object ClearLoadingError : MediaViewerEvents } diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerNode.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerNode.kt index 3917d2eba4..09c8397f50 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerNode.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerNode.kt @@ -37,7 +37,6 @@ open class MediaViewerNode @AssistedInject constructor( @Assisted plugins: List, presenterFactory: MediaViewerPresenter.Factory, ) : Node(buildContext, plugins = plugins) { - data class Inputs( val mediaInfo: MediaInfo, val mediaSource: MediaSource, diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerPresenter.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerPresenter.kt index 574c6344f1..1160dab28d 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerPresenter.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerPresenter.kt @@ -51,7 +51,6 @@ class MediaViewerPresenter @AssistedInject constructor( private val localMediaActions: LocalMediaActions, private val snackbarDispatcher: SnackbarDispatcher, ) : Presenter { - @AssistedFactory interface Factory { fun create(inputs: MediaViewerNode.Inputs): MediaViewerPresenter @@ -132,7 +131,7 @@ class MediaViewerPresenter @AssistedInject constructor( val snackbarMessage = SnackbarMessage(mediaActionsError(it)) snackbarDispatcher.post(snackbarMessage) } - } else Unit + } } private fun CoroutineScope.share(localMedia: AsyncData) = launch { @@ -142,7 +141,7 @@ class MediaViewerPresenter @AssistedInject constructor( val snackbarMessage = SnackbarMessage(mediaActionsError(it)) snackbarDispatcher.post(snackbarMessage) } - } else Unit + } } private fun CoroutineScope.open(localMedia: AsyncData) = launch { @@ -152,7 +151,7 @@ class MediaViewerPresenter @AssistedInject constructor( val snackbarMessage = SnackbarMessage(mediaActionsError(it)) snackbarDispatcher.post(snackbarMessage) } - } else Unit + } } private fun mediaActionsError(throwable: Throwable): Int { @@ -163,6 +162,3 @@ class MediaViewerPresenter @AssistedInject constructor( } } } - - - diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerView.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerView.kt index 1fb557c126..2d5412cc25 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerView.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/viewer/MediaViewerView.kt @@ -75,7 +75,6 @@ fun MediaViewerView( onBackPressed: () -> Unit, modifier: Modifier = Modifier, ) { - fun onRetry() { state.eventSink(MediaViewerEvents.RetryLoading) } diff --git a/libraries/mediaviewer/api/src/test/kotlin/io/element/android/libraries/mediaviewer/MediaViewerPresenterTest.kt b/libraries/mediaviewer/api/src/test/kotlin/io/element/android/libraries/mediaviewer/MediaViewerPresenterTest.kt index c8589e2adb..c5b761411a 100644 --- a/libraries/mediaviewer/api/src/test/kotlin/io/element/android/libraries/mediaviewer/MediaViewerPresenterTest.kt +++ b/libraries/mediaviewer/api/src/test/kotlin/io/element/android/libraries/mediaviewer/MediaViewerPresenterTest.kt @@ -28,11 +28,11 @@ import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatch import io.element.android.libraries.matrix.test.media.FakeMediaLoader import io.element.android.libraries.matrix.test.media.aMediaSource import io.element.android.libraries.mediaviewer.api.local.aFileInfo -import io.element.android.libraries.mediaviewer.test.FakeLocalMediaActions -import io.element.android.libraries.mediaviewer.test.FakeLocalMediaFactory import io.element.android.libraries.mediaviewer.api.viewer.MediaViewerEvents import io.element.android.libraries.mediaviewer.api.viewer.MediaViewerNode import io.element.android.libraries.mediaviewer.api.viewer.MediaViewerPresenter +import io.element.android.libraries.mediaviewer.test.FakeLocalMediaActions +import io.element.android.libraries.mediaviewer.test.FakeLocalMediaFactory import io.element.android.tests.testutils.WarmUpRule import io.mockk.mockk import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -43,11 +43,9 @@ import org.junit.Test private val TESTED_MEDIA_INFO = aFileInfo() class MediaViewerPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() - private val mockMediaUri: Uri = mockk("localMediaUri") private val localMediaFactory = FakeLocalMediaFactory(mockMediaUri) @@ -136,7 +134,7 @@ class MediaViewerPresenterTest { assertThat(failureState.downloadedMedia).isInstanceOf(AsyncData.Failure::class.java) mediaLoader.shouldFail = false failureState.eventSink(MediaViewerEvents.RetryLoading) - //There is one recomposition because of the retry mechanism + // There is one recomposition because of the retry mechanism skipItems(1) val retryLoadingState = awaitItem() assertThat(retryLoadingState.downloadedMedia).isInstanceOf(AsyncData.Loading::class.java) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaActions.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaActions.kt index 35ebc0e022..4e147a935b 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaActions.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaActions.kt @@ -59,7 +59,6 @@ class AndroidLocalMediaActions @Inject constructor( private val coroutineDispatchers: CoroutineDispatchers, private val buildMeta: BuildMeta, ) : LocalMediaActions { - private var activityContext: Context? = null private var apkInstallLauncher: ManagedActivityResultLauncher? = null private var pendingMedia: LocalMedia? = null diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaFactory.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaFactory.kt index 1c026ce53b..9dc88c5deb 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaFactory.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaFactory.kt @@ -41,7 +41,6 @@ class AndroidLocalMediaFactory @Inject constructor( private val fileSizeFormatter: FileSizeFormatter, private val fileExtensionExtractor: FileExtensionExtractor, ) : LocalMediaFactory { - override fun createFromMediaFile(mediaFile: MediaFile, mediaInfo: MediaInfo): LocalMedia { val uri = mediaFile.toFile().toUri() return createFromUri( @@ -73,4 +72,3 @@ class AndroidLocalMediaFactory @Inject constructor( ) } } - diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaActionsTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaActionsTest.kt index 0e981d73af..8a0ba56609 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaActionsTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaActionsTest.kt @@ -36,7 +36,6 @@ import org.robolectric.RuntimeEnvironment @RunWith(RobolectricTestRunner::class) class AndroidLocalMediaActionsTest { - @Test fun `present - AndroidLocalMediaAction configure`() = runTest { val sut = createAndroidLocalMediaActions() diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaFactoryTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaFactoryTest.kt index c6209ae7c3..2563511ee2 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaFactoryTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaFactoryTest.kt @@ -31,7 +31,6 @@ import org.robolectric.RuntimeEnvironment @RunWith(RobolectricTestRunner::class) class AndroidLocalMediaFactoryTest { - @Test fun `test AndroidLocalMediaFactory`() { val sut = createAndroidLocalMediaFactory() diff --git a/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeLocalMediaActions.kt b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeLocalMediaActions.kt index 8c303de541..1409a46146 100644 --- a/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeLocalMediaActions.kt +++ b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeLocalMediaActions.kt @@ -22,12 +22,11 @@ import io.element.android.libraries.mediaviewer.api.local.LocalMediaActions import io.element.android.tests.testutils.simulateLongTask class FakeLocalMediaActions : LocalMediaActions { - var shouldFail = false @Composable override fun Configure() { - //NOOP + // NOOP } override suspend fun saveOnDisk(localMedia: LocalMedia): Result = simulateLongTask { diff --git a/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeLocalMediaFactory.kt b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeLocalMediaFactory.kt index 84f1d87613..0bb8a4b993 100644 --- a/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeLocalMediaFactory.kt +++ b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeLocalMediaFactory.kt @@ -22,15 +22,14 @@ import io.element.android.libraries.matrix.api.media.MediaFile import io.element.android.libraries.mediaviewer.api.local.LocalMedia import io.element.android.libraries.mediaviewer.api.local.LocalMediaFactory import io.element.android.libraries.mediaviewer.api.local.MediaInfo -import io.element.android.libraries.mediaviewer.test.viewer.aLocalMedia import io.element.android.libraries.mediaviewer.api.util.FileExtensionExtractor import io.element.android.libraries.mediaviewer.api.util.FileExtensionExtractorWithoutValidation +import io.element.android.libraries.mediaviewer.test.viewer.aLocalMedia class FakeLocalMediaFactory( private val localMediaUri: Uri, private val fileExtensionExtractor: FileExtensionExtractor = FileExtensionExtractorWithoutValidation() ) : LocalMediaFactory { - var fallbackMimeType: String = MimeTypes.OctetStream var fallbackName: String = "File name" var fallbackFileSize = "0B" diff --git a/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/viewer/media.kt b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/viewer/LocalMedia.kt similarity index 99% rename from libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/viewer/media.kt rename to libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/viewer/LocalMedia.kt index e19113c163..876e82000d 100644 --- a/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/viewer/media.kt +++ b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/viewer/LocalMedia.kt @@ -28,4 +28,3 @@ fun aLocalMedia( uri = uri, info = mediaInfo ) - diff --git a/libraries/network/src/main/kotlin/io/element/android/libraries/network/headers/HttpHeaders.kt b/libraries/network/src/main/kotlin/io/element/android/libraries/network/headers/HttpHeaders.kt index 315835d584..3d8ee20ee0 100644 --- a/libraries/network/src/main/kotlin/io/element/android/libraries/network/headers/HttpHeaders.kt +++ b/libraries/network/src/main/kotlin/io/element/android/libraries/network/headers/HttpHeaders.kt @@ -16,6 +16,7 @@ package io.element.android.libraries.network.headers +@Suppress("ktlint:standard:property-naming") internal object HttpHeaders { const val Authorization = "Authorization" const val UserAgent = "User-Agent" diff --git a/libraries/network/src/main/kotlin/io/element/android/libraries/network/interceptors/FormattedJsonHttpLogger.kt b/libraries/network/src/main/kotlin/io/element/android/libraries/network/interceptors/FormattedJsonHttpLogger.kt index d6c3144c5c..47048da5e9 100644 --- a/libraries/network/src/main/kotlin/io/element/android/libraries/network/interceptors/FormattedJsonHttpLogger.kt +++ b/libraries/network/src/main/kotlin/io/element/android/libraries/network/interceptors/FormattedJsonHttpLogger.kt @@ -23,9 +23,8 @@ import org.json.JSONObject import timber.log.Timber internal class FormattedJsonHttpLogger( - private val level: HttpLoggingInterceptor.Level + private val level: HttpLoggingInterceptor.Level ) : HttpLoggingInterceptor.Logger { - companion object { private const val INDENT_SPACE = 2 } @@ -68,8 +67,8 @@ internal class FormattedJsonHttpLogger( private fun logJson(formattedJson: String) { formattedJson - .lines() - .dropLastWhile { it.isEmpty() } - .forEach { Timber.v(it) } + .lines() + .dropLastWhile { it.isEmpty() } + .forEach { Timber.v(it) } } } diff --git a/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsPresenter.kt b/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsPresenter.kt index c4ab065ca0..3a8dd7e6ad 100644 --- a/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsPresenter.kt +++ b/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsPresenter.kt @@ -19,7 +19,6 @@ package io.element.android.libraries.permissions.api import io.element.android.libraries.architecture.Presenter interface PermissionsPresenter : Presenter { - interface Factory { fun create(permission: String): PermissionsPresenter } diff --git a/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsView.kt b/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsView.kt index 9e2413fff9..38b40e6403 100644 --- a/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsView.kt +++ b/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsView.kt @@ -22,8 +22,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.ui.strings.CommonStrings @Composable diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionStateProvider.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionStateProvider.kt index 86cc646982..c05df3de46 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionStateProvider.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionStateProvider.kt @@ -31,7 +31,7 @@ import javax.inject.Inject class DefaultPermissionStateProvider @Inject constructor( @ApplicationContext private val context: Context, private val permissionsStore: PermissionsStore, -): PermissionStateProvider { +) : PermissionStateProvider { override fun isPermissionGranted(permission: String): Boolean { return context.checkSelfPermission(permission) == android.content.pm.PackageManager.PERMISSION_GRANTED } diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt index 8fccfcc09d..45e5785ade 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt @@ -51,7 +51,6 @@ class DefaultPermissionsPresenter @AssistedInject constructor( private val composablePermissionStateProvider: ComposablePermissionStateProvider, private val permissionActions: PermissionActions, ) : PermissionsPresenter { - @AssistedFactory @ContributesBinding(AppScope::class) interface Factory : PermissionsPresenter.Factory { diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/FakePermissionStateProvider.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/FakePermissionStateProvider.kt index 364f8072a1..9d7d4d4e65 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/FakePermissionStateProvider.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/FakePermissionStateProvider.kt @@ -24,7 +24,7 @@ class FakePermissionStateProvider( private var permissionGranted: Boolean = true, permissionDenied: Boolean = false, permissionAsked: Boolean = false, -): PermissionStateProvider { +) : PermissionStateProvider { private val permissionDeniedFlow = MutableStateFlow(permissionDenied) private val permissionAskedFlow = MutableStateFlow(permissionAsked) diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/AndroidPermissionActions.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/AndroidPermissionActions.kt index a694c079e3..6370e839a3 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/AndroidPermissionActions.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/AndroidPermissionActions.kt @@ -27,7 +27,6 @@ import javax.inject.Inject class AndroidPermissionActions @Inject constructor( @ApplicationContext private val context: Context ) : PermissionActions { - override fun openSettings() { context.openAppSettingsPage() } diff --git a/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenterTest.kt b/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenterTest.kt index ca96833d69..76034e2b1e 100644 --- a/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenterTest.kt +++ b/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenterTest.kt @@ -35,7 +35,6 @@ import org.junit.Test const val A_PERMISSION = "A_PERMISSION" class DefaultPermissionsPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/FakeComposablePermissionStateProvider.kt b/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/FakeComposablePermissionStateProvider.kt index 948cc603c3..a4c423271f 100644 --- a/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/FakeComposablePermissionStateProvider.kt +++ b/libraries/permissions/impl/src/test/kotlin/io/element/android/libraries/permissions/impl/FakeComposablePermissionStateProvider.kt @@ -50,7 +50,6 @@ class FakePermissionState( override val permission: String, initialStatus: PermissionStatus, ) : PermissionState { - override var status: PermissionStatus by mutableStateOf(initialStatus) var launchPermissionRequestCalled = false diff --git a/libraries/permissions/noop/src/main/kotlin/io/element/android/libraries/permissions/noop/NoopPermissionsPresenter.kt b/libraries/permissions/noop/src/main/kotlin/io/element/android/libraries/permissions/noop/NoopPermissionsPresenter.kt index 653fe49268..4bbc3a6ee0 100644 --- a/libraries/permissions/noop/src/main/kotlin/io/element/android/libraries/permissions/noop/NoopPermissionsPresenter.kt +++ b/libraries/permissions/noop/src/main/kotlin/io/element/android/libraries/permissions/noop/NoopPermissionsPresenter.kt @@ -21,7 +21,6 @@ import io.element.android.libraries.permissions.api.PermissionsPresenter import io.element.android.libraries.permissions.api.PermissionsState class NoopPermissionsPresenter : PermissionsPresenter { - @Composable override fun present(): PermissionsState { return PermissionsState( diff --git a/libraries/permissions/noop/src/test/kotlin/io/element/android/libraries/permissions/noop/NoopPermissionsPresenterTest.kt b/libraries/permissions/noop/src/test/kotlin/io/element/android/libraries/permissions/noop/NoopPermissionsPresenterTest.kt index 828610a6fb..454b7b1dc3 100644 --- a/libraries/permissions/noop/src/test/kotlin/io/element/android/libraries/permissions/noop/NoopPermissionsPresenterTest.kt +++ b/libraries/permissions/noop/src/test/kotlin/io/element/android/libraries/permissions/noop/NoopPermissionsPresenterTest.kt @@ -26,7 +26,6 @@ import org.junit.Rule import org.junit.Test class NoopPermissionsPresenterTest { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionsPresenter.kt b/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionsPresenter.kt index 871f562489..e773ee89f2 100644 --- a/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionsPresenter.kt +++ b/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionsPresenter.kt @@ -26,7 +26,6 @@ import io.element.android.libraries.permissions.api.aPermissionsState class FakePermissionsPresenter( private val initialState: PermissionsState = aPermissionsState(showDialog = false), ) : PermissionsPresenter { - private fun eventSink(events: PermissionsEvents) { when (events) { PermissionsEvents.RequestPermissions -> state.value = state.value.copy(showDialog = true, permissionAlreadyAsked = true) diff --git a/libraries/preferences/test/src/main/kotlin/io/element/android/libraries/featureflag/test/InMemoryPreferencesStore.kt b/libraries/preferences/test/src/main/kotlin/io/element/android/libraries/featureflag/test/InMemoryPreferencesStore.kt index c4a26215c2..c143b3ff6c 100644 --- a/libraries/preferences/test/src/main/kotlin/io/element/android/libraries/featureflag/test/InMemoryPreferencesStore.kt +++ b/libraries/preferences/test/src/main/kotlin/io/element/android/libraries/featureflag/test/InMemoryPreferencesStore.kt @@ -26,41 +26,41 @@ class InMemoryPreferencesStore( customElementCallBaseUrl: String? = null, theme: String? = null, ) : PreferencesStore { - private var _isRichTextEditorEnabled = MutableStateFlow(isRichTextEditorEnabled) - private var _isDeveloperModeEnabled = MutableStateFlow(isDeveloperModeEnabled) - private var _customElementCallBaseUrl = MutableStateFlow(customElementCallBaseUrl) - private var _theme = MutableStateFlow(theme) + private val isRichTextEditorEnabled = MutableStateFlow(isRichTextEditorEnabled) + private val isDeveloperModeEnabled = MutableStateFlow(isDeveloperModeEnabled) + private val customElementCallBaseUrl = MutableStateFlow(customElementCallBaseUrl) + private val theme = MutableStateFlow(theme) override suspend fun setRichTextEditorEnabled(enabled: Boolean) { - _isRichTextEditorEnabled.value = enabled + isRichTextEditorEnabled.value = enabled } override fun isRichTextEditorEnabledFlow(): Flow { - return _isRichTextEditorEnabled + return isRichTextEditorEnabled } override suspend fun setDeveloperModeEnabled(enabled: Boolean) { - _isDeveloperModeEnabled.value = enabled + isDeveloperModeEnabled.value = enabled } override fun isDeveloperModeEnabledFlow(): Flow { - return _isDeveloperModeEnabled + return isDeveloperModeEnabled } override suspend fun setCustomElementCallBaseUrl(string: String?) { - _customElementCallBaseUrl.tryEmit(string) + customElementCallBaseUrl.tryEmit(string) } override fun getCustomElementCallBaseUrlFlow(): Flow { - return _customElementCallBaseUrl + return customElementCallBaseUrl } override suspend fun setTheme(theme: String) { - _theme.value = theme + this.theme.value = theme } override fun getThemeFlow(): Flow { - return _theme + return theme } override suspend fun reset() { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/PushersManager.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/PushersManager.kt index d2650f853d..d4424da492 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/PushersManager.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/PushersManager.kt @@ -49,9 +49,11 @@ class PushersManager @Inject constructor( suspend fun testPush() { pushGatewayNotifyRequest.execute( PushGatewayNotifyRequest.Params( - url = "TODO", // unifiedPushHelper.getPushGateway() ?: return, - appId = PushConfig.pusher_app_id, - pushKey = "TODO", // unifiedPushHelper.getEndpointOrToken().orEmpty(), + // unifiedPushHelper.getPushGateway() ?: return + url = "TODO", + appId = PushConfig.PUSHER_APP_ID, + // unifiedPushHelper.getEndpointOrToken().orEmpty() + pushKey = "TODO", eventId = TEST_EVENT_ID ) ) @@ -85,11 +87,14 @@ class PushersManager @Inject constructor( ): SetHttpPusherData = SetHttpPusherData( pushKey = pushKey, - appId = PushConfig.pusher_app_id, - profileTag = DEFAULT_PUSHER_FILE_TAG + "_" /* TODO + abs(activeSessionHolder.getActiveSession().myUserId.hashCode())*/, - lang = "en", // TODO localeProvider.current().language, + appId = PushConfig.PUSHER_APP_ID, + // TODO + abs(activeSessionHolder.getActiveSession().myUserId.hashCode()) + profileTag = DEFAULT_PUSHER_FILE_TAG + "_", + // TODO localeProvider.current().language + lang = "en", appDisplayName = buildMeta.applicationName, - deviceDisplayName = "MyDevice", // TODO getDeviceInfoUseCase.execute().displayName().orEmpty(), + // TODO getDeviceInfoUseCase.execute().displayName().orEmpty() + deviceDisplayName = "MyDevice", url = gateway, defaultPayload = createDefaultPayload(pushClientSecret.getSecretForUser(userId)) ) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/FilteredEventDetector.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/FilteredEventDetector.kt index 2d4d27472b..3219427b8a 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/FilteredEventDetector.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/FilteredEventDetector.kt @@ -20,9 +20,8 @@ import io.element.android.libraries.push.impl.notifications.model.NotifiableEven import javax.inject.Inject class FilteredEventDetector @Inject constructor( - //private val activeSessionDataSource: ActiveSessionDataSource + // private val activeSessionDataSource: ActiveSessionDataSource ) { - /** * Returns true if the given event should be ignored. * Used to skip notifications if a non expected message is received. @@ -41,10 +40,10 @@ class FilteredEventDetector @Inject constructor( return false } + /* /** * Whether the timeline event should be ignored. */ - /* private fun TimelineEvent.shouldBeIgnored(): Boolean { if (root.isVoiceMessage()) { val audioEvent = root.asMessageAudioEvent() diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventProcessor.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventProcessor.kt index 7f4c04da7b..4da6dbdd59 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventProcessor.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventProcessor.kt @@ -36,7 +36,6 @@ class NotifiableEventProcessor @Inject constructor( private val outdatedDetector: OutdatedEventDetector, private val appNavigationStateService: AppNavigationStateService, ) { - fun process( queuedEvents: List, renderedEvents: ProcessedEvents, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventResolver.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventResolver.kt index f2b763bda9..ebf8ac6a89 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventResolver.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventResolver.kt @@ -69,7 +69,6 @@ class NotifiableEventResolver @Inject constructor( private val notificationMediaRepoFactory: NotificationMediaRepo.Factory, @ApplicationContext private val context: Context, ) { - suspend fun resolveEvent(sessionId: SessionId, roomId: RoomId, eventId: EventId): NotifiableEvent? { // Restore session val client = matrixClientProvider.getOrRestore(sessionId).getOrNull() ?: return null @@ -129,8 +128,10 @@ class NotifiableEventResolver @Inject constructor( isRedacted = false, isUpdated = false, description = descriptionFromRoomMembershipInvite(isDirect), - type = null, // TODO check if type is needed anymore - title = null, // TODO check if title is needed anymore + // TODO check if type is needed anymore + type = null, + // TODO check if title is needed anymore + title = null, ) } else { Timber.tag(loggerTag.value).d("Ignoring notification state event for membership ${content.membershipState}") diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationAction.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationAction.kt index b3f0b1e0f2..4b04c7dc5d 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationAction.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationAction.kt @@ -17,9 +17,9 @@ package io.element.android.libraries.push.impl.notifications data class NotificationAction( - val shouldNotify: Boolean, - val highlight: Boolean, - val soundName: String? + val shouldNotify: Boolean, + val highlight: Boolean, + val soundName: String? ) /* diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBitmapLoader.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBitmapLoader.kt index 4c1e3043ad..97232320c2 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBitmapLoader.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBitmapLoader.kt @@ -35,7 +35,6 @@ class NotificationBitmapLoader @Inject constructor( @ApplicationContext private val context: Context, private val sdkIntProvider: BuildVersionSdkIntProvider, ) { - /** * Get icon of a room. * @param path mxc url diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiver.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiver.kt index 0fdef871a1..360357af54 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiver.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiver.kt @@ -33,7 +33,6 @@ private val loggerTag = LoggerTag("NotificationBroadcastReceiver", LoggerTag.Not * Receives actions broadcast by notification (on click, on dismiss, inline replies, etc.). */ class NotificationBroadcastReceiver : BroadcastReceiver() { - @Inject lateinit var defaultNotificationDrawerManager: DefaultNotificationDrawerManager @Inject lateinit var actionIds: NotificationActionIds @@ -223,12 +222,9 @@ class NotificationBroadcastReceiver : BroadcastReceiver() { VectorApp.getInstance().notificationDrawerManager.refreshNotificationDrawer(null) } }) - */ - } - */ + } - /* private fun getReplyMessage(intent: Intent?): String? { if (intent != null) { val remoteInput = RemoteInput.getResultsFromIntent(intent) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationEventQueue.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationEventQueue.kt index bb76de47d2..c78244356e 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationEventQueue.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationEventQueue.kt @@ -34,11 +34,10 @@ data class NotificationEventQueue( * An in memory FIFO cache of the seen events. * Acts as a notification debouncer to stop already dismissed push notifications from * displaying again when the /sync response is delayed. + * TODO Should be per session, so the key must be Pair. */ - // TODO Should be per session, so the key must be Pair. private val seenEventIds: CircularCache ) { - fun markRedacted(eventIds: List) { eventIds.forEach { redactedId -> queue.replace(redactedId) { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationFactory.kt index 4abdc03123..ef3623f302 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationFactory.kt @@ -34,7 +34,6 @@ class NotificationFactory @Inject constructor( private val roomGroupMessageCreator: RoomGroupMessageCreator, private val summaryGroupMessageCreator: SummaryGroupMessageCreator ) { - suspend fun Map.toNotifications( currentUser: MatrixUser, imageLoader: ImageLoader, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationMediaRepo.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationMediaRepo.kt index 505a4f4a3c..6e17d7ba55 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationMediaRepo.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationMediaRepo.kt @@ -35,7 +35,6 @@ import java.io.File * Whenever a given mxc is found in the cache, it is returned immediately. */ interface NotificationMediaRepo { - /** * Factory for [NotificationMediaRepo]. */ @@ -72,7 +71,6 @@ class DefaultNotificationMediaRepo @AssistedInject constructor( private val mxcTools: MxcTools, @Assisted private val client: MatrixClient, ) : NotificationMediaRepo { - @ContributesBinding(AppScope::class) @AssistedFactory fun interface Factory : NotificationMediaRepo.Factory { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt index d05f3a1d03..2c826abf10 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt @@ -35,7 +35,6 @@ class NotificationRenderer @Inject constructor( private val notificationDisplayer: NotificationDisplayer, private val notificationFactory: NotificationFactory, ) { - suspend fun render( currentUser: MatrixUser, useCompleteNotificationFormat: Boolean, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationState.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationState.kt index 0d8731548d..fb19bd76fd 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationState.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationState.kt @@ -29,7 +29,6 @@ class NotificationState( * Events are unique by their properties, we should be careful not to insert multiple events with the same event-id. */ private val queuedEvents: NotificationEventQueue, - /** * The last known rendered notifiable events. * We keep track of them in order to know which events have been removed from the eventList @@ -37,7 +36,6 @@ class NotificationState( */ private val renderedEvents: MutableList>, ) { - fun updateQueuedEvents( action: (NotificationEventQueue, List>) -> T ): T { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/OutdatedEventDetector.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/OutdatedEventDetector.kt index 27713399fc..52e61a7ec6 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/OutdatedEventDetector.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/OutdatedEventDetector.kt @@ -20,9 +20,8 @@ import io.element.android.libraries.push.impl.notifications.model.NotifiableEven import javax.inject.Inject class OutdatedEventDetector @Inject constructor( - /// private val activeSessionDataSource: ActiveSessionDataSource + // / private val activeSessionDataSource: ActiveSessionDataSource ) { - /** * Returns true if the given event is outdated. * Used to clean up notifications if a displayed message has been read on an diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt index 015b32c1d0..d4bd8e7155 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt @@ -38,7 +38,6 @@ class RoomGroupMessageCreator @Inject constructor( private val stringProvider: StringProvider, private val notificationCreator: NotificationCreator ) { - suspend fun createRoomMessage( currentUser: MatrixUser, events: List, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt index f46df7d3a5..18aadb5de9 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt @@ -43,7 +43,6 @@ class SummaryGroupMessageCreator @Inject constructor( private val stringProvider: StringProvider, private val notificationCreator: NotificationCreator, ) { - fun createSummaryNotification( currentUser: MatrixUser, roomNotifications: List, @@ -73,7 +72,7 @@ class SummaryGroupMessageCreator @Inject constructor( val nbEvents = roomNotifications.size + simpleNotifications.size val sumTitle = stringProvider.getQuantityString(R.plurals.notification_compat_summary_title, nbEvents, nbEvents) summaryInboxStyle.setBigContentTitle(sumTitle.annotateForDebug(43)) - //.setSummaryText(stringProvider.getQuantityString(R.plurals.notification_unread_notified_messages, nbEvents, nbEvents).annotateForDebug(44)) + // .setSummaryText(stringProvider.getQuantityString(R.plurals.notification_unread_notified_messages, nbEvents, nbEvents).annotateForDebug(44)) // Use account name now, for multi-session .setSummaryText(currentUser.userId.value.annotateForDebug(44)) return if (useCompleteNotificationFormat) { @@ -119,7 +118,8 @@ class SummaryGroupMessageCreator @Inject constructor( // Invitation and message val messageStr = stringProvider.getQuantityString( R.plurals.notification_new_messages_for_room, - messageNotificationCount, messageNotificationCount + messageNotificationCount, + messageNotificationCount ) if (roomCount > 1) { // In several rooms diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/TestNotificationReceiver.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/TestNotificationReceiver.kt index ec2cd227ca..152ed0a03e 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/TestNotificationReceiver.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/TestNotificationReceiver.kt @@ -21,7 +21,6 @@ import android.content.Context import android.content.Intent class TestNotificationReceiver : BroadcastReceiver() { - override fun onReceive(context: Context, intent: Intent) { // TODO The test notification has been clicked, notify the ui } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannels.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannels.kt index 74020f9323..c66e530837 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannels.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannels.kt @@ -91,7 +91,8 @@ class NotificationChannels @Inject constructor( enableVibration(true) enableLights(true) lightColor = accentColor - }) + } + ) /** * Low notification importance: shows everywhere, but is not intrusive. @@ -107,7 +108,8 @@ class NotificationChannels @Inject constructor( setSound(null, null) enableLights(true) lightColor = accentColor - }) + } + ) notificationManager.createNotificationChannel( NotificationChannel( @@ -119,7 +121,8 @@ class NotificationChannels @Inject constructor( description = stringProvider.getString(R.string.notification_channel_listening_for_events) setSound(null, null) setShowBadge(false) - }) + } + ) notificationManager.createNotificationChannel( NotificationChannel( @@ -132,7 +135,8 @@ class NotificationChannels @Inject constructor( setSound(null, null) enableLights(true) lightColor = accentColor - }) + } + ) } private fun getChannel(channelId: String): NotificationChannel? { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt index 7e208f414a..2dc724fb3d 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt @@ -38,7 +38,7 @@ class MarkAsReadActionFactory @Inject constructor( private val clock: SystemClock, ) { fun create(roomInfo: RoomEventGroupInfo): NotificationCompat.Action? { - if (!NotificationConfig.supportMarkAsReadAction) return null + if (!NotificationConfig.SUPPORT_MARK_AS_READ_ACTION) return null val sessionId = roomInfo.sessionId.value val roomId = roomInfo.roomId.value val intent = Intent(context, NotificationBroadcastReceiver::class.java) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt index fd89ce455f..53af2c71d5 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt @@ -43,7 +43,7 @@ class QuickReplyActionFactory @Inject constructor( private val clock: SystemClock, ) { fun create(roomInfo: RoomEventGroupInfo, threadId: ThreadId?): NotificationCompat.Action? { - if (!NotificationConfig.supportQuickReplyAction) return null + if (!NotificationConfig.SUPPORT_QUICK_REPLY_ACTION) return null val sessionId = roomInfo.sessionId val roomId = roomInfo.roomId return buildQuickReplyIntent(sessionId, roomId, threadId)?.let { replyPendingIntent -> diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/model/NotifiableMessageEvent.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/model/NotifiableMessageEvent.kt index 4b30bbe86d..cd972e31b1 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/model/NotifiableMessageEvent.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/model/NotifiableMessageEvent.kt @@ -53,7 +53,6 @@ data class NotifiableMessageEvent( override val isRedacted: Boolean = false, override val isUpdated: Boolean = false ) : NotifiableEvent { - val type: String = EventType.MESSAGE override val description: String = body ?: "" val title: String = senderName ?: "" @@ -71,9 +70,9 @@ fun NotifiableEvent.shouldIgnoreEventInRoom(appNavigationState: AppNavigationSta val currentSessionId = appNavigationState.navigationState.currentSessionId() ?: return false return when (val currentRoomId = appNavigationState.navigationState.currentRoomId()) { null -> false - else -> appNavigationState.isInForeground - && sessionId == currentSessionId - && roomId == currentRoomId - && (this as? NotifiableMessageEvent)?.threadId == appNavigationState.navigationState.currentThreadId() + else -> appNavigationState.isInForeground && + sessionId == currentSessionId && + roomId == currentRoomId && + (this as? NotifiableMessageEvent)?.threadId == appNavigationState.navigationState.currentThreadId() } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/permission/NotificationPermissionManager.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/permission/NotificationPermissionManager.kt index e1fd17332e..7496b3a16b 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/permission/NotificationPermissionManager.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/permission/NotificationPermissionManager.kt @@ -32,7 +32,6 @@ class NotificationPermissionManager @Inject constructor( private val sdkIntProvider: BuildVersionSdkIntProvider, @ApplicationContext private val context: Context, ) { - @RequiresApi(Build.VERSION_CODES.TIRAMISU) fun isPermissionGranted(): Boolean { return ContextCompat.checkSelfPermission( @@ -57,7 +56,7 @@ class NotificationPermissionManager @Inject constructor( if (showRationale) R.string.permissions_rationale_msg_notification else 0 ) } - */ + */ fun eventuallyRevokePermission( activity: Activity, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt index cf5b13ce9b..a930db2708 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt @@ -52,7 +52,6 @@ class DefaultPushHandler @Inject constructor( private val buildMeta: BuildMeta, private val matrixAuthenticationService: MatrixAuthenticationService, ) : PushHandler { - private val coroutineScope = CoroutineScope(SupervisorJob()) // UI handler diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayAPI.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayAPI.kt index 02bd7850e9..d8de5429ef 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayAPI.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayAPI.kt @@ -15,7 +15,6 @@ */ package io.element.android.libraries.push.impl.pushgateway - import retrofit2.http.Body import retrofit2.http.POST diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotification.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotification.kt index b7649f6800..9e52d94049 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotification.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotification.kt @@ -23,7 +23,6 @@ import kotlinx.serialization.Serializable internal data class PushGatewayNotification( @SerialName("event_id") val eventId: String, - /** * Required. This is an array of devices that the notification should be sent to. */ diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventProcessorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventProcessorTest.kt index 28b001ca28..02da10a351 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventProcessorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventProcessorTest.kt @@ -30,8 +30,8 @@ import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiable import io.element.android.libraries.push.impl.notifications.fixtures.aSimpleNotifiableEvent import io.element.android.libraries.push.impl.notifications.fixtures.anInviteNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent -import io.element.android.services.appnavstate.api.NavigationState import io.element.android.services.appnavstate.api.AppNavigationState +import io.element.android.services.appnavstate.api.NavigationState import io.element.android.services.appnavstate.test.FakeAppNavigationStateService import io.element.android.services.appnavstate.test.aNavigationState import kotlinx.coroutines.flow.MutableStateFlow @@ -42,7 +42,6 @@ private val VIEWING_A_ROOM = aNavigationState(A_SESSION_ID, A_SPACE_ID, A_ROOM_I private val VIEWING_A_THREAD = aNavigationState(A_SESSION_ID, A_SPACE_ID, A_ROOM_ID, A_THREAD_ID) class NotifiableEventProcessorTest { - private val outdatedDetector = FakeOutdatedEventDetector() @Test diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventResolverTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventResolverTest.kt index a28bee695a..d824a193d2 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventResolverTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventResolverTest.kt @@ -59,7 +59,6 @@ import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) class NotifiableEventResolverTest { - @Test fun `resolve event no session`() = runTest { val sut = createNotifiableEventResolver(notificationService = null) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationEventQueueTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationEventQueueTest.kt index f9b63eb9dc..7cc2687207 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationEventQueueTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationEventQueueTest.kt @@ -28,7 +28,6 @@ import io.element.android.libraries.push.impl.notifications.model.NotifiableEven import org.junit.Test class NotificationEventQueueTest { - private val seenIdsCache = CircularCache.create(5) @Test diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationFactoryTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationFactoryTest.kt index ca41fcc15a..50ee91f448 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationFactoryTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationFactoryTest.kt @@ -41,7 +41,6 @@ private val A_MESSAGE_EVENT = aNotifiableMessageEvent(eventId = AN_EVENT_ID, roo @RunWith(RobolectricTestRunner::class) class NotificationFactoryTest { - private val androidNotificationFactory = FakeAndroidNotificationFactory() private val roomGroupMessageCreator = FakeRoomGroupMessageCreator() private val summaryGroupMessageCreator = FakeSummaryGroupMessageCreator() @@ -130,7 +129,9 @@ class NotificationFactoryTest { fun `given room with message when mapping to notification then delegates to room group message creator`() = testWith(notificationFactory) { val events = listOf(A_MESSAGE_EVENT) val expectedNotification = roomGroupMessageCreator.givenCreatesRoomMessageFor( - MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), events, A_ROOM_ID + MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), + events, + A_ROOM_ID ) val roomWithMessage = mapOf(A_ROOM_ID to listOf(ProcessedEvent(ProcessedEvent.Type.KEEP, A_MESSAGE_EVENT))) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt index 18f2266b87..4780ae3914 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt @@ -41,13 +41,16 @@ private val A_SUMMARY_NOTIFICATION = SummaryNotification.Update(mockk()) private val A_REMOVE_SUMMARY_NOTIFICATION = SummaryNotification.Removed private val A_NOTIFICATION = mockk() private val MESSAGE_META = RoomNotification.Message.Meta( - summaryLine = "ignored", messageCount = 1, latestTimestamp = -1, roomId = A_ROOM_ID, shouldBing = false + summaryLine = "ignored", + messageCount = 1, + latestTimestamp = -1, + roomId = A_ROOM_ID, + shouldBing = false ) private val ONE_SHOT_META = OneShotNotification.Append.Meta(key = "ignored", summaryLine = "ignored", isNoisy = false, timestamp = -1) @RunWith(RobolectricTestRunner::class) class NotificationRendererTest { - private val notificationDisplayer = FakeNotificationDisplayer() private val notificationFactory = FakeNotificationFactory() private val notificationIdProvider = NotificationIdProvider() diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt index 946b0ab0db..a41a4aadc2 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt @@ -25,7 +25,6 @@ import io.mockk.coEvery import io.mockk.mockk class FakeRoomGroupMessageCreator { - val instance = mockk() fun givenCreatesRoomMessageFor( diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeSummaryGroupMessageCreator.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeSummaryGroupMessageCreator.kt index fc7b0553eb..546cb1e054 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeSummaryGroupMessageCreator.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeSummaryGroupMessageCreator.kt @@ -20,6 +20,5 @@ import io.element.android.libraries.push.impl.notifications.SummaryGroupMessageC import io.mockk.mockk class FakeSummaryGroupMessageCreator { - val instance = mockk() } diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseConfig.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseConfig.kt index 62081a9e56..581b8c6dea 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseConfig.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseConfig.kt @@ -21,8 +21,8 @@ object FirebaseConfig { * It is the push gateway for firebase. * Note: pusher_http_url should have path '/_matrix/push/v1/notify' --> */ - const val pusher_http_url: String = "https://matrix.org/_matrix/push/v1/notify" + const val PUSHER_HTTP_URL: String = "https://matrix.org/_matrix/push/v1/notify" - const val index = 0 - const val name = "Firebase" + const val INDEX = 0 + const val NAME = "Firebase" } diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseNewTokenHandler.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseNewTokenHandler.kt index 3e077841a4..313b9ab706 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseNewTokenHandler.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseNewTokenHandler.kt @@ -45,9 +45,9 @@ class FirebaseNewTokenHandler @Inject constructor( .map { SessionId(it) } .forEach { userId -> val userDataStore = userPushStoreFactory.create(userId) - if (userDataStore.getPushProviderName() == FirebaseConfig.name) { + if (userDataStore.getPushProviderName() == FirebaseConfig.NAME) { matrixAuthenticationService.restoreSession(userId).getOrNull()?.use { client -> - pusherSubscriber.registerPusher(client, firebaseToken, FirebaseConfig.pusher_http_url) + pusherSubscriber.registerPusher(client, firebaseToken, FirebaseConfig.PUSHER_HTTP_URL) } } else { Timber.tag(loggerTag.value).d("This session is not using Firebase pusher") diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProvider.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProvider.kt index 63611a0ed9..1fad74e1be 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProvider.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProvider.kt @@ -34,8 +34,8 @@ class FirebasePushProvider @Inject constructor( private val firebaseTroubleshooter: FirebaseTroubleshooter, private val pusherSubscriber: PusherSubscriber, ) : PushProvider { - override val index = FirebaseConfig.index - override val name = FirebaseConfig.name + override val index = FirebaseConfig.INDEX + override val name = FirebaseConfig.NAME override fun getDistributors(): List { return listOf(Distributor("Firebase", "Firebase")) @@ -45,14 +45,14 @@ class FirebasePushProvider @Inject constructor( val pushKey = firebaseStore.getFcmToken() ?: return Unit.also { Timber.tag(loggerTag.value).w("Unable to register pusher, Firebase token is not known.") } - pusherSubscriber.registerPusher(matrixClient, pushKey, FirebaseConfig.pusher_http_url) + pusherSubscriber.registerPusher(matrixClient, pushKey, FirebaseConfig.PUSHER_HTTP_URL) } override suspend fun unregister(matrixClient: MatrixClient) { val pushKey = firebaseStore.getFcmToken() ?: return Unit.also { Timber.tag(loggerTag.value).w("Unable to unregister pusher, Firebase token is not known.") } - pusherSubscriber.unregisterPusher(matrixClient, pushKey, FirebaseConfig.pusher_http_url) + pusherSubscriber.unregisterPusher(matrixClient, pushKey, FirebaseConfig.PUSHER_HTTP_URL) } override suspend fun troubleshoot(): Result { diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt index 4877eff555..8dd71118b3 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt @@ -29,7 +29,6 @@ class RegisterUnifiedPushUseCase @Inject constructor( private val pusherSubscriber: PusherSubscriber, private val unifiedPushStore: UnifiedPushStore, ) { - sealed interface RegisterUnifiedPushResult { data object Success : RegisterUnifiedPushResult data object NeedToAskUserForDistributor : RegisterUnifiedPushResult diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushConfig.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushConfig.kt index aad00c5bd7..07c57496db 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushConfig.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushConfig.kt @@ -21,8 +21,8 @@ object UnifiedPushConfig { * It is the push gateway for UnifiedPush. * Note: default_push_gateway_http_url should have path '/_matrix/push/v1/notify' */ - const val default_push_gateway_http_url: String = "https://matrix.gateway.unifiedpush.org/_matrix/push/v1/notify" + const val DEFAULT_PUSH_GATEWAY_HTTP_URL: String = "https://matrix.gateway.unifiedpush.org/_matrix/push/v1/notify" - const val index = 1 - const val name = "UnifiedPush" + const val INDEX = 1 + const val NAME = "UnifiedPush" } diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt index 3b2abaf38a..54b80a5110 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt @@ -29,10 +29,10 @@ class UnifiedPushGatewayResolver @Inject constructor( private val coroutineDispatchers: CoroutineDispatchers, ) { suspend fun getGateway(endpoint: String): String? { - val gateway = UnifiedPushConfig.default_push_gateway_http_url + val gateway = UnifiedPushConfig.DEFAULT_PUSH_GATEWAY_HTTP_URL val url = URL(endpoint) - val port = if (url.port != -1) { ":${url.port}" } else { "" } - val customBase = "${url.protocol}://${url.host}${port}" + val port = if (url.port != -1) ":${url.port}" else "" + val customBase = "${url.protocol}://${url.host}$port" val customUrl = "$customBase/_matrix/push/v1/notify" Timber.i("Testing $customUrl") try { diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushNewGatewayHandler.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushNewGatewayHandler.kt index c10bc814d7..2ae8753a1e 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushNewGatewayHandler.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushNewGatewayHandler.kt @@ -41,7 +41,7 @@ class UnifiedPushNewGatewayHandler @Inject constructor( Timber.w("Unable to retrieve session") } val userDataStore = userPushStoreFactory.create(userId) - if (userDataStore.getPushProviderName() == UnifiedPushConfig.name) { + if (userDataStore.getPushProviderName() == UnifiedPushConfig.NAME) { matrixAuthenticationService.restoreSession(userId).getOrNull()?.use { client -> pusherSubscriber.registerPusher(client, endpoint, pushGateway) } diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushProvider.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushProvider.kt index 6f74986ae5..bca4fd3ed3 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushProvider.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushProvider.kt @@ -35,8 +35,8 @@ class UnifiedPushProvider @Inject constructor( private val unRegisterUnifiedPushUseCase: UnregisterUnifiedPushUseCase, private val pushClientSecret: PushClientSecret, ) : PushProvider { - override val index = UnifiedPushConfig.index - override val name = UnifiedPushConfig.name + override val index = UnifiedPushConfig.INDEX + override val name = UnifiedPushConfig.NAME override fun getDistributors(): List { val distributors = UnifiedPush.getDistributors(context) diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt index 4bf8217914..b6030564ca 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt @@ -24,14 +24,13 @@ import javax.inject.Inject class UnregisterUnifiedPushUseCase @Inject constructor( @ApplicationContext private val context: Context, - //private val pushDataStore: PushDataStore, + // private val pushDataStore: PushDataStore, private val unifiedPushStore: UnifiedPushStore, // private val unifiedPushGatewayResolver: UnifiedPushGatewayResolver, ) { - - suspend fun execute(clientSecret: String /*pushersManager: PushersManager?*/) { - //val mode = BackgroundSyncMode.FDROID_BACKGROUND_SYNC_MODE_FOR_REALTIME - //pushDataStore.setFdroidSyncBackgroundMode(mode) + suspend fun execute(clientSecret: String) { + // val mode = BackgroundSyncMode.FDROID_BACKGROUND_SYNC_MODE_FOR_REALTIME + // pushDataStore.setFdroidSyncBackgroundMode(mode) try { unifiedPushStore.getEndpoint(clientSecret)?.let { Timber.d("Removing $it") diff --git a/libraries/pushstore/api/src/main/kotlin/io/element/android/libraries/pushstore/api/UserPushStore.kt b/libraries/pushstore/api/src/main/kotlin/io/element/android/libraries/pushstore/api/UserPushStore.kt index a10413fdf5..fcfd6475c3 100644 --- a/libraries/pushstore/api/src/main/kotlin/io/element/android/libraries/pushstore/api/UserPushStore.kt +++ b/libraries/pushstore/api/src/main/kotlin/io/element/android/libraries/pushstore/api/UserPushStore.kt @@ -17,7 +17,6 @@ package io.element.android.libraries.pushstore.api import kotlinx.coroutines.flow.Flow - /** * Store data related to push about a user. */ diff --git a/libraries/pushstore/impl/src/androidTest/kotlin/io/element/android/libraries/pushstore/impl/DefaultUserPushStoreFactoryTest.kt b/libraries/pushstore/impl/src/androidTest/kotlin/io/element/android/libraries/pushstore/impl/DefaultUserPushStoreFactoryTest.kt index 67b07bfd1d..b7bbf46dc4 100644 --- a/libraries/pushstore/impl/src/androidTest/kotlin/io/element/android/libraries/pushstore/impl/DefaultUserPushStoreFactoryTest.kt +++ b/libraries/pushstore/impl/src/androidTest/kotlin/io/element/android/libraries/pushstore/impl/DefaultUserPushStoreFactoryTest.kt @@ -30,7 +30,6 @@ import kotlin.concurrent.thread * adb uninstall io.element.android.libraries.push.pushstore.impl.test */ class DefaultUserPushStoreFactoryTest { - /** * Ensure that creating UserPushStore is thread safe. */ diff --git a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/UserPushStoreDataStore.kt b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/UserPushStoreDataStore.kt index 718ddb51fa..a79eafbbfd 100644 --- a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/UserPushStoreDataStore.kt +++ b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/UserPushStoreDataStore.kt @@ -63,7 +63,7 @@ class UserPushStoreDataStore( } override fun getNotificationEnabledForDevice(): Flow { - return context.dataStore.data.map{ it[notificationEnabled].orTrue() } + return context.dataStore.data.map { it[notificationEnabled].orTrue() } } override suspend fun setNotificationEnabledForDevice(enabled: Boolean) { diff --git a/libraries/pushstore/impl/src/test/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretImplTest.kt b/libraries/pushstore/impl/src/test/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretImplTest.kt index 48e4daa40c..5af4877ed3 100644 --- a/libraries/pushstore/impl/src/test/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretImplTest.kt +++ b/libraries/pushstore/impl/src/test/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretImplTest.kt @@ -27,7 +27,6 @@ private val A_USER_ID_1 = SessionId("@A_USER_ID_1:domain") private const val A_UNKNOWN_SECRET = "A_UNKNOWN_SECRET" internal class PushClientSecretImplTest { - @Test fun test() = runTest { val factory = FakePushClientSecretFactory() diff --git a/libraries/pushstore/test/src/main/kotlin/com/element/android/libraries/pushstore/test/userpushstore/FakeUserPushStore.kt b/libraries/pushstore/test/src/main/kotlin/com/element/android/libraries/pushstore/test/userpushstore/FakeUserPushStore.kt index c697e0d3c9..2afbf3210e 100644 --- a/libraries/pushstore/test/src/main/kotlin/com/element/android/libraries/pushstore/test/userpushstore/FakeUserPushStore.kt +++ b/libraries/pushstore/test/src/main/kotlin/com/element/android/libraries/pushstore/test/userpushstore/FakeUserPushStore.kt @@ -20,8 +20,7 @@ import io.element.android.libraries.pushstore.api.UserPushStore import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow -class FakeUserPushStore: UserPushStore { - +class FakeUserPushStore : UserPushStore { private var pushProviderName: String? = null private var currentRegisteredPushKey: String? = null private val notificationEnabledForDevice = MutableStateFlow(true) @@ -54,6 +53,5 @@ class FakeUserPushStore: UserPushStore { } override suspend fun reset() { - } } diff --git a/libraries/pushstore/test/src/main/kotlin/com/element/android/libraries/pushstore/test/userpushstore/FakeUserPushStoreFactory.kt b/libraries/pushstore/test/src/main/kotlin/com/element/android/libraries/pushstore/test/userpushstore/FakeUserPushStoreFactory.kt index f51893b00a..a529e34bc1 100644 --- a/libraries/pushstore/test/src/main/kotlin/com/element/android/libraries/pushstore/test/userpushstore/FakeUserPushStoreFactory.kt +++ b/libraries/pushstore/test/src/main/kotlin/com/element/android/libraries/pushstore/test/userpushstore/FakeUserPushStoreFactory.kt @@ -20,9 +20,8 @@ import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.pushstore.api.UserPushStore import io.element.android.libraries.pushstore.api.UserPushStoreFactory -class FakeUserPushStoreFactory: UserPushStoreFactory { +class FakeUserPushStoreFactory : UserPushStoreFactory { override fun create(userId: SessionId): UserPushStore { return FakeUserPushStore() } } - diff --git a/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt b/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt index 873d6f4a9b..e8ff7f2328 100644 --- a/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt +++ b/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt @@ -39,4 +39,3 @@ interface RoomSelectEntryPoint : FeatureEntryPoint { fun onCancel() } } - diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt index d3700c96f5..29f879bc50 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt @@ -47,4 +47,3 @@ class DefaultRoomSelectEntryPoint @Inject constructor() : RoomSelectEntryPoint { } } } - diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenter.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenter.kt index 8535031c16..51a1436e11 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenter.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenter.kt @@ -26,12 +26,12 @@ import androidx.compose.runtime.setValue import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import io.element.android.libraries.roomselect.api.RoomSelectMode import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.roomlist.RoomSummary import io.element.android.libraries.matrix.api.roomlist.RoomSummaryDetails +import io.element.android.libraries.roomselect.api.RoomSelectMode import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toPersistentList @@ -40,7 +40,6 @@ class RoomSelectPresenter @AssistedInject constructor( @Assisted private val mode: RoomSelectMode, private val client: MatrixClient, ) : Presenter { - @AssistedFactory interface Factory { fun create(mode: RoomSelectMode): RoomSelectPresenter diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectState.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectState.kt index 20fa7d910d..c451570cf5 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectState.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectState.kt @@ -16,9 +16,9 @@ package io.element.android.libraries.roomselect.impl -import io.element.android.libraries.roomselect.api.RoomSelectMode import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.matrix.api.roomlist.RoomSummaryDetails +import io.element.android.libraries.roomselect.api.RoomSelectMode import kotlinx.collections.immutable.ImmutableList data class RoomSelectState( diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectView.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectView.kt index 264be0cca7..83b3608eae 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectView.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectView.kt @@ -138,7 +138,8 @@ fun RoomSelectView( LazyColumn { item { SelectedRoomsHelper( - isForwarding = false, // TODO state.isForwarding, + // TODO state.isForwarding + isForwarding = false, selectedRooms = state.selectedRooms ) } diff --git a/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenterTests.kt b/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenterTests.kt index ec85358ebd..72ab751c39 100644 --- a/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenterTests.kt +++ b/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenterTests.kt @@ -20,12 +20,12 @@ import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.roomselect.api.RoomSelectMode import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.matrix.api.roomlist.RoomSummary import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.room.aRoomSummaryDetail import io.element.android.libraries.matrix.test.roomlist.FakeRoomListService +import io.element.android.libraries.roomselect.api.RoomSelectMode import io.element.android.tests.testutils.WarmUpRule import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.test.runTest @@ -33,7 +33,6 @@ import org.junit.Rule import org.junit.Test class RoomSelectPresenterTests { - @get:Rule val warmUpRule = WarmUpRule() diff --git a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/LoginType.kt b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/LoginType.kt index ce29e3729a..e66818e275 100644 --- a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/LoginType.kt +++ b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/LoginType.kt @@ -28,7 +28,6 @@ enum class LoginType { QR; companion object { - fun fromName(name: String) = when (name) { PASSWORD.name -> PASSWORD OIDC.name -> OIDC diff --git a/libraries/session-storage/impl-memory/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/memory/InMemorySessionStore.kt b/libraries/session-storage/impl-memory/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/memory/InMemorySessionStore.kt index 4b76e82e8b..8302127214 100644 --- a/libraries/session-storage/impl-memory/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/memory/InMemorySessionStore.kt +++ b/libraries/session-storage/impl-memory/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/memory/InMemorySessionStore.kt @@ -24,7 +24,6 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.map class InMemorySessionStore : SessionStore { - private var sessionDataFlow = MutableStateFlow(null) override fun isLoggedIn(): Flow { diff --git a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt index c437a4ef08..23d362d0b5 100644 --- a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt +++ b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt @@ -37,7 +37,6 @@ class DatabaseSessionStore @Inject constructor( private val database: SessionDatabase, private val dispatchers: CoroutineDispatchers, ) : SessionStore { - override fun isLoggedIn(): Flow { return database.sessionDataQueries.selectFirst() .asFlow() diff --git a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/di/SessionStorageModule.kt b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/di/SessionStorageModule.kt index 323aa93bb7..052943388e 100644 --- a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/di/SessionStorageModule.kt +++ b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/di/SessionStorageModule.kt @@ -34,10 +34,10 @@ object SessionStorageModule { @SingleIn(AppScope::class) fun provideMatrixDatabase(@ApplicationContext context: Context): SessionDatabase { val name = "session_database" - val secretFile = context.getDatabasePath("${name}.key") + val secretFile = context.getDatabasePath("$name.key") val passphraseProvider = RandomSecretPassphraseProvider(context, secretFile) val driver = SqlCipherDriverFactory(passphraseProvider) - .create(SessionDatabase.Schema, "${name}.db", context) + .create(SessionDatabase.Schema, "$name.db", context) return SessionDatabase(driver) } } diff --git a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTests.kt b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTests.kt index cb5569fb62..a195c46c5c 100644 --- a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTests.kt +++ b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTests.kt @@ -30,7 +30,6 @@ import org.junit.Before import org.junit.Test class DatabaseSessionStoreTests { - private lateinit var database: SessionDatabase private lateinit var databaseSessionStore: DatabaseSessionStore @@ -166,7 +165,8 @@ class DatabaseSessionStoreTests { assertThat(alteredSession.refreshToken).isEqualTo(secondSessionData.refreshToken) assertThat(alteredSession.homeserverUrl).isEqualTo(secondSessionData.homeserverUrl) assertThat(alteredSession.slidingSyncProxy).isEqualTo(secondSessionData.slidingSyncProxy) - assertThat(alteredSession.loginTimestamp).isEqualTo(/* Not altered! */ firstSessionData.loginTimestamp) + // Check that alteredSession.loginTimestamp is not altered, so equal to firstSessionData.loginTimestamp + assertThat(alteredSession.loginTimestamp).isEqualTo(firstSessionData.loginTimestamp) assertThat(alteredSession.oidcData).isEqualTo(secondSessionData.oidcData) } } diff --git a/libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/TestTags.kt b/libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/TestTags.kt index 6c31db3a9f..7542194bab 100644 --- a/libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/TestTags.kt +++ b/libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/TestTags.kt @@ -65,5 +65,3 @@ object TestTags { val dialogNegative = TestTag("dialog-negative") val dialogNeutral = TestTag("dialog-neutral") } - - diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ElementRichTextEditorStyle.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ElementRichTextEditorStyle.kt index a7620cced0..ba98c0f973 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ElementRichTextEditorStyle.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/ElementRichTextEditorStyle.kt @@ -31,7 +31,7 @@ object ElementRichTextEditorStyle { @Composable fun composerStyle( hasFocus: Boolean, - ) : RichTextEditorStyle { + ): RichTextEditorStyle { val baseStyle = common() return baseStyle.copy( text = baseStyle.text.copy( diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt index c43d6b14b2..06585d3b31 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt @@ -591,47 +591,52 @@ private fun ReplyToModeView( @PreviewsDayNight @Composable internal fun TextComposerSimplePreview() = ElementPreview { - PreviewColumn(items = persistentListOf( - { - ATextComposer( - RichTextEditorState("", initialFocus = true), - voiceMessageState = VoiceMessageState.Idle, - composerMode = MessageComposerMode.Normal, - enableTextFormatting = true, - enableVoiceMessages = true, - currentUserId = UserId("@alice:localhost"), - ) - }, { - ATextComposer( - RichTextEditorState("A message", initialFocus = true), - voiceMessageState = VoiceMessageState.Idle, - composerMode = MessageComposerMode.Normal, - enableTextFormatting = true, - enableVoiceMessages = true, - currentUserId = UserId("@alice:localhost") - ) - }, { - ATextComposer( - RichTextEditorState( - "A message\nWith several lines\nTo preview larger textfields and long lines with overflow", - initialFocus = true - ), - voiceMessageState = VoiceMessageState.Idle, - composerMode = MessageComposerMode.Normal, - enableTextFormatting = true, - enableVoiceMessages = true, - currentUserId = UserId("@alice:localhost") - ) - }, { - ATextComposer( - RichTextEditorState("A message without focus", initialFocus = false), - voiceMessageState = VoiceMessageState.Idle, - composerMode = MessageComposerMode.Normal, - enableTextFormatting = true, - enableVoiceMessages = true, - currentUserId = UserId("@alice:localhost") + PreviewColumn( + items = persistentListOf( + { + ATextComposer( + RichTextEditorState("", initialFocus = true), + voiceMessageState = VoiceMessageState.Idle, + composerMode = MessageComposerMode.Normal, + enableTextFormatting = true, + enableVoiceMessages = true, + currentUserId = UserId("@alice:localhost"), + ) + }, + { + ATextComposer( + RichTextEditorState("A message", initialFocus = true), + voiceMessageState = VoiceMessageState.Idle, + composerMode = MessageComposerMode.Normal, + enableTextFormatting = true, + enableVoiceMessages = true, + currentUserId = UserId("@alice:localhost") + ) + }, + { + ATextComposer( + RichTextEditorState( + "A message\nWith several lines\nTo preview larger textfields and long lines with overflow", + initialFocus = true + ), + voiceMessageState = VoiceMessageState.Idle, + composerMode = MessageComposerMode.Normal, + enableTextFormatting = true, + enableVoiceMessages = true, + currentUserId = UserId("@alice:localhost") + ) + }, + { + ATextComposer( + RichTextEditorState("A message without focus", initialFocus = false), + voiceMessageState = VoiceMessageState.Idle, + composerMode = MessageComposerMode.Normal, + enableTextFormatting = true, + enableVoiceMessages = true, + currentUserId = UserId("@alice:localhost") + ) + } ) - }) ) } @@ -689,122 +694,129 @@ internal fun TextComposerEditPreview() = ElementPreview { @PreviewsDayNight @Composable internal fun TextComposerReplyPreview() = ElementPreview { - PreviewColumn(items = persistentListOf({ - ATextComposer( - RichTextEditorState(""), - voiceMessageState = VoiceMessageState.Idle, - composerMode = MessageComposerMode.Reply( - isThreaded = false, - senderName = "Alice", - eventId = EventId("$1234"), - attachmentThumbnailInfo = null, - defaultContent = "A message\n" + - "With several lines\n" + - "To preview larger textfields and long lines with overflow" - ), - enableTextFormatting = true, - enableVoiceMessages = true, - currentUserId = UserId("@alice:localhost") - ) - }, - { - ATextComposer( - RichTextEditorState(""), - voiceMessageState = VoiceMessageState.Idle, - composerMode = MessageComposerMode.Reply( - isThreaded = true, - senderName = "Alice", - eventId = EventId("$1234"), - attachmentThumbnailInfo = null, - defaultContent = "A message\n" + - "With several lines\n" + - "To preview larger textfields and long lines with overflow" - ), - enableTextFormatting = true, - enableVoiceMessages = true, - currentUserId = UserId("@alice:localhost") - ) - }, { - ATextComposer( - RichTextEditorState("A message"), - voiceMessageState = VoiceMessageState.Idle, - composerMode = MessageComposerMode.Reply( - isThreaded = true, - senderName = "Alice", - eventId = EventId("$1234"), - attachmentThumbnailInfo = AttachmentThumbnailInfo( - thumbnailSource = MediaSource("https://domain.com/image.jpg"), - textContent = "image.jpg", - type = AttachmentThumbnailType.Image, - blurHash = A_BLUR_HASH, - ), - defaultContent = "image.jpg" - ), - enableTextFormatting = true, - enableVoiceMessages = true, - currentUserId = UserId("@alice:localhost") - ) - }, { - ATextComposer( - RichTextEditorState("A message"), - voiceMessageState = VoiceMessageState.Idle, - composerMode = MessageComposerMode.Reply( - isThreaded = false, - senderName = "Alice", - eventId = EventId("$1234"), - attachmentThumbnailInfo = AttachmentThumbnailInfo( - thumbnailSource = MediaSource("https://domain.com/video.mp4"), - textContent = "video.mp4", - type = AttachmentThumbnailType.Video, - blurHash = A_BLUR_HASH, - ), - defaultContent = "video.mp4" - ), - enableTextFormatting = true, - enableVoiceMessages = true, - currentUserId = UserId("@alice:localhost") - ) - }, { - ATextComposer( - RichTextEditorState("A message"), - voiceMessageState = VoiceMessageState.Idle, - composerMode = MessageComposerMode.Reply( - isThreaded = false, - senderName = "Alice", - eventId = EventId("$1234"), - attachmentThumbnailInfo = AttachmentThumbnailInfo( - thumbnailSource = null, - textContent = "logs.txt", - type = AttachmentThumbnailType.File, - blurHash = null, - ), - defaultContent = "logs.txt" - ), - enableTextFormatting = true, - enableVoiceMessages = true, - currentUserId = UserId("@alice:localhost") - ) - }, { - ATextComposer( - RichTextEditorState("A message", initialFocus = true), - voiceMessageState = VoiceMessageState.Idle, - composerMode = MessageComposerMode.Reply( - isThreaded = false, - senderName = "Alice", - eventId = EventId("$1234"), - attachmentThumbnailInfo = AttachmentThumbnailInfo( - thumbnailSource = null, - textContent = null, - type = AttachmentThumbnailType.Location, - blurHash = null, - ), - defaultContent = "Shared location" - ), - enableTextFormatting = true, - enableVoiceMessages = true, - currentUserId = UserId("@alice:localhost") + PreviewColumn( + items = persistentListOf( + { + ATextComposer( + RichTextEditorState(""), + voiceMessageState = VoiceMessageState.Idle, + composerMode = MessageComposerMode.Reply( + isThreaded = false, + senderName = "Alice", + eventId = EventId("$1234"), + attachmentThumbnailInfo = null, + defaultContent = "A message\n" + + "With several lines\n" + + "To preview larger textfields and long lines with overflow" + ), + enableTextFormatting = true, + enableVoiceMessages = true, + currentUserId = UserId("@alice:localhost") + ) + }, + { + ATextComposer( + RichTextEditorState(""), + voiceMessageState = VoiceMessageState.Idle, + composerMode = MessageComposerMode.Reply( + isThreaded = true, + senderName = "Alice", + eventId = EventId("$1234"), + attachmentThumbnailInfo = null, + defaultContent = "A message\n" + + "With several lines\n" + + "To preview larger textfields and long lines with overflow" + ), + enableTextFormatting = true, + enableVoiceMessages = true, + currentUserId = UserId("@alice:localhost") + ) + }, + { + ATextComposer( + RichTextEditorState("A message"), + voiceMessageState = VoiceMessageState.Idle, + composerMode = MessageComposerMode.Reply( + isThreaded = true, + senderName = "Alice", + eventId = EventId("$1234"), + attachmentThumbnailInfo = AttachmentThumbnailInfo( + thumbnailSource = MediaSource("https://domain.com/image.jpg"), + textContent = "image.jpg", + type = AttachmentThumbnailType.Image, + blurHash = A_BLUR_HASH, + ), + defaultContent = "image.jpg" + ), + enableTextFormatting = true, + enableVoiceMessages = true, + currentUserId = UserId("@alice:localhost") + ) + }, + { + ATextComposer( + RichTextEditorState("A message"), + voiceMessageState = VoiceMessageState.Idle, + composerMode = MessageComposerMode.Reply( + isThreaded = false, + senderName = "Alice", + eventId = EventId("$1234"), + attachmentThumbnailInfo = AttachmentThumbnailInfo( + thumbnailSource = MediaSource("https://domain.com/video.mp4"), + textContent = "video.mp4", + type = AttachmentThumbnailType.Video, + blurHash = A_BLUR_HASH, + ), + defaultContent = "video.mp4" + ), + enableTextFormatting = true, + enableVoiceMessages = true, + currentUserId = UserId("@alice:localhost") + ) + }, + { + ATextComposer( + RichTextEditorState("A message"), + voiceMessageState = VoiceMessageState.Idle, + composerMode = MessageComposerMode.Reply( + isThreaded = false, + senderName = "Alice", + eventId = EventId("$1234"), + attachmentThumbnailInfo = AttachmentThumbnailInfo( + thumbnailSource = null, + textContent = "logs.txt", + type = AttachmentThumbnailType.File, + blurHash = null, + ), + defaultContent = "logs.txt" + ), + enableTextFormatting = true, + enableVoiceMessages = true, + currentUserId = UserId("@alice:localhost") + ) + }, + { + ATextComposer( + RichTextEditorState("A message", initialFocus = true), + voiceMessageState = VoiceMessageState.Idle, + composerMode = MessageComposerMode.Reply( + isThreaded = false, + senderName = "Alice", + eventId = EventId("$1234"), + attachmentThumbnailInfo = AttachmentThumbnailInfo( + thumbnailSource = null, + textContent = null, + type = AttachmentThumbnailType.Location, + blurHash = null, + ), + defaultContent = "Shared location" + ), + enableTextFormatting = true, + enableVoiceMessages = true, + currentUserId = UserId("@alice:localhost") + ) + } ) - }) ) } diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposerLinkDialog.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposerLinkDialog.kt index 82b84889d3..b0078a40eb 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposerLinkDialog.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposerLinkDialog.kt @@ -24,13 +24,13 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.components.dialogs.ListDialog import io.element.android.libraries.designsystem.components.list.TextFieldListItem import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.ListItem import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.wysiwyg.view.models.LinkAction @@ -234,4 +234,3 @@ internal fun TextComposerLinkDialogEditLinkPreview() = ElementPreview { onRemoveLinkRequest = {}, ) } - diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/ComposerOptionsButton.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/ComposerOptionsButton.kt index c11516558e..e37c8ebc49 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/ComposerOptionsButton.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/ComposerOptionsButton.kt @@ -21,13 +21,13 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.IconButton import io.element.android.libraries.designsystem.utils.CommonDrawables import io.element.android.libraries.textcomposer.R -import io.element.android.compound.theme.ElementTheme @Composable internal fun ComposerOptionsButton( @@ -53,4 +53,3 @@ internal fun ComposerOptionsButton( internal fun ComposerOptionsButtonPreview() = ElementPreview { ComposerOptionsButton(onClick = {}) } - diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/DismissTextFormattingButton.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/DismissTextFormattingButton.kt index e2cca41f1d..110ec776c6 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/DismissTextFormattingButton.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/DismissTextFormattingButton.kt @@ -21,12 +21,12 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.IconButton import io.element.android.libraries.designsystem.utils.CommonDrawables -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings @Composable @@ -53,4 +53,3 @@ internal fun DismissTextFormattingButton( internal fun DismissTextFormattingButtonPreview() = ElementPreview { DismissTextFormattingButton(onClick = {}) } - diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/FormattingOption.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/FormattingOption.kt index 850a0e3c38..ea768c4f3b 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/FormattingOption.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/FormattingOption.kt @@ -32,12 +32,12 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.vectorResource import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.iconSuccessPrimaryBackground import io.element.android.libraries.designsystem.utils.CommonDrawables -import io.element.android.compound.theme.ElementTheme @Composable internal fun FormattingOption( @@ -112,4 +112,3 @@ internal fun FormattingButtonPreview() = ElementPreview { ) } } - diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/FormattingOptionState.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/FormattingOptionState.kt index 386fa5a668..65b9204cc0 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/FormattingOptionState.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/FormattingOptionState.kt @@ -17,6 +17,7 @@ package io.element.android.libraries.textcomposer.components internal enum class FormattingOptionState { - Default, Selected, Disabled + Default, + Selected, + Disabled } - diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/LiveWaveformView.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/LiveWaveformView.kt index 03bf4554f6..b8bb6eb439 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/LiveWaveformView.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/LiveWaveformView.kt @@ -31,6 +31,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.graphics.graphicsLayer @@ -38,16 +39,17 @@ import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.components.media.drawWaveform import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight -import io.element.android.compound.theme.ElementTheme import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toPersistentList import java.lang.Float.min private const val DEFAULT_GRAPHICS_LAYER_ALPHA: Float = 0.99F private val waveFormHeight = 26.dp + @Composable fun LiveWaveformView( levels: ImmutableList, @@ -66,8 +68,8 @@ fun LiveWaveformView( } } - - Box(contentAlignment = Alignment.CenterEnd, + Box( + contentAlignment = Alignment.CenterEnd, modifier = modifier .fillMaxWidth() .height(waveFormHeight) @@ -79,11 +81,12 @@ fun LiveWaveformView( .graphicsLayer(alpha = DEFAULT_GRAPHICS_LAYER_ALPHA) .then(modifier) ) { - canvasSize = DpSize(Dp(min(waveformWidth, parentWidth.toFloat())), size.height.toDp()) + val width = min(waveformWidth, parentWidth.toFloat()) + canvasSize = DpSize(width.dp, size.height.toDp()) val countThatFitsWidth = (parentWidth.toFloat() / (lineWidth.toPx() + linePadding.toPx())).toInt() drawWaveform( waveformData = levels.takeLast(countThatFitsWidth).toPersistentList(), - canvasSize = canvasSize, + canvasSizePx = Size(canvasSize.width.toPx(), size.height), brush = brush, lineWidth = lineWidth, linePadding = linePadding, @@ -96,7 +99,6 @@ fun LiveWaveformView( @Composable internal fun LiveWaveformViewPreview() = ElementPreview { Column { - LiveWaveformView( levels = List(100) { it.toFloat() / 100 }.toPersistentList(), modifier = Modifier.height(34.dp), diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/TextFormatting.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/TextFormatting.kt index 2df01c5f3a..81fd1ca81c 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/TextFormatting.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/TextFormatting.kt @@ -48,7 +48,6 @@ internal fun TextFormatting( state: RichTextEditorState, modifier: Modifier = Modifier, ) { - val scrollState = rememberScrollState() val coroutineScope = rememberCoroutineScope() diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessagePreview.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessagePreview.kt index 08415e9e10..db6a489321 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessagePreview.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessagePreview.kt @@ -36,6 +36,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.components.media.WaveformPlaybackView import io.element.android.libraries.designsystem.components.media.createFakeWaveform import io.element.android.libraries.designsystem.preview.ElementPreview @@ -44,7 +45,6 @@ import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.IconButton import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.utils.CommonDrawables -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.utils.time.formatShort import kotlinx.collections.immutable.ImmutableList @@ -115,7 +115,8 @@ internal fun VoiceMessagePreview( } private enum class PlayerButtonType { - Play, Pause + Play, + Pause } @Composable diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessageRecorderButton.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessageRecorderButton.kt index 01403ee3d7..c3825cef1d 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessageRecorderButton.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessageRecorderButton.kt @@ -14,7 +14,6 @@ * limitations under the License. */ - package io.element.android.libraries.textcomposer.components import androidx.compose.foundation.background @@ -28,14 +27,14 @@ import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme +import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.IconButton import io.element.android.libraries.designsystem.utils.CommonDrawables import io.element.android.libraries.textcomposer.model.VoiceMessageRecorderEvent -import io.element.android.compound.theme.ElementTheme -import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.ui.strings.CommonStrings @Composable diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessageRecording.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessageRecording.kt index 877e4832f4..f98fbd5b9e 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessageRecording.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessageRecording.kt @@ -38,10 +38,10 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.utils.time.formatShort import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toPersistentList diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpan.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpan.kt index 7e965d6b05..9788f1f6c3 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpan.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpan.kt @@ -33,7 +33,6 @@ class MentionSpan( val endPadding: Int, val typeface: Typeface = Typeface.DEFAULT, ) : ReplacementSpan() { - companion object { private const val MAX_LENGTH = 20 } diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MessageComposerMode.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MessageComposerMode.kt index 9abf6bc52e..2e2869aec7 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MessageComposerMode.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MessageComposerMode.kt @@ -26,7 +26,7 @@ import kotlinx.parcelize.Parcelize @Immutable sealed interface MessageComposerMode : Parcelable { @Parcelize - data object Normal: MessageComposerMode + data object Normal : MessageComposerMode sealed class Special(open val eventId: EventId?, open val defaultContent: String) : MessageComposerMode diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/Suggestion.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/Suggestion.kt index e3174f74d0..015677c99c 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/Suggestion.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/Suggestion.kt @@ -25,7 +25,7 @@ data class Suggestion( val type: SuggestionType, val text: String, ) { - constructor(suggestion: SuggestionPattern): this( + constructor(suggestion: SuggestionPattern) : this( suggestion.start.toInt(), suggestion.end.toInt(), SuggestionType.fromPatternKey(suggestion.key), diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessagePlayerEvent.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessagePlayerEvent.kt index 193c72969b..1b35eca80b 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessagePlayerEvent.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessagePlayerEvent.kt @@ -17,10 +17,10 @@ package io.element.android.libraries.textcomposer.model sealed interface VoiceMessagePlayerEvent { - data object Play: VoiceMessagePlayerEvent - data object Pause: VoiceMessagePlayerEvent + data object Play : VoiceMessagePlayerEvent + data object Pause : VoiceMessagePlayerEvent data class Seek( val position: Float - ): VoiceMessagePlayerEvent + ) : VoiceMessagePlayerEvent } diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessageRecorderEvent.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessageRecorderEvent.kt index 17091930c5..7536f96a68 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessageRecorderEvent.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessageRecorderEvent.kt @@ -17,7 +17,7 @@ package io.element.android.libraries.textcomposer.model sealed interface VoiceMessageRecorderEvent { - data object Start: VoiceMessageRecorderEvent - data object Stop: VoiceMessageRecorderEvent - data object Cancel: VoiceMessageRecorderEvent + data object Start : VoiceMessageRecorderEvent + data object Stop : VoiceMessageRecorderEvent + data object Cancel : VoiceMessageRecorderEvent } diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessageState.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessageState.kt index 94a854a491..ec9118e330 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessageState.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessageState.kt @@ -22,7 +22,7 @@ import kotlin.time.Duration @Immutable sealed interface VoiceMessageState { - data object Idle: VoiceMessageState + data object Idle : VoiceMessageState data class Preview( val isSending: Boolean, @@ -31,10 +31,10 @@ sealed interface VoiceMessageState { val playbackProgress: Float, val time: Duration, val waveform: ImmutableList, - ): VoiceMessageState + ) : VoiceMessageState data class Recording( val duration: Duration, val levels: ImmutableList, - ): VoiceMessageState + ) : VoiceMessageState } diff --git a/libraries/textcomposer/impl/src/test/kotlin/io/element/android/libraries/textcomposer/impl/mentions/MentionSpanProviderTest.kt b/libraries/textcomposer/impl/src/test/kotlin/io/element/android/libraries/textcomposer/impl/mentions/MentionSpanProviderTest.kt index b615dc489a..c8281cca0e 100644 --- a/libraries/textcomposer/impl/src/test/kotlin/io/element/android/libraries/textcomposer/impl/mentions/MentionSpanProviderTest.kt +++ b/libraries/textcomposer/impl/src/test/kotlin/io/element/android/libraries/textcomposer/impl/mentions/MentionSpanProviderTest.kt @@ -28,7 +28,6 @@ import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) class MentionSpanProviderTest { - @JvmField @Rule val warmUpRule = WarmUpRule() diff --git a/libraries/usersearch/api/src/main/kotlin/io/element/android/libraries/usersearch/api/UserListDataSource.kt b/libraries/usersearch/api/src/main/kotlin/io/element/android/libraries/usersearch/api/UserListDataSource.kt index b204af447a..569717f511 100644 --- a/libraries/usersearch/api/src/main/kotlin/io/element/android/libraries/usersearch/api/UserListDataSource.kt +++ b/libraries/usersearch/api/src/main/kotlin/io/element/android/libraries/usersearch/api/UserListDataSource.kt @@ -20,7 +20,7 @@ import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.user.MatrixUser interface UserListDataSource { - //TODO should probably have a flow + // TODO should probably have a flow suspend fun search(query: String, count: Long): List suspend fun getProfile(userId: UserId): MatrixUser? } diff --git a/libraries/usersearch/api/src/main/kotlin/io/element/android/libraries/usersearch/api/UserRepository.kt b/libraries/usersearch/api/src/main/kotlin/io/element/android/libraries/usersearch/api/UserRepository.kt index ed019fc5a5..76a466533f 100644 --- a/libraries/usersearch/api/src/main/kotlin/io/element/android/libraries/usersearch/api/UserRepository.kt +++ b/libraries/usersearch/api/src/main/kotlin/io/element/android/libraries/usersearch/api/UserRepository.kt @@ -19,6 +19,5 @@ package io.element.android.libraries.usersearch.api import kotlinx.coroutines.flow.Flow interface UserRepository { - fun search(query: String): Flow } diff --git a/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepository.kt b/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepository.kt index fa09a5ce9a..5d7bca2fbb 100644 --- a/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepository.kt +++ b/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepository.kt @@ -36,7 +36,6 @@ class MatrixUserRepository @Inject constructor( private val client: MatrixClient, private val dataSource: UserListDataSource ) : UserRepository { - override fun search(query: String): Flow = flow { val shouldQueryProfile = MatrixPatterns.isUserId(query) && !client.isMe(UserId(query)) val shouldFetchSearchResults = query.length >= MINIMUM_SEARCH_LENGTH @@ -70,7 +69,8 @@ class MatrixUserRepository @Inject constructor( 0, dataSource.getProfile(UserId(query)) ?.let { UserSearchResult(it) } - ?: UserSearchResult(MatrixUser(UserId(query)), isUnresolved = true)) + ?: UserSearchResult(MatrixUser(UserId(query)), isUnresolved = true) + ) } return UserSearchResultState(results = results, isSearching = false) diff --git a/libraries/usersearch/impl/src/test/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserListDataSourceTest.kt b/libraries/usersearch/impl/src/test/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserListDataSourceTest.kt index 6ec9f28658..54bf3599ec 100644 --- a/libraries/usersearch/impl/src/test/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserListDataSourceTest.kt +++ b/libraries/usersearch/impl/src/test/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserListDataSourceTest.kt @@ -30,7 +30,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test internal class MatrixUserListDataSourceTest { - @Test fun `search - returns users on success`() = runTest { val matrixClient = FakeMatrixClient() diff --git a/libraries/usersearch/impl/src/test/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepositoryTest.kt b/libraries/usersearch/impl/src/test/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepositoryTest.kt index e775547efc..92fa186631 100644 --- a/libraries/usersearch/impl/src/test/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepositoryTest.kt +++ b/libraries/usersearch/impl/src/test/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepositoryTest.kt @@ -33,7 +33,6 @@ import org.junit.Test private val SESSION_ID = SessionId("@current-user:example.com") internal class MatrixUserRepositoryTest { - @Test fun `search - emits nothing if the search query is too short`() = runTest { val dataSource = FakeUserListDataSource() @@ -212,5 +211,4 @@ internal class MatrixUserRepositoryTest { private fun List.toUserSearchResults() = map { UserSearchResult(it) } private fun placeholderResult(id: UserId = A_USER_ID, isUnresolved: Boolean = false) = UserSearchResult(MatrixUser(id), isUnresolved = isUnresolved) - } diff --git a/libraries/usersearch/test/src/main/kotlin/io/element/android/libraries/usersearch/test/FakeUserListDataSource.kt b/libraries/usersearch/test/src/main/kotlin/io/element/android/libraries/usersearch/test/FakeUserListDataSource.kt index 23935c1a6c..deda766411 100644 --- a/libraries/usersearch/test/src/main/kotlin/io/element/android/libraries/usersearch/test/FakeUserListDataSource.kt +++ b/libraries/usersearch/test/src/main/kotlin/io/element/android/libraries/usersearch/test/FakeUserListDataSource.kt @@ -21,7 +21,6 @@ import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.usersearch.api.UserListDataSource class FakeUserListDataSource : UserListDataSource { - private var searchResult: List = emptyList() private var profile: MatrixUser? = null diff --git a/libraries/usersearch/test/src/main/kotlin/io/element/android/libraries/usersearch/test/FakeUserRepository.kt b/libraries/usersearch/test/src/main/kotlin/io/element/android/libraries/usersearch/test/FakeUserRepository.kt index 3ca2320a26..c243d04b20 100644 --- a/libraries/usersearch/test/src/main/kotlin/io/element/android/libraries/usersearch/test/FakeUserRepository.kt +++ b/libraries/usersearch/test/src/main/kotlin/io/element/android/libraries/usersearch/test/FakeUserRepository.kt @@ -22,7 +22,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow class FakeUserRepository : UserRepository { - var providedQuery: String? = null private set @@ -36,5 +35,4 @@ class FakeUserRepository : UserRepository { suspend fun emitState(state: UserSearchResultState) { flow.emit(state) } - } diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImpl.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImpl.kt index 5a1cfe537b..3c4d7dd15f 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImpl.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImpl.kt @@ -104,7 +104,7 @@ class VoiceRecorderImpl @Inject constructor( is Audio.Data -> { val audioLevel = audioLevelCalculator.calculateAudioLevel(audio.buffer) - lock.withLock{ + lock.withLock { levels.add(audioLevel) _state.emit(VoiceRecorderState.Recording(elapsedTime, levels.toList())) } @@ -136,7 +136,6 @@ class VoiceRecorderImpl @Inject constructor( audioReader = null encoder.release() - lock.withLock { if (cancelled) { deleteRecording() diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/AndroidAudioReader.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/AndroidAudioReader.kt index a2342f3c2f..e4ca61b4a4 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/AndroidAudioReader.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/AndroidAudioReader.kt @@ -29,7 +29,8 @@ import kotlinx.coroutines.isActive import kotlinx.coroutines.withContext class AndroidAudioReader -@RequiresPermission(Manifest.permission.RECORD_AUDIO) private constructor( +@RequiresPermission(Manifest.permission.RECORD_AUDIO) +private constructor( private val config: AudioConfig, private val dispatchers: CoroutineDispatchers, ) : AudioReader { @@ -92,7 +93,7 @@ class AndroidAudioReader private fun createOutputBuffer(sampleRate: SampleRate): ShortArray { val bufferSizeInShorts = AudioRecord.getMinBufferSize( - sampleRate.hz, + sampleRate.HZ, config.format.channelMask, config.format.encoding ) diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/AudioReader.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/AudioReader.kt index 230c9533fd..4031a5ef45 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/AudioReader.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/AudioReader.kt @@ -33,5 +33,4 @@ interface AudioReader { interface Factory { fun create(config: AudioConfig, dispatchers: CoroutineDispatchers): AudioReader } - } diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DefaultEncoder.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DefaultEncoder.kt index a888824fe5..814ed2f891 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DefaultEncoder.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DefaultEncoder.kt @@ -33,7 +33,7 @@ class DefaultEncoder @Inject constructor( config: AudioConfig, ) : Encoder { private val bitRate = config.bitRate -private val sampleRate = config.sampleRate.asEncoderModel() + private val sampleRate = config.sampleRate.asEncoderModel() private var encoder: OggOpusEncoder? = null override fun init( diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/Encoder.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/Encoder.kt index 67685635aa..d6686b092f 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/Encoder.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/Encoder.kt @@ -19,7 +19,6 @@ package io.element.android.libraries.voicerecorder.impl.audio import java.io.File interface Encoder { - fun init(file: File) fun encode(buffer: ShortArray, readSize: Int) diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/SampleRate.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/SampleRate.kt index b392b6e19f..d510e88d09 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/SampleRate.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/SampleRate.kt @@ -19,6 +19,6 @@ package io.element.android.libraries.voicerecorder.impl.audio import io.element.android.opusencoder.configuration.SampleRate as LibOpusOggSampleRate data object SampleRate { - const val hz = 48_000 + const val HZ = 48_000 fun asEncoderModel() = LibOpusOggSampleRate.Rate48kHz } diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/di/VoiceRecorderModule.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/di/VoiceRecorderModule.kt index 29071a9879..d51ab3e138 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/di/VoiceRecorderModule.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/di/VoiceRecorderModule.kt @@ -37,10 +37,11 @@ object VoiceRecorderModule { return AudioConfig( format = AudioFormat.Builder() .setEncoding(AudioFormat.ENCODING_PCM_16BIT) - .setSampleRate(sampleRate.hz) + .setSampleRate(sampleRate.HZ) .setChannelMask(AudioFormat.CHANNEL_IN_MONO) .build(), - bitRate = 24_000, // 24 kbps + // 24 kbps + bitRate = 24_000, sampleRate = sampleRate, source = MediaRecorder.AudioSource.MIC, ) diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/file/DefaultVoiceFileManager.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/file/DefaultVoiceFileManager.kt index 07ef54991f..d8b30e4c53 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/file/DefaultVoiceFileManager.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/file/DefaultVoiceFileManager.kt @@ -32,7 +32,6 @@ class DefaultVoiceFileManager @Inject constructor( private val config: VoiceFileConfig, room: MatrixRoom, ) : VoiceFileManager { - private val roomId: RoomId = room.roomId override fun createFile(): File { diff --git a/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImplTest.kt b/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImplTest.kt index 030545a3bc..9bb1ace7b1 100644 --- a/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImplTest.kt +++ b/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImplTest.kt @@ -141,8 +141,9 @@ class VoiceRecorderImplTest { ), encoder = FakeEncoder(fakeFileSystem), config = AudioConfig( - format = AUDIO_FORMAT, - bitRate = 24_000, // 24 kbps + format = audioFormat, + // 24 kbps + bitRate = 24_000, sampleRate = SampleRate, source = MediaRecorder.AudioSource.MIC, ), @@ -155,8 +156,8 @@ class VoiceRecorderImplTest { companion object { const val FILE_ID: String = "recording" - const val FILE_PATH = "voice_recordings/${FILE_ID}.ogg" - private lateinit var AUDIO_FORMAT: AudioFormat + const val FILE_PATH = "voice_recordings/$FILE_ID.ogg" + private lateinit var audioFormat: AudioFormat // FakeEncoder doesn't actually encode, it just writes the data to the file private const val ENCODED_DATA = "[32767, 32767, 32767][32767, 32767, 32767]" @@ -170,7 +171,7 @@ class VoiceRecorderImplTest { @BeforeClass @JvmStatic fun initAudioFormat() { - AUDIO_FORMAT = mockk() + audioFormat = mockk() } } } diff --git a/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DBovAudioLevelCalculatorTest.kt b/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DBovAudioLevelCalculatorTest.kt index 9aa3432ef6..2ea462f162 100644 --- a/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DBovAudioLevelCalculatorTest.kt +++ b/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DBovAudioLevelCalculatorTest.kt @@ -20,7 +20,6 @@ import com.google.common.truth.Truth.assertThat import org.junit.Test class DBovAudioLevelCalculatorTest { - @Test fun `given max values, it returns 1`() { val calculator = DBovAudioLevelCalculator() diff --git a/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/test/FakeAudioRecorderFactory.kt b/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/test/FakeAudioRecorderFactory.kt index 01943f4d10..02d8b4742c 100644 --- a/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/test/FakeAudioRecorderFactory.kt +++ b/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/test/FakeAudioRecorderFactory.kt @@ -23,7 +23,7 @@ import io.element.android.libraries.voicerecorder.impl.audio.AudioReader class FakeAudioRecorderFactory( private val audio: List