Browse Source

Fix ktlint issues

pull/2207/head
Benoit Marty 4 months ago
parent
commit
a831f05f6e
  1. 1
      anvilcodegen/src/main/kotlin/io/element/android/anvilcodegen/ContributesNodeCodeGenerator.kt
  2. 1
      app/src/main/kotlin/io/element/android/x/ElementXApplication.kt
  3. 1
      app/src/main/kotlin/io/element/android/x/MainActivity.kt
  4. 1
      app/src/main/kotlin/io/element/android/x/MainNode.kt
  5. 4
      app/src/main/kotlin/io/element/android/x/di/AppBindings.kt
  6. 1
      app/src/main/kotlin/io/element/android/x/di/AppComponent.kt
  7. 19
      app/src/main/kotlin/io/element/android/x/di/AppModule.kt
  8. 1
      app/src/main/kotlin/io/element/android/x/di/DefaultRoomComponentFactory.kt
  9. 1
      app/src/main/kotlin/io/element/android/x/di/DefaultSessionComponentFactory.kt
  10. 1
      app/src/main/kotlin/io/element/android/x/di/RoomComponent.kt
  11. 1
      app/src/main/kotlin/io/element/android/x/di/SessionComponent.kt
  12. 1
      app/src/main/kotlin/io/element/android/x/initializer/CrashInitializer.kt
  13. 1
      app/src/main/kotlin/io/element/android/x/initializer/TracingInitializer.kt
  14. 1
      app/src/test/kotlin/io/element/android/x/intent/IntentProviderImplTest.kt
  15. 1
      appconfig/src/main/kotlin/io/element/android/appconfig/LockScreenConfig.kt
  16. 2
      appconfig/src/main/kotlin/io/element/android/appconfig/MatrixConfiguration.kt
  17. 4
      appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt
  18. 2
      appconfig/src/main/kotlin/io/element/android/appconfig/PushConfig.kt
  19. 6
      appconfig/src/main/kotlin/io/element/android/appconfig/RoomListConfig.kt
  20. 2
      appconfig/src/main/kotlin/io/element/android/appconfig/SecureBackupConfig.kt
  21. 2
      appconfig/src/main/kotlin/io/element/android/appconfig/TimelineConfig.kt
  22. 1
      appnav/src/main/kotlin/io/element/android/appnav/LoggedInEventProcessor.kt
  23. 1
      appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt
  24. 1
      appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt
  25. 1
      appnav/src/main/kotlin/io/element/android/appnav/di/MatrixClientsHolder.kt
  26. 21
      appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInEvents.kt
  27. 1
      appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInNode.kt
  28. 1
      appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt
  29. 1
      appnav/src/main/kotlin/io/element/android/appnav/room/LoadingRoomState.kt
  30. 1
      appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt
  31. 1
      appnav/src/main/kotlin/io/element/android/appnav/room/RoomLoadedFlowNode.kt
  32. 1
      appnav/src/main/kotlin/io/element/android/appnav/root/RootNavStateFlowFactory.kt
  33. 1
      appnav/src/main/kotlin/io/element/android/appnav/root/RootPresenter.kt
  34. 4
      appnav/src/test/kotlin/io/element/android/appnav/RoomFlowNodeTest.kt
  35. 1
      appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt
  36. 1
      appnav/src/test/kotlin/io/element/android/appnav/room/LoadingRoomStateFlowFactoryTest.kt
  37. 4
      build.gradle.kts
  38. 1
      features/call/src/main/kotlin/io/element/android/features/call/CallForegroundService.kt
  39. 1
      features/call/src/main/kotlin/io/element/android/features/call/data/WidgetMessage.kt
  40. 1
      features/call/src/main/kotlin/io/element/android/features/call/ui/CallScreenPresenter.kt
  41. 1
      features/call/src/main/kotlin/io/element/android/features/call/utils/CallIntentDataParser.kt
  42. 1
      features/call/src/main/kotlin/io/element/android/features/call/utils/WebViewWidgetMessageInterceptor.kt
  43. 1
      features/call/src/main/kotlin/io/element/android/features/call/utils/WidgetMessageSerializer.kt
  44. 1
      features/call/src/test/kotlin/io/element/android/features/call/MapWebkitPermissionsTest.kt
  45. 1
      features/call/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt
  46. 1
      features/call/src/test/kotlin/io/element/android/features/call/utils/CallIntentDataParserTest.kt
  47. 1
      features/call/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt
  48. 1
      features/call/src/test/kotlin/io/element/android/features/call/utils/FakeCallWidgetProvider.kt
  49. 6
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt
  50. 6
      features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListTopBar.kt
  51. 2
      features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt
  52. 1
      libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/AndroidClipboardHelper.kt
  53. 1
      libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/FakeClipboardHelper.kt
  54. 1
      libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DefaultDiffCallback.kt
  55. 1
      libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCache.kt
  56. 1
      libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCacheInvalidator.kt
  57. 1
      libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCacheUpdater.kt
  58. 1
      libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncAction.kt
  59. 1
      libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncData.kt
  60. 1
      libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/HideOverlayBackPressHandler.kt
  61. 1
      libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/Overlay.kt
  62. 1
      libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/operation/Hide.kt
  63. 1
      libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/operation/Show.kt
  64. 1
      libraries/architecture/src/test/kotlin/io/element/android/libraries/architecture/AsyncDataKtTest.kt
  65. 1
      libraries/core/src/main/kotlin/io/element/android/libraries/core/cache/CircularCache.kt
  66. 14
      libraries/core/src/main/kotlin/io/element/android/libraries/core/extensions/BasicExtensions.kt
  67. 1
      libraries/core/src/main/kotlin/io/element/android/libraries/core/log/logger/LoggerTag.kt
  68. 1
      libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/BasicExtensionsTest.kt
  69. 1
      libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/ResultTest.kt
  70. 1
      libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeepLinkCreatorTest.kt
  71. 1
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt
  72. 1
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/ButtonVisuals.kt
  73. 3
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/keyboard/Keyboard.kt
  74. 1
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferencePage.kt
  75. 2
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceTextField.kt
  76. 7
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Button.kt
  77. 3
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/FloatingActionButton.kt
  78. 1
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListItem.kt
  79. 1
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListSupportingText.kt
  80. 1
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt
  81. 2
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Slider.kt
  82. 8
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/bottomsheet/CustomBottomSheetScaffold.kt
  83. 1
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/bottomsheet/CustomSheetState.kt
  84. 3
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/snackbar/SnackbarHost.kt
  85. 1
      libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/colors/AvatarColorsTest.kt
  86. 1
      libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/utils/snackbar/SnackbarDispatcherTests.kt
  87. 1
      libraries/encrypted-db/src/main/kotlin/io/element/encrypteddb/passphrase/RandomSecretPassphraseProvider.kt
  88. 1
      libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapApplier.kt
  89. 1
      libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapUpdater.kt
  90. 2
      libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverter.kt
  91. 4
      libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilder.kt
  92. 8
      libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AttachmentThumbnail.kt
  93. 5
      libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/CoilMediaFetcher.kt
  94. 1
      libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestData.kt
  95. 1
      libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/ToHtmlDocumentTest.kt
  96. 1
      libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/ToPlainTextTest.kt
  97. 1
      libraries/network/src/main/kotlin/io/element/android/libraries/network/interceptors/FormattedJsonHttpLogger.kt
  98. 4
      libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/PushersManager.kt
  99. 2
      libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt
  100. 2
      libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt

1
anvilcodegen/src/main/kotlin/io/element/android/anvilcodegen/ContributesNodeCodeGenerator.kt

@ -58,7 +58,6 @@ import java.io.File @@ -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<KtFile>): Collection<GeneratedFile> {

1
app/src/main/kotlin/io/element/android/x/ElementXApplication.kt

@ -27,7 +27,6 @@ import io.element.android.x.initializer.CrashInitializer @@ -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() {

1
app/src/main/kotlin/io/element/android/x/MainActivity.kt

@ -51,7 +51,6 @@ import timber.log.Timber @@ -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

1
app/src/main/kotlin/io/element/android/x/MainNode.kt

@ -48,7 +48,6 @@ class MainNode( @@ -48,7 +48,6 @@ class MainNode(
plugins = plugins,
),
DaggerComponentOwner {
override val daggerComponent = (context as DaggerComponentOwner).daggerComponent
override fun resolve(navTarget: RootNavTarget, buildContext: BuildContext): Node {

4
app/src/main/kotlin/io/element/android/x/di/AppBindings.kt

@ -27,8 +27,12 @@ import io.element.android.libraries.matrix.api.tracing.TracingService @@ -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
}

1
app/src/main/kotlin/io/element/android/x/di/AppComponent.kt

@ -28,7 +28,6 @@ import io.element.android.libraries.di.SingleIn @@ -28,7 +28,6 @@ import io.element.android.libraries.di.SingleIn
@SingleIn(AppScope::class)
@MergeComponent(AppScope::class)
interface AppComponent : NodeFactoriesBindings {
@Component.Factory
interface Factory {
fun create(

19
app/src/main/kotlin/io/element/android/x/di/AppModule.kt

@ -46,7 +46,6 @@ import java.io.File @@ -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 { @@ -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

1
app/src/main/kotlin/io/element/android/x/di/DefaultRoomComponentFactory.kt

@ -26,7 +26,6 @@ import javax.inject.Inject @@ -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()
}

1
app/src/main/kotlin/io/element/android/x/di/DefaultSessionComponentFactory.kt

@ -26,7 +26,6 @@ import javax.inject.Inject @@ -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()
}

1
app/src/main/kotlin/io/element/android/x/di/RoomComponent.kt

@ -29,7 +29,6 @@ import io.element.android.libraries.matrix.api.room.MatrixRoom @@ -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

1
app/src/main/kotlin/io/element/android/x/di/SessionComponent.kt

@ -29,7 +29,6 @@ import io.element.android.libraries.matrix.api.MatrixClient @@ -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

1
app/src/main/kotlin/io/element/android/x/initializer/CrashInitializer.kt

@ -21,7 +21,6 @@ import androidx.startup.Initializer @@ -21,7 +21,6 @@ import androidx.startup.Initializer
import io.element.android.features.rageshake.impl.crash.VectorUncaughtExceptionHandler
class CrashInitializer : Initializer<Unit> {
override fun create(context: Context) {
VectorUncaughtExceptionHandler(context).activate()
}

1
app/src/main/kotlin/io/element/android/x/initializer/TracingInitializer.kt

@ -31,7 +31,6 @@ import io.element.android.x.di.AppBindings @@ -31,7 +31,6 @@ import io.element.android.x.di.AppBindings
import timber.log.Timber
class TracingInitializer : Initializer<Unit> {
override fun create(context: Context) {
val appBindings = context.bindings<AppBindings>()
val tracingService = appBindings.tracingService()

1
app/src/test/kotlin/io/element/android/x/intent/IntentProviderImplTest.kt

@ -31,7 +31,6 @@ import org.robolectric.RuntimeEnvironment @@ -31,7 +31,6 @@ import org.robolectric.RuntimeEnvironment
@RunWith(RobolectricTestRunner::class)
class IntentProviderImplTest {
@Test
fun `test getViewRoomIntent with Session`() {
val sut = createIntentProviderImpl()

1
appconfig/src/main/kotlin/io/element/android/appconfig/LockScreenConfig.kt

@ -46,7 +46,6 @@ data class LockScreenConfig( @@ -46,7 +46,6 @@ data class LockScreenConfig(
@ContributesTo(AppScope::class)
@Module
object LockScreenConfigModule {
@Provides
fun providesLockScreenConfig(): LockScreenConfig = LockScreenConfig(
isPinMandatory = false,

2
appconfig/src/main/kotlin/io/element/android/appconfig/MatrixConfiguration.kt

@ -17,6 +17,6 @@ @@ -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
}

4
appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt

@ -18,8 +18,8 @@ package io.element.android.appconfig @@ -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
}

2
appconfig/src/main/kotlin/io/element/android/appconfig/PushConfig.kt

@ -20,5 +20,5 @@ object PushConfig { @@ -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"
}

6
appconfig/src/main/kotlin/io/element/android/appconfig/RoomListConfig.kt

@ -17,8 +17,8 @@ @@ -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
}

2
appconfig/src/main/kotlin/io/element/android/appconfig/SecureBackupConfig.kt

@ -17,5 +17,5 @@ @@ -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"
}

2
appconfig/src/main/kotlin/io/element/android/appconfig/TimelineConfig.kt

@ -17,5 +17,5 @@ @@ -17,5 +17,5 @@
package io.element.android.appconfig
object TimelineConfig {
const val maxReadReceiptToDisplay = 3
const val MAX_READ_RECEIPT_TO_DISPLAY = 3
}

1
appnav/src/main/kotlin/io/element/android/appnav/LoggedInEventProcessor.kt

@ -36,7 +36,6 @@ class LoggedInEventProcessor @Inject constructor( @@ -36,7 +36,6 @@ class LoggedInEventProcessor @Inject constructor(
roomMembershipObserver: RoomMembershipObserver,
sessionVerificationService: SessionVerificationService,
) {
private var observingJob: Job? = null
private val displayLeftRoomMessage = roomMembershipObserver.updates

1
appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt

@ -111,7 +111,6 @@ class LoggedInFlowNode @AssistedInject constructor( @@ -111,7 +111,6 @@ class LoggedInFlowNode @AssistedInject constructor(
buildContext = buildContext,
plugins = plugins
) {
interface Callback : Plugin {
fun onOpenBugReport()
}

1
appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt

@ -81,7 +81,6 @@ class RootFlowNode @AssistedInject constructor( @@ -81,7 +81,6 @@ class RootFlowNode @AssistedInject constructor(
buildContext = buildContext,
plugins = plugins
) {
override fun onBuilt() {
matrixClientsHolder.restoreWithSavedState(buildContext.savedStateMap)
super.onBuilt()

1
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 @@ -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<SessionId, MatrixClient>()
private val restoreMutex = Mutex()

21
appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInEvents.kt

@ -1,21 +0,0 @@ @@ -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
// }

1
appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInNode.kt

@ -35,7 +35,6 @@ class LoggedInNode @AssistedInject constructor( @@ -35,7 +35,6 @@ class LoggedInNode @AssistedInject constructor(
buildContext = buildContext,
plugins = plugins
) {
@Composable
override fun View(modifier: Modifier) {
val loggedInState = loggedInPresenter.present()

1
appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt

@ -35,7 +35,6 @@ class LoggedInPresenter @Inject constructor( @@ -35,7 +35,6 @@ class LoggedInPresenter @Inject constructor(
private val networkMonitor: NetworkMonitor,
private val pushService: PushService,
) : Presenter<LoggedInState> {
@Composable
override fun present(): LoggedInState {
LaunchedEffect(Unit) {

1
appnav/src/main/kotlin/io/element/android/appnav/room/LoadingRoomState.kt

@ -47,7 +47,6 @@ open class LoadingRoomStateProvider : PreviewParameterProvider<LoadingRoomState> @@ -47,7 +47,6 @@ open class LoadingRoomStateProvider : PreviewParameterProvider<LoadingRoomState>
@SingleIn(SessionScope::class)
class LoadingRoomStateFlowFactory @Inject constructor(private val matrixClient: MatrixClient) {
fun create(lifecycleScope: CoroutineScope, roomId: RoomId): StateFlow<LoadingRoomState> =
getRoomFlow(roomId)
.map { room ->

1
appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt

@ -66,7 +66,6 @@ class RoomFlowNode @AssistedInject constructor( @@ -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,

1
appnav/src/main/kotlin/io/element/android/appnav/room/RoomLoadedFlowNode.kt

@ -71,7 +71,6 @@ class RoomLoadedFlowNode @AssistedInject constructor( @@ -71,7 +71,6 @@ class RoomLoadedFlowNode @AssistedInject constructor(
buildContext = buildContext,
plugins = plugins,
), DaggerComponentOwner {
interface Callback : Plugin {
fun onOpenRoom(roomId: RoomId)
fun onForwardedToSingleRoom(roomId: RoomId)

1
appnav/src/main/kotlin/io/element/android/appnav/root/RootNavStateFlowFactory.kt

@ -41,7 +41,6 @@ class RootNavStateFlowFactory @Inject constructor( @@ -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<RootNavState> {

1
appnav/src/main/kotlin/io/element/android/appnav/root/RootPresenter.kt

@ -30,7 +30,6 @@ class RootPresenter @Inject constructor( @@ -30,7 +30,6 @@ class RootPresenter @Inject constructor(
private val rageshakeDetectionPresenter: RageshakeDetectionPresenter,
private val appErrorStateService: AppErrorStateService,
) : Presenter<RootState> {
@Composable
override fun present(): RootState {
val rageshakeDetectionState = rageshakeDetectionPresenter.present()

4
appnav/src/test/kotlin/io/element/android/appnav/RoomFlowNodeTest.kt

@ -41,7 +41,6 @@ import org.junit.Rule @@ -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 { @@ -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 { @@ -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
}

1
appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt

@ -36,7 +36,6 @@ import org.junit.Rule @@ -36,7 +36,6 @@ import org.junit.Rule
import org.junit.Test
class LoggedInPresenterTest {
@get:Rule
val warmUpRule = WarmUpRule()

1
appnav/src/test/kotlin/io/element/android/appnav/room/LoadingRoomStateFlowFactoryTest.kt

@ -28,7 +28,6 @@ import kotlinx.coroutines.test.runTest @@ -28,7 +28,6 @@ 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)

4
build.gradle.kts

@ -100,8 +100,8 @@ allprojects { @@ -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 { @@ -194,7 +194,7 @@ subprojects {
// Workaround for https://github.com/airbnb/Showkase/issues/335
subprojects {
tasks.withType<KspTask>() {
tasks.withType<KspTask> {
doLast {
fileTree(layout.buildDirectory).apply { include("**/*ShowkaseExtension*.kt") }.files.forEach { file ->
ReplaceRegExp().apply {

1
features/call/src/main/kotlin/io/element/android/features/call/CallForegroundService.kt

@ -30,7 +30,6 @@ import io.element.android.features.call.ui.ElementCallActivity @@ -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)

1
features/call/src/main/kotlin/io/element/android/features/call/data/WidgetMessage.kt

@ -28,7 +28,6 @@ data class WidgetMessage( @@ -28,7 +28,6 @@ data class WidgetMessage(
@SerialName("action") val action: Action,
@SerialName("data") val data: JsonElement? = null,
) {
@Serializable
enum class Direction {
@SerialName("fromWidget")

1
features/call/src/main/kotlin/io/element/android/features/call/ui/CallScreenPresenter.kt

@ -63,7 +63,6 @@ class CallScreenPresenter @AssistedInject constructor( @@ -63,7 +63,6 @@ class CallScreenPresenter @AssistedInject constructor(
private val matrixClientsProvider: MatrixClientProvider,
private val appCoroutineScope: CoroutineScope,
) : Presenter<CallScreenState> {
@AssistedFactory
interface Factory {
fun create(callType: CallType, navigator: CallScreenNavigator): CallScreenPresenter

1
features/call/src/main/kotlin/io/element/android/features/call/utils/CallIntentDataParser.kt

@ -20,7 +20,6 @@ import android.net.Uri @@ -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? {

1
features/call/src/main/kotlin/io/element/android/features/call/utils/WebViewWidgetMessageInterceptor.kt

@ -28,7 +28,6 @@ import kotlinx.coroutines.flow.MutableSharedFlow @@ -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

1
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 @@ -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<WidgetMessage> {

1
features/call/src/test/kotlin/io/element/android/features/call/MapWebkitPermissionsTest.kt

@ -23,7 +23,6 @@ import io.element.android.features.call.ui.mapWebkitPermissions @@ -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))

1
features/call/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt

@ -48,7 +48,6 @@ import org.junit.Rule @@ -48,7 +48,6 @@ import org.junit.Rule
import org.junit.Test
class CallScreenPresenterTest {
@get:Rule
val warmUpRule = WarmUpRule()

1
features/call/src/test/kotlin/io/element/android/features/call/utils/CallIntentDataParserTest.kt

@ -24,7 +24,6 @@ import java.net.URLEncoder @@ -24,7 +24,6 @@ import java.net.URLEncoder
@RunWith(RobolectricTestRunner::class)
class CallIntentDataParserTest {
private val callIntentDataParser = CallIntentDataParser()
@Test

1
features/call/src/test/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProviderTest.kt

@ -32,7 +32,6 @@ import kotlinx.coroutines.test.runTest @@ -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")) })

1
features/call/src/test/kotlin/io/element/android/features/call/utils/FakeCallWidgetProvider.kt

@ -25,7 +25,6 @@ class FakeCallWidgetProvider( @@ -25,7 +25,6 @@ class FakeCallWidgetProvider(
private val widgetDriver: FakeWidgetDriver = FakeWidgetDriver(),
private val url: String = "https://call.element.io",
) : CallWidgetProvider {
var getWidgetCalled = false
private set

6
features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt

@ -152,7 +152,7 @@ private fun ReadReceiptsAvatars( @@ -152,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(
@ -170,9 +170,9 @@ private fun ReadReceiptsAvatars( @@ -170,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,
)

6
features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListTopBar.kt

@ -229,7 +229,7 @@ private fun DefaultRoomListTopBar( @@ -229,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 }
@ -243,7 +243,7 @@ private fun DefaultRoomListTopBar( @@ -243,7 +243,7 @@ private fun DefaultRoomListTopBar(
expanded = showMenu,
onDismissRequest = { showMenu = false }
) {
if (RoomListConfig.showInviteMenuItem) {
if (RoomListConfig.SHOW_INVITE_MENU_ITEM) {
DropdownMenuItem(
onClick = {
showMenu = false
@ -259,7 +259,7 @@ private fun DefaultRoomListTopBar( @@ -259,7 +259,7 @@ private fun DefaultRoomListTopBar(
}
)
}
if (RoomListConfig.showReportProblemMenuItem) {
if (RoomListConfig.SHOW_REPORT_PROBLEM_MENU_ITEM) {
DropdownMenuItem(
onClick = {
showMenu = false

2
features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt

@ -69,7 +69,7 @@ class SecureBackupRootNode @AssistedInject constructor( @@ -69,7 +69,7 @@ class SecureBackupRootNode @AssistedInject constructor(
}
private fun onLearnMoreClicked(uriHandler: UriHandler) {
uriHandler.openUri(SecureBackupConfig.LearnMoreUrl)
uriHandler.openUri(SecureBackupConfig.LEARN_MORE_URL)
}
@Composable

1
libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/AndroidClipboardHelper.kt

@ -31,7 +31,6 @@ import javax.inject.Inject @@ -31,7 +31,6 @@ import javax.inject.Inject
class AndroidClipboardHelper @Inject constructor(
@ApplicationContext private val context: Context,
) : ClipboardHelper {
private val clipboardManager = requireNotNull(context.getSystemService<ClipboardManager>())
override fun copyPlainText(text: String) {

1
libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/FakeClipboardHelper.kt

@ -17,7 +17,6 @@ @@ -17,7 +17,6 @@
package io.element.android.libraries.androidutils.clipboard
class FakeClipboardHelper : ClipboardHelper {
var clipboardContents: Any? = null
override fun copyPlainText(text: String) {

1
libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DefaultDiffCallback.kt

@ -26,7 +26,6 @@ internal class DefaultDiffCallback<T>( @@ -26,7 +26,6 @@ internal class DefaultDiffCallback<T>(
private val newList: List<T>,
private val areItemsTheSame: (oldItem: T?, newItem: T?) -> Boolean,
) : DiffUtil.Callback() {
override fun getOldListSize(): Int {
return oldList.size
}

1
libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCache.kt

@ -40,7 +40,6 @@ interface MutableDiffCache<E> : DiffCache<E> { @@ -40,7 +40,6 @@ interface MutableDiffCache<E> : DiffCache<E> {
*
*/
class MutableListDiffCache<E>(private val mutableList: MutableList<E?> = ArrayList()) : MutableDiffCache<E> {
override fun removeAt(index: Int): E? {
return mutableList.removeAt(index)
}

1
libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCacheInvalidator.kt

@ -36,7 +36,6 @@ interface DiffCacheInvalidator<T> { @@ -36,7 +36,6 @@ interface DiffCacheInvalidator<T> {
* It invalidates the cache by setting values to null.
*/
class DefaultDiffCacheInvalidator<T> : DiffCacheInvalidator<T> {
override fun onChanged(position: Int, count: Int, cache: MutableDiffCache<T>) {
for (i in position until position + count) {
// Invalidate cache

1
libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/diff/DiffCacheUpdater.kt

@ -36,7 +36,6 @@ class DiffCacheUpdater<ListItem, CachedItem>( @@ -36,7 +36,6 @@ class DiffCacheUpdater<ListItem, CachedItem>(
private val cacheInvalidator: DiffCacheInvalidator<CachedItem> = DefaultDiffCacheInvalidator(),
private val areItemsTheSame: (oldItem: ListItem?, newItem: ListItem?) -> Boolean,
) {
private val lock = Object()
private var prevOriginalList: List<ListItem> = emptyList()

1
libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncAction.kt

@ -27,7 +27,6 @@ import kotlin.contracts.contract @@ -27,7 +27,6 @@ import kotlin.contracts.contract
*/
@Stable
sealed interface AsyncAction<out T> {
/**
* Represents an uninitialized operation (i.e. yet to be run by the user).
*/

1
libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncData.kt

@ -27,7 +27,6 @@ import kotlin.contracts.contract @@ -27,7 +27,6 @@ import kotlin.contracts.contract
*/
@Stable
sealed interface AsyncData<out T> {
/**
* Represents a failed operation.
*

1
libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/HideOverlayBackPressHandler.kt

@ -25,7 +25,6 @@ import kotlinx.coroutines.flow.map @@ -25,7 +25,6 @@ import kotlinx.coroutines.flow.map
class HideOverlayBackPressHandler<NavTarget : Any> :
BaseBackPressHandlerStrategy<NavTarget, BackStack.State>() {
override val canHandleBackPressFlow: Flow<Boolean> by lazy {
navModel.elements.map(::areThereElements)
}

1
libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/Overlay.kt

@ -40,7 +40,6 @@ class Overlay<NavTarget : Any>( @@ -40,7 +40,6 @@ class Overlay<NavTarget : Any>(
savedStateMap = savedStateMap,
key = key,
) {
override val initialElements: NavElements<NavTarget, BackStack.State>
get() = emptyList()
}

1
libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/operation/Hide.kt

@ -24,7 +24,6 @@ import kotlinx.parcelize.Parcelize @@ -24,7 +24,6 @@ import kotlinx.parcelize.Parcelize
@Parcelize
class Hide<T : Any> : OverlayOperation<T> {
override fun isApplicable(elements: BackStackElements<T>): Boolean =
elements.any { it.targetState == BackStack.State.ACTIVE }

1
libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/overlay/operation/Show.kt

@ -29,7 +29,6 @@ import kotlinx.parcelize.RawValue @@ -29,7 +29,6 @@ import kotlinx.parcelize.RawValue
data class Show<T : Any>(
private val element: @RawValue T
) : OverlayOperation<T> {
override fun isApplicable(elements: BackStackElements<T>): Boolean =
element != elements.activeElement

1
libraries/architecture/src/test/kotlin/io/element/android/libraries/architecture/AsyncDataKtTest.kt

@ -84,7 +84,6 @@ class AsyncDataKtTest { @@ -84,7 +84,6 @@ class AsyncDataKtTest {
private class TestableMutableState<T>(
value: T
) : MutableState<T> {
@Suppress("ktlint:standard:property-naming")
private val _deque = ArrayDeque<T>(listOf(value))

1
libraries/core/src/main/kotlin/io/element/android/libraries/core/cache/CircularCache.kt vendored

@ -21,7 +21,6 @@ package io.element.android.libraries.core.cache @@ -21,7 +21,6 @@ package io.element.android.libraries.core.cache
* This class is not thread safe.
*/
class CircularCache<T : Any>(cacheSize: Int, factory: (Int) -> Array<T?>) {
companion object {
inline fun <reified T : Any> create(cacheSize: Int) = CircularCache(cacheSize) { Array<T?>(cacheSize) { null } }
}

14
libraries/core/src/main/kotlin/io/element/android/libraries/core/extensions/BasicExtensions.kt

@ -26,20 +26,6 @@ inline fun <T> T.ooi(block: (T) -> Unit): T = also(block) @@ -26,20 +26,6 @@ inline fun <T> 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:

1
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 @@ -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)

1
libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/BasicExtensionsTest.kt

@ -20,7 +20,6 @@ import org.junit.Assert.assertEquals @@ -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)

1
libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/ResultTest.kt

@ -20,7 +20,6 @@ import com.google.common.truth.Truth.assertThat @@ -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")

1
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 @@ -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()

1
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt

@ -25,7 +25,6 @@ data class AvatarData( @@ -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 ->

1
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 @@ -29,7 +29,6 @@ import io.element.android.libraries.designsystem.theme.components.TextButton
*/
@Immutable
sealed interface ButtonVisuals {
val action: () -> Unit
/**

3
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/keyboard/Keyboard.kt

@ -29,7 +29,8 @@ import androidx.lifecycle.Lifecycle @@ -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...

1
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferencePage.kt

@ -95,7 +95,6 @@ private fun PreferenceTopAppBar( @@ -95,7 +95,6 @@ private fun PreferenceTopAppBar(
overflow = TextOverflow.Ellipsis
)
}
)
}

2
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceTextField.kt

@ -55,7 +55,7 @@ fun PreferenceTextField( @@ -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,

7
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Button.kt

@ -259,11 +259,14 @@ sealed interface IconSource { @@ -259,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) {

3
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 @@ -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(),

1
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListItem.kt

@ -378,7 +378,6 @@ internal fun ListItemDisabledWithIconPreview() = PreviewItems.OneLineListItemPre @@ -378,7 +378,6 @@ internal fun ListItemDisabledWithIconPreview() = PreviewItems.OneLineListItemPre
@Suppress("ModifierMissing")
private object PreviewItems {
@Composable
fun ThreeLinesListItemPreview(
modifier: Modifier = Modifier,

1
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/ListSupportingText.kt

@ -81,7 +81,6 @@ fun ListSupportingText( @@ -81,7 +81,6 @@ fun ListSupportingText(
}
object ListSupportingTextDefaults {
/** Specifies the padding to use for the supporting text. */
@Immutable
sealed interface Padding {

1
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt

@ -151,7 +151,6 @@ fun <T> SearchBar( @@ -151,7 +151,6 @@ fun <T> SearchBar(
}
object ElementSearchBarDefaults {
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun inactiveColors() = SearchBarDefaults.colors(

2
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Slider.kt

@ -37,7 +37,7 @@ fun Slider( @@ -37,7 +37,7 @@ fun Slider(
modifier: Modifier = Modifier,
enabled: Boolean = true,
valueRange: ClosedFloatingPointRange<Float> = 0f..1f,
/*@IntRange(from = 0)*/
// @IntRange(from = 0)
steps: Int = 0,
onValueChangeFinished: (() -> Unit)? = null,
colors: SliderColors = SliderDefaults.colors(),

8
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/bottomsheet/CustomBottomSheetScaffold.kt

@ -282,11 +282,13 @@ private fun CustomStandardBottomSheet( @@ -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( @@ -314,7 +316,6 @@ private fun CustomStandardBottomSheet(
*/
@ExperimentalFoundationApi
class DraggableAnchorsConfig<T> {
internal val anchors = mutableMapOf<T, Float>()
/**
@ -344,7 +345,6 @@ internal fun <T : Any> DraggableAnchors( @@ -344,7 +345,6 @@ internal fun <T : Any> DraggableAnchors(
): DraggableAnchors<T> = MapDraggableAnchors(DraggableAnchorsConfig<T>().apply(builder).anchors)
private class MapDraggableAnchors<T>(private val anchors: Map<T, Float>) : DraggableAnchors<T> {
override fun positionOf(value: T): Float = anchors[value] ?: Float.NaN
override fun hasAnchorFor(value: T) = anchors.containsKey(value)

1
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/bottomsheet/CustomSheetState.kt

@ -51,7 +51,6 @@ constructor( @@ -51,7 +51,6 @@ constructor(
confirmValueChange: (SheetValue) -> Boolean = { true },
internal val skipHiddenState: Boolean = false,
) {
/**
* State of a sheet composable, such as [ModalBottomSheet]
*

3
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 @@ -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) {

1
libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/colors/AvatarColorsTest.kt

@ -22,7 +22,6 @@ import io.element.android.compound.theme.avatarColorsLight @@ -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)

1
libraries/designsystem/src/test/kotlin/io/element/android/libraries/designsystem/utils/snackbar/SnackbarDispatcherTests.kt

@ -22,7 +22,6 @@ import kotlinx.coroutines.test.runTest @@ -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()

1
libraries/encrypted-db/src/main/kotlin/io/element/encrypteddb/passphrase/RandomSecretPassphraseProvider.kt

@ -33,7 +33,6 @@ class RandomSecretPassphraseProvider( @@ -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()) {

1
libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapApplier.kt

@ -36,7 +36,6 @@ internal class MapApplier( @@ -36,7 +36,6 @@ internal class MapApplier(
val style: Style,
val symbolManager: SymbolManager,
) : AbstractApplier<MapNode>(MapNodeRoot) {
private val decorations = mutableListOf<MapNode>()
override fun onClear() {

1
libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapUpdater.kt

@ -42,7 +42,6 @@ internal class MapPropertiesNode( @@ -42,7 +42,6 @@ internal class MapPropertiesNode(
cameraPositionState: CameraPositionState,
locationSettings: MapLocationSettings,
) : MapNode {
init {
map.locationComponent.activateLocationComponent(
LocationComponentActivationOptions.Builder(context, style)

2
libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverter.kt

@ -34,7 +34,7 @@ object MatrixToConverter { @@ -34,7 +34,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

4
libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilder.kt

@ -26,7 +26,7 @@ object PermalinkBuilder { @@ -26,7 +26,7 @@ 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 +80,7 @@ object PermalinkBuilder { @@ -80,7 +80,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() {

8
libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/AttachmentThumbnail.kt

@ -136,7 +136,13 @@ fun AttachmentThumbnail( @@ -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

5
libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/CoilMediaFetcher.kt

@ -41,7 +41,6 @@ internal class CoilMediaFetcher( @@ -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( @@ -126,9 +125,7 @@ internal class CoilMediaFetcher(
class AvatarFactory(
private val context: Context,
private val client: MatrixClient
) :
Fetcher.Factory<AvatarData> {
) : Fetcher.Factory<AvatarData> {
override fun create(
data: AvatarData,
options: Options,

1
libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestData.kt

@ -33,7 +33,6 @@ data class MediaRequestData( @@ -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

1
libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/ToHtmlDocumentTest.kt

@ -26,7 +26,6 @@ import org.robolectric.RobolectricTestRunner @@ -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(

1
libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/ToPlainTextTest.kt

@ -28,7 +28,6 @@ import org.robolectric.RobolectricTestRunner @@ -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(

1
libraries/network/src/main/kotlin/io/element/android/libraries/network/interceptors/FormattedJsonHttpLogger.kt

@ -25,7 +25,6 @@ import timber.log.Timber @@ -25,7 +25,6 @@ import timber.log.Timber
internal class FormattedJsonHttpLogger(
private val level: HttpLoggingInterceptor.Level
) : HttpLoggingInterceptor.Logger {
companion object {
private const val INDENT_SPACE = 2
}

4
libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/PushersManager.kt

@ -50,7 +50,7 @@ class PushersManager @Inject constructor( @@ -50,7 +50,7 @@ class PushersManager @Inject constructor(
pushGatewayNotifyRequest.execute(
PushGatewayNotifyRequest.Params(
url = "TODO", // unifiedPushHelper.getPushGateway() ?: return,
appId = PushConfig.pusher_app_id,
appId = PushConfig.PUSHER_APP_ID,
pushKey = "TODO", // unifiedPushHelper.getEndpointOrToken().orEmpty(),
eventId = TEST_EVENT_ID
)
@ -85,7 +85,7 @@ class PushersManager @Inject constructor( @@ -85,7 +85,7 @@ class PushersManager @Inject constructor(
): SetHttpPusherData =
SetHttpPusherData(
pushKey = pushKey,
appId = PushConfig.pusher_app_id,
appId = PushConfig.PUSHER_APP_ID,
profileTag = DEFAULT_PUSHER_FILE_TAG + "_" /* TODO + abs(activeSessionHolder.getActiveSession().myUserId.hashCode())*/,
lang = "en", // TODO localeProvider.current().language,
appDisplayName = buildMeta.applicationName,

2
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( @@ -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)

2
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( @@ -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 ->

Loading…
Cancel
Save