From 8f09fd62d9c20441145ca9adf637995bd73acf0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Mon, 1 Sep 2025 17:11:38 +0200 Subject: [PATCH] Fixes after rebase --- .../android/x/intent/DefaultIntentProvider.kt | 2 +- .../impl/DefaultAnalyticsEntryPoint.kt | 2 +- .../call/impl/ui/LanguageTagProvider.kt | 2 +- .../call/impl/utils/CallIntentDataParser.kt | 2 +- .../DefaultCallAnalyticCredentialsProvider.kt | 2 +- .../impl/utils/DefaultCurrentCallService.kt | 2 +- .../DefaultChangeRoomMemberRolesEntyPoint.kt | 2 +- .../impl/DefaultCreateRoomEntryPoint.kt | 2 +- .../DefaultAccountDeactivationEntryPoint.kt | 2 +- .../impl/DefaultEnterpriseService.kt | 2 +- .../impl/DefaultSessionEnterpriseService.kt | 2 +- .../ftue/impl/DefaultFtueEntryPoint.kt | 2 +- .../home/impl/DefaultHomeEntryPoint.kt | 2 +- .../DefaultFilterSelectionStrategy.kt | 2 +- .../DefaultAcceptDeclineInviteView.kt | 2 +- .../declineandblock/DeclineAndBlockNode.kt | 16 +- .../DefaultDeclineAndBlockEntryPoint.kt | 2 +- .../impl/DefaultInvitePeopleRenderer.kt | 2 +- .../impl/DefaultJoinRoomEntryPoint.kt | 2 +- .../DefaultKnockRequestsListEntryPoint.kt | 2 +- .../impl/InternalLeaveRoomRenderer.kt | 2 +- .../DefaultOpenSourcesLicensesEntryPoint.kt | 2 +- .../location/impl/DefaultLocationService.kt | 2 +- .../send/DefaultSendLocationEntryPoint.kt | 2 +- .../show/DefaultShowLocationEntryPoint.kt | 2 +- .../impl/DefaultLockScreenEntryPoint.kt | 2 +- .../login/impl/DefaultLoginEntryPoint.kt | 2 +- .../login/impl/DefaultLoginIntentResolver.kt | 2 +- .../login/impl/DefaultLoginUserStory.kt | 0 .../loginpassword/LoginPasswordPresenter.kt | 1 - .../onboarding/OnBoardingLogoResIdProvider.kt | 11 +- .../impl/di/FakeMergedQrCodeLoginComponent.kt | 0 .../login/impl/di/FakeQrCodeLoginGraph.kt | 11 +- .../logout/impl/DefaultLogoutEntryPoint.kt | 2 +- .../impl/direct/DefaultDirectLogoutView.kt | 2 +- .../impl/draft/VolatileComposerDraftStore.kt | 2 +- .../messages/impl/link/LinkChecker.kt | 2 +- .../DefaultMessageComposerContext.kt | 2 +- .../RichTextEditorStateFactory.kt | 2 +- .../suggestions/SuggestionsProcessor.kt | 2 +- .../impl/timeline/TimelineItemIndexer.kt | 2 +- .../ReadReceiptBottomSheetPresenter.kt | 2 +- ...eItemContentFailedToParseMessageFactory.kt | 2 +- ...ineItemContentFailedToParseStateFactory.kt | 2 +- .../TimelineItemContentRedactedFactory.kt | 2 +- .../event/TimelineItemContentUTDFactory.kt | 2 +- .../timeline/groups/TimelineItemGrouper.kt | 2 +- .../create/DefaultCreatePollEntryPoint.kt | 2 +- .../history/DefaultPollHistoryEntryPoint.kt | 2 +- .../preferences/impl/DefaultCacheService.kt | 2 +- .../impl/DefaultPreferencesEntryPoint.kt | 2 +- .../preferences/impl/about/AboutPresenter.kt | 2 +- .../bugreport/DefaultBugReportEntryPoint.kt | 2 +- .../rageshake/impl/di/RageshakeBindings.kt | 4 +- .../impl/reporter/BugReportAppNameProvider.kt | 2 +- .../impl/DefaultReportRoomEntryPoint.kt | 2 +- .../DefaultRoomAliasResolverEntryPoint.kt | 2 +- .../impl/DefaultRoomDetailsEntryPoint.kt | 2 +- .../impl/DefaultRoomDirectoryEntryPoint.kt | 2 +- .../DefaultRoomMemberModerationRenderer.kt | 2 +- .../impl/DefaultSecureBackupEntryPoint.kt | 2 +- .../setup/SecureBackupSetupStateMachine.kt | 2 +- .../impl/tools/RecoveryKeyTools.kt | 2 +- .../share/impl/DefaultShareEntryPoint.kt | 2 +- .../impl/DefaultSignedOutEntryPoint.kt | 2 +- .../impl/DefaultStartChatEntryPoint.kt | 2 +- .../impl/userlist/UserListDataStore.kt | 2 +- .../impl/DefaultUserProfileEntryPoint.kt | 2 +- .../DefaultIncomingVerificationEntryPoint.kt | 2 +- .../DefaultOutgoingVerificationEntryPoint.kt | 2 +- .../impl/outgoing/OutgoingVerificationNode.kt | 26 +- .../outgoing/OutgoingVerificationPresenter.kt | 310 ++++++++++-------- .../viewfolder/impl/DefaultTextFileViewer.kt | 2 +- .../impl/DefaultViewFolderEntryPoint.kt | 2 +- .../impl/AESEncryptionDecryptionService.kt | 2 +- .../deeplink/impl/DefaultDeepLinkCreator.kt | 3 +- .../deeplink/impl/DefaultDeeplinkParser.kt | 2 +- .../element/android/libraries/di/AppScope.kt | 10 - libraries/matrix/api/build.gradle.kts | 3 + .../libraries/matrix/api/mxc/MxcTools.kt | 2 +- .../matrix/impl/ClientBuilderProvider.kt | 2 +- .../libraries/matrix/impl/RustSdkMetadata.kt | 2 +- .../qrlogin/RustQrCodeLoginDataFactory.kt | 2 +- .../DefaultUserCertificatesProvider.kt | 2 +- .../impl/keys/DefaultPassphraseGenerator.kt | 2 +- .../permalink/DefaultMatrixToConverter.kt | 2 +- .../impl/permalink/DefaultPermalinkBuilder.kt | 2 +- .../impl/platform/RustInitPlatformService.kt | 2 +- .../room/TimelineEventTypeFilterFactory.kt | 2 +- .../impl/room/alias/DefaultRoomAliasHelper.kt | 2 +- .../ui/messages/RoomMemberProfilesCache.kt | 2 +- .../matrix/ui/messages/RoomNamesCache.kt | 2 +- .../impl/DefaultMediaGalleryEntryPoint.kt | 2 +- .../impl/DefaultMediaViewerEntryPoint.kt | 2 +- .../datasource/MediaItemsPostProcessor.kt | 2 +- .../FileExtensionExtractorWithValidation.kt | 2 +- .../impl/viewer/PagerKeysHandler.kt | 2 +- .../oidc/impl/DefaultOidcActionFlow.kt | 2 +- .../AccompanistPermissionStateProvider.kt | 2 +- .../DefaultPreferencesDataStoreFactory.kt | 2 +- .../notifications/ReplyMessageExtractor.kt | 2 +- .../troubleshoot/DiagnosticPushHandler.kt | 2 +- .../troubleshoot/NotificationClickHandler.kt | 2 +- .../firebase/FirebasePushParser.kt | 2 +- .../unifiedpush/GuardServiceStarter.kt | 2 +- .../unifiedpush/UnifiedPushParser.kt | 2 +- .../EndpointRegistrationHandler.kt | 2 +- .../DefaultPushClientSecretFactory.kt | 2 +- .../impl/DefaultRoomSelectEntryPoint.kt | 2 +- ...faultNotificationTroubleShootEntryPoint.kt | 2 +- .../history/DefaultPushHistoryEntryPoint.kt | 2 +- .../impl/audio/DBovAudioLevelCalculator.kt | 2 +- .../impl/di/VoiceRecorderModule.kt | 2 +- .../analytics/noop/NoopAnalyticsService.kt | 2 +- .../analytics/noop/NoopScreenTracker.kt | 2 +- .../sdk/DefaultBuildVersionSdkIntProvider.kt | 2 +- .../impl/systemclock/DefaultSystemClock.kt | 2 +- 117 files changed, 310 insertions(+), 295 deletions(-) delete mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginUserStory.kt delete mode 100644 features/login/impl/src/test/kotlin/io/element/android/features/login/impl/di/FakeMergedQrCodeLoginComponent.kt delete mode 100644 libraries/di/src/main/kotlin/io/element/android/libraries/di/AppScope.kt diff --git a/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt b/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt index 52c7293075..746f570447 100644 --- a/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt +++ b/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt @@ -14,7 +14,7 @@ import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject import io.element.android.libraries.deeplink.api.DeepLinkCreator -import io.element.android.libraries.di.ApplicationContext +import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId diff --git a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt index cfc0dec548..134535e881 100644 --- a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt +++ b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt @@ -17,7 +17,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultAnalyticsEntryPoint() : AnalyticsEntryPoint { +class DefaultAnalyticsEntryPoint : AnalyticsEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/LanguageTagProvider.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/LanguageTagProvider.kt index df2dc77d02..74016fd210 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/LanguageTagProvider.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/LanguageTagProvider.kt @@ -20,7 +20,7 @@ interface LanguageTagProvider { @ContributesBinding(AppScope::class) @Inject -class DefaultLanguageTagProvider() : LanguageTagProvider { +class DefaultLanguageTagProvider : LanguageTagProvider { @Composable override fun provideLanguageTag(): String? { return LocalConfiguration.current.locales.get(0)?.toLanguageTag() diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/CallIntentDataParser.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/CallIntentDataParser.kt index bf3720f88e..09fcfe3940 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/CallIntentDataParser.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/CallIntentDataParser.kt @@ -12,7 +12,7 @@ import androidx.core.net.toUri import dev.zacsweers.metro.Inject @Inject -class CallIntentDataParser() { +class CallIntentDataParser { private val validHttpSchemes = sequenceOf("https") private val knownHosts = sequenceOf( "call.element.io", diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallAnalyticCredentialsProvider.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallAnalyticCredentialsProvider.kt index 3cb510db60..aafb7fdde0 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallAnalyticCredentialsProvider.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallAnalyticCredentialsProvider.kt @@ -15,7 +15,7 @@ import io.element.android.libraries.matrix.api.widget.CallAnalyticCredentialsPro @ContributesBinding(AppScope::class) @Inject -class DefaultCallAnalyticCredentialsProvider() : CallAnalyticCredentialsProvider { +class DefaultCallAnalyticCredentialsProvider : CallAnalyticCredentialsProvider { override val posthogUserId: String? = BuildConfig.POSTHOG_USER_ID.takeIf { it.isNotBlank() } override val posthogApiHost: String? = BuildConfig.POSTHOG_API_HOST.takeIf { it.isNotBlank() } override val posthogApiKey: String? = BuildConfig.POSTHOG_API_KEY.takeIf { it.isNotBlank() } diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCurrentCallService.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCurrentCallService.kt index 9d577f4ce9..3ae65e338b 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCurrentCallService.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCurrentCallService.kt @@ -18,7 +18,7 @@ import kotlinx.coroutines.flow.MutableStateFlow @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) @Inject -class DefaultCurrentCallService() : CurrentCallService { +class DefaultCurrentCallService : CurrentCallService { override val currentCall = MutableStateFlow(CurrentCall.None) fun onCallStarted(call: CurrentCall) { diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPoint.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPoint.kt index 53c3bedf7f..8a9117776d 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPoint.kt +++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPoint.kt @@ -19,7 +19,7 @@ import io.element.android.libraries.matrix.api.room.JoinedRoom @ContributesBinding(SessionScope::class) @Inject -class DefaultChangeRoomMemberRolesEntyPoint() : ChangeRoomMemberRolesEntryPoint { +class DefaultChangeRoomMemberRolesEntyPoint : ChangeRoomMemberRolesEntryPoint { override fun builder(parentNode: Node, buildContext: BuildContext): ChangeRoomMemberRolesEntryPoint.Builder { return object : ChangeRoomMemberRolesEntryPoint.Builder { private lateinit var changeRoomMemberRolesListType: ChangeRoomMemberRolesListType 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 6058a6de6f..0d62542504 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 @@ -18,7 +18,7 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) @Inject -class DefaultCreateRoomEntryPoint() : CreateRoomEntryPoint { +class DefaultCreateRoomEntryPoint : CreateRoomEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): CreateRoomEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt b/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt index 0db34dc9f3..0f34e18b9f 100644 --- a/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt +++ b/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt @@ -17,7 +17,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultAccountDeactivationEntryPoint() : AccountDeactivationEntryPoint { +class DefaultAccountDeactivationEntryPoint : AccountDeactivationEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } diff --git a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt index d0fba5ceeb..4d52e83a8f 100644 --- a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt +++ b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt @@ -20,7 +20,7 @@ import kotlinx.coroutines.flow.flowOf @ContributesBinding(AppScope::class) @Inject -class DefaultEnterpriseService() : EnterpriseService { +class DefaultEnterpriseService : EnterpriseService { override val isEnterpriseBuild = false override suspend fun isEnterpriseUser(sessionId: SessionId) = false diff --git a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultSessionEnterpriseService.kt b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultSessionEnterpriseService.kt index 0c515f1b97..f25c38531a 100644 --- a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultSessionEnterpriseService.kt +++ b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultSessionEnterpriseService.kt @@ -14,7 +14,7 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) @Inject -class DefaultSessionEnterpriseService() : SessionEnterpriseService { +class DefaultSessionEnterpriseService : SessionEnterpriseService { override suspend fun init() = Unit override suspend fun isElementCallAvailable(): Boolean = true } 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 1f9467efbc..db3c6a9c91 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 @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultFtueEntryPoint() : FtueEntryPoint { +class DefaultFtueEntryPoint : FtueEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): FtueEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt index 2f28cb836d..272a9bc9b1 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultHomeEntryPoint() : HomeEntryPoint { +class DefaultHomeEntryPoint : HomeEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): HomeEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/DefaultFilterSelectionStrategy.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/DefaultFilterSelectionStrategy.kt index acde851de5..c1da8b18b2 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/DefaultFilterSelectionStrategy.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/DefaultFilterSelectionStrategy.kt @@ -15,7 +15,7 @@ import kotlinx.coroutines.flow.MutableStateFlow @ContributesBinding(SessionScope::class) @Inject -class DefaultFilterSelectionStrategy() : FilterSelectionStrategy { +class DefaultFilterSelectionStrategy : FilterSelectionStrategy { private val selectedFilters = LinkedHashSet() override val filterSelectionStates = MutableStateFlow(buildFilters()) diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/DefaultAcceptDeclineInviteView.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/DefaultAcceptDeclineInviteView.kt index 4d3b26da1d..487865065d 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/DefaultAcceptDeclineInviteView.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/DefaultAcceptDeclineInviteView.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.matrix.api.core.RoomId @ContributesBinding(SessionScope::class) @Inject -class DefaultAcceptDeclineInviteView() : AcceptDeclineInviteView { +class DefaultAcceptDeclineInviteView : AcceptDeclineInviteView { @Composable override fun Render( state: AcceptDeclineInviteState, diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DeclineAndBlockNode.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DeclineAndBlockNode.kt index 7965c5f500..9d319adf1d 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DeclineAndBlockNode.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DeclineAndBlockNode.kt @@ -25,20 +25,20 @@ import io.element.android.libraries.di.SessionScope class DeclineAndBlockNode( @Assisted buildContext: BuildContext, @Assisted plugins: List, -// presenterFactory: DeclineAndBlockPresenter.Factory, + presenterFactory: DeclineAndBlockPresenter.Factory, ) : Node(buildContext, plugins = plugins) { data class Inputs(val inviteData: InviteData) : NodeInputs private val inviteData = inputs().inviteData -// private val presenter = presenterFactory.create(inviteData) + private val presenter = presenterFactory.create(inviteData) @Composable override fun View(modifier: Modifier) { -// val state = presenter.present() -// DeclineAndBlockView( -// state = state, -// onBackClick = ::navigateUp, -// modifier = modifier -// ) + val state = presenter.present() + DeclineAndBlockView( + state = state, + onBackClick = ::navigateUp, + modifier = modifier + ) } } diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt index 217da56806..ea5456feb2 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultDeclineAndBlockEntryPoint() : DeclineInviteAndBlockEntryPoint { +class DefaultDeclineAndBlockEntryPoint : DeclineInviteAndBlockEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext, inviteData: InviteData): Node { val inputs = DeclineAndBlockNode.Inputs(inviteData) return parentNode.createNode(buildContext, plugins = listOf(inputs)) diff --git a/features/invitepeople/impl/src/main/kotlin/io/element/android/features/invitepeople/impl/DefaultInvitePeopleRenderer.kt b/features/invitepeople/impl/src/main/kotlin/io/element/android/features/invitepeople/impl/DefaultInvitePeopleRenderer.kt index 0e3fd11c21..3301b7ec2c 100644 --- a/features/invitepeople/impl/src/main/kotlin/io/element/android/features/invitepeople/impl/DefaultInvitePeopleRenderer.kt +++ b/features/invitepeople/impl/src/main/kotlin/io/element/android/features/invitepeople/impl/DefaultInvitePeopleRenderer.kt @@ -17,7 +17,7 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) @Inject -class DefaultInvitePeopleRenderer() : InvitePeopleRenderer { +class DefaultInvitePeopleRenderer : InvitePeopleRenderer { @Composable override fun Render(state: InvitePeopleState, modifier: Modifier) { if (state is DefaultInvitePeopleState) { diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt index 4c3802d195..5f217b26c2 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt @@ -17,7 +17,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultJoinRoomEntryPoint() : JoinRoomEntryPoint { +class DefaultJoinRoomEntryPoint : JoinRoomEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: JoinRoomEntryPoint.Inputs): Node { return parentNode.createNode( buildContext = buildContext, diff --git a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt index 3559a30607..675f3bee9e 100644 --- a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt +++ b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt @@ -17,7 +17,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultKnockRequestsListEntryPoint() : KnockRequestsListEntryPoint { +class DefaultKnockRequestsListEntryPoint : KnockRequestsListEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } diff --git a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomRenderer.kt b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomRenderer.kt index c20d2a9401..be1aa3b55a 100644 --- a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomRenderer.kt +++ b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/InternalLeaveRoomRenderer.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.matrix.api.core.RoomId @ContributesBinding(SessionScope::class) @Inject -class InternalLeaveRoomRenderer() : LeaveRoomRenderer { +class InternalLeaveRoomRenderer : LeaveRoomRenderer { @Composable override fun Render(state: LeaveRoomState, onSelectNewOwners: (RoomId) -> Unit, modifier: Modifier) { if (state is InternalLeaveRoomState) { diff --git a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt index 92795494b3..425346a90e 100644 --- a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt +++ b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt @@ -17,7 +17,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultOpenSourcesLicensesEntryPoint() : OpenSourceLicensesEntryPoint { +class DefaultOpenSourcesLicensesEntryPoint : OpenSourceLicensesEntryPoint { override fun getNode(node: Node, buildContext: BuildContext): Node { return node.createNode(buildContext) } diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/DefaultLocationService.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/DefaultLocationService.kt index 7f682c8c3a..5be8e7c093 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/DefaultLocationService.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/DefaultLocationService.kt @@ -15,7 +15,7 @@ import io.element.android.features.location.api.LocationService @ContributesBinding(AppScope::class) @Inject -class DefaultLocationService() : LocationService { +class DefaultLocationService : LocationService { override fun isServiceAvailable(): Boolean { return BuildConfig.MAPTILER_API_KEY.isNotEmpty() } diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt index b8ba3a1a73..c42be68bf1 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.matrix.api.timeline.Timeline @ContributesBinding(AppScope::class) @Inject -class DefaultSendLocationEntryPoint() : SendLocationEntryPoint { +class DefaultSendLocationEntryPoint : SendLocationEntryPoint { override fun builder(timelineMode: Timeline.Mode): SendLocationEntryPoint.Builder { return Builder(timelineMode) } diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt index 1e7d529117..d226a01ede 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt @@ -17,7 +17,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultShowLocationEntryPoint() : ShowLocationEntryPoint { +class DefaultShowLocationEntryPoint : ShowLocationEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: ShowLocationEntryPoint.Inputs): Node { return parentNode.createNode(buildContext, listOf(inputs)) } 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 c27483b792..1155a6fdcd 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 @@ -20,7 +20,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultLockScreenEntryPoint() : LockScreenEntryPoint { +class DefaultLockScreenEntryPoint : LockScreenEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext, navTarget: LockScreenEntryPoint.Target): LockScreenEntryPoint.NodeBuilder { val callbacks = mutableListOf() 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 222b6e2c10..7da2bdf758 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 @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultLoginEntryPoint() : LoginEntryPoint { +class DefaultLoginEntryPoint : LoginEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): LoginEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginIntentResolver.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginIntentResolver.kt index 652cd1e12c..4851a9ab7c 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginIntentResolver.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginIntentResolver.kt @@ -16,7 +16,7 @@ import io.element.android.features.login.api.LoginParams @ContributesBinding(AppScope::class) @Inject -class DefaultLoginIntentResolver() : LoginIntentResolver { +class DefaultLoginIntentResolver : LoginIntentResolver { override fun parse(uriString: String): LoginParams? { val uri = uriString.toUri() if (uri.host != "mobile.element.io") return null diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginUserStory.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginUserStory.kt deleted file mode 100644 index e69de29bb2..0000000000 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 b492c2201b..80a5711d52 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 @@ -16,7 +16,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.saveable.rememberSaveable import dev.zacsweers.metro.Inject -import io.element.android.features.login.impl.DefaultLoginUserStory import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingLogoResIdProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingLogoResIdProvider.kt index 03cebff188..73ac06bbe2 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingLogoResIdProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingLogoResIdProvider.kt @@ -9,17 +9,18 @@ package io.element.android.features.login.impl.screens.onboarding import android.annotation.SuppressLint import android.content.Context -import com.squareup.anvil.annotations.ContributesBinding -import io.element.android.libraries.di.AppScope -import io.element.android.libraries.di.ApplicationContext -import javax.inject.Inject +import dev.zacsweers.metro.AppScope +import dev.zacsweers.metro.ContributesBinding +import dev.zacsweers.metro.Inject +import io.element.android.libraries.di.annotations.ApplicationContext fun interface OnBoardingLogoResIdProvider { fun get(): Int? } @ContributesBinding(AppScope::class) -class DefaultOnBoardingLogoResIdProvider @Inject constructor( +@Inject +class DefaultOnBoardingLogoResIdProvider( @ApplicationContext private val context: Context, ) : OnBoardingLogoResIdProvider { @SuppressLint("DiscouragedApi") diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/di/FakeMergedQrCodeLoginComponent.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/di/FakeMergedQrCodeLoginComponent.kt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/di/FakeQrCodeLoginGraph.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/di/FakeQrCodeLoginGraph.kt index 640a103f93..5a2ca177e9 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/di/FakeQrCodeLoginGraph.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/di/FakeQrCodeLoginGraph.kt @@ -10,11 +10,10 @@ package io.element.android.features.login.impl.di import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import io.element.android.features.login.impl.qrcode.FakeQrCodeLoginManager import io.element.android.features.login.impl.qrcode.QrCodeLoginFlowNode import io.element.android.features.login.impl.qrcode.QrCodeLoginManager import io.element.android.libraries.architecture.AssistedNodeFactory -import io.element.android.libraries.architecture.createNode +import kotlin.reflect.KClass internal class FakeQrCodeLoginGraph( private val qrCodeLoginManager: QrCodeLoginManager, @@ -23,7 +22,7 @@ internal class FakeQrCodeLoginGraph( return mapOf( QrCodeLoginFlowNode::class to object : AssistedNodeFactory { override fun create(buildContext: BuildContext, plugins: List): QrCodeLoginFlowNode { - return createNode(buildContext, plugins) + error("This factory should not be called in tests") } } ) @@ -33,9 +32,9 @@ internal class FakeQrCodeLoginGraph( internal class Builder( private val qrCodeLoginManager: QrCodeLoginManager, - ) : QrCodeLoginComponent.Factory { - override fun create(): QrCodeLoginComponent { - return FakeQrCodeLoginComponent(qrCodeLoginManager) + ) : QrCodeLoginGraph.Factory { + override fun create(): QrCodeLoginGraph { + return FakeQrCodeLoginGraph(qrCodeLoginManager) } } } 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 3cd3fdbf08..47d4771ed9 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 @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultLogoutEntryPoint() : LogoutEntryPoint { +class DefaultLogoutEntryPoint : LogoutEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): LogoutEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutView.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutView.kt index 7bc33e961d..2cd7989cf1 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutView.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutView.kt @@ -22,7 +22,7 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) @Inject -class DefaultDirectLogoutView() : DirectLogoutView { +class DefaultDirectLogoutView : DirectLogoutView { @Composable override fun Render(state: DirectLogoutState) { val eventSink = state.eventSink diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/draft/VolatileComposerDraftStore.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/draft/VolatileComposerDraftStore.kt index c6342dac1f..138763bd13 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/draft/VolatileComposerDraftStore.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/draft/VolatileComposerDraftStore.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.matrix.api.room.draft.ComposerDraft * Currently it's used to store draft message when moving to edit mode. */ @Inject -class VolatileComposerDraftStore() : ComposerDraftStore { +class VolatileComposerDraftStore : ComposerDraftStore { private val drafts: MutableMap = mutableMapOf() override suspend fun loadDraft(roomId: RoomId, threadRoot: ThreadId?): ComposerDraft? { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkChecker.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkChecker.kt index b2e4125050..eec953f4cd 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkChecker.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkChecker.kt @@ -21,7 +21,7 @@ interface LinkChecker { @ContributesBinding(AppScope::class) @Inject -class DefaultLinkChecker() : LinkChecker { +class DefaultLinkChecker : LinkChecker { override fun isSafe(link: Link): Boolean { return if (link.url.containsRtLOverride()) { false diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DefaultMessageComposerContext.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DefaultMessageComposerContext.kt index 5158fc2e57..b895572c43 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DefaultMessageComposerContext.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DefaultMessageComposerContext.kt @@ -20,7 +20,7 @@ import io.element.android.libraries.textcomposer.model.MessageComposerMode @SingleIn(RoomScope::class) @ContributesBinding(RoomScope::class) @Inject -class DefaultMessageComposerContext() : MessageComposerContext { +class DefaultMessageComposerContext : MessageComposerContext { override var composerMode: MessageComposerMode by mutableStateOf(MessageComposerMode.Normal) internal set } 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 1211155c4c..c22325a9a5 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 @@ -21,7 +21,7 @@ interface RichTextEditorStateFactory { @ContributesBinding(AppScope::class) @Inject -class DefaultRichTextEditorStateFactory() : RichTextEditorStateFactory { +class DefaultRichTextEditorStateFactory : RichTextEditorStateFactory { @Composable override fun remember(): RichTextEditorState { return rememberRichTextEditorState() diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsProcessor.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsProcessor.kt index ef38656489..4f008705a5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsProcessor.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsProcessor.kt @@ -22,7 +22,7 @@ import io.element.android.libraries.textcomposer.model.SuggestionType * This class is responsible for processing suggestions when `@`, `/` or `#` are type in the composer. */ @Inject -class SuggestionsProcessor() { +class SuggestionsProcessor { /** * Process the suggestion. * @param suggestion The current suggestion input diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineItemIndexer.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineItemIndexer.kt index baad0470dc..36b64be0ce 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineItemIndexer.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineItemIndexer.kt @@ -16,7 +16,7 @@ import kotlinx.coroutines.sync.withLock import timber.log.Timber @Inject -class TimelineItemIndexer() { +class TimelineItemIndexer { // This is a latch to wait for the first process call private val firstProcessLatch = CompletableDeferred() private val timelineEventsIndexes = mutableMapOf() 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 2cc44452ec..33316a134a 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 @@ -17,7 +17,7 @@ import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.libraries.architecture.Presenter @Inject -class ReadReceiptBottomSheetPresenter() : Presenter { +class ReadReceiptBottomSheetPresenter : 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/factories/event/TimelineItemContentFailedToParseMessageFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentFailedToParseMessageFactory.kt index f82843af7b..ae7e49c80d 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 @@ -13,7 +13,7 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt import io.element.android.libraries.matrix.api.timeline.item.event.FailedToParseMessageLikeContent @Inject -class TimelineItemContentFailedToParseMessageFactory() { +class TimelineItemContentFailedToParseMessageFactory { 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 9c68c5e364..38edb21b55 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 @@ -13,7 +13,7 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt import io.element.android.libraries.matrix.api.timeline.item.event.FailedToParseStateContent @Inject -class TimelineItemContentFailedToParseStateFactory() { +class TimelineItemContentFailedToParseStateFactory { @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/TimelineItemContentRedactedFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentRedactedFactory.kt index 179bbd41c3..c79f2abbbc 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 @@ -13,7 +13,7 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt import io.element.android.libraries.matrix.api.timeline.item.event.RedactedContent @Inject -class TimelineItemContentRedactedFactory() { +class TimelineItemContentRedactedFactory { 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/TimelineItemContentUTDFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentUTDFactory.kt index 462add472b..0d44b7bf65 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 @@ -13,7 +13,7 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecryptContent @Inject -class TimelineItemContentUTDFactory() { +class TimelineItemContentUTDFactory { 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/groups/TimelineItemGrouper.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/groups/TimelineItemGrouper.kt index cc3b4e2f8b..2bbcc4f3ba 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 @@ -17,7 +17,7 @@ import kotlinx.collections.immutable.toImmutableList @SingleIn(RoomScope::class) @Inject -class TimelineItemGrouper() { +class TimelineItemGrouper { /** * Keys are identifier of items in a group, only one by group will be kept. * Values are the actual groupIds. 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 e27eb974b4..3c76aad7c8 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 @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultCreatePollEntryPoint() : CreatePollEntryPoint { +class DefaultCreatePollEntryPoint : CreatePollEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): CreatePollEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt index 4e55822b80..8c89a47c65 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt @@ -17,7 +17,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultPollHistoryEntryPoint() : PollHistoryEntryPoint { +class DefaultPollHistoryEntryPoint : PollHistoryEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } 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 285d8bdd88..da42cf87dd 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 @@ -19,7 +19,7 @@ import kotlinx.coroutines.flow.MutableSharedFlow @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) @Inject -class DefaultCacheService() : CacheService { +class DefaultCacheService : 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/DefaultPreferencesEntryPoint.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt index 628d7961fc..d0efc2107e 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultPreferencesEntryPoint() : PreferencesEntryPoint { +class DefaultPreferencesEntryPoint : PreferencesEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): PreferencesEntryPoint.NodeBuilder { return object : PreferencesEntryPoint.NodeBuilder { val plugins = ArrayList() 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 fb58382b33..f36dc50543 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 @@ -12,7 +12,7 @@ import dev.zacsweers.metro.Inject import io.element.android.libraries.architecture.Presenter @Inject -class AboutPresenter() : Presenter { +class AboutPresenter : Presenter { @Composable override fun present(): AboutState { return AboutState( 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 309da0b9e1..0415d36e1d 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 @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultBugReportEntryPoint() : BugReportEntryPoint { +class DefaultBugReportEntryPoint : BugReportEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): BugReportEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/di/RageshakeBindings.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/di/RageshakeBindings.kt index dc603f7b8f..e1172c31fc 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/di/RageshakeBindings.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/di/RageshakeBindings.kt @@ -7,9 +7,9 @@ package io.element.android.features.rageshake.impl.di -import com.squareup.anvil.annotations.ContributesTo +import dev.zacsweers.metro.AppScope +import dev.zacsweers.metro.ContributesTo import io.element.android.features.rageshake.impl.crash.PreferencesCrashDataStore -import io.element.android.libraries.di.AppScope @ContributesTo(AppScope::class) interface RageshakeBindings { diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/BugReportAppNameProvider.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/BugReportAppNameProvider.kt index 97092f3774..9e450d5edb 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/BugReportAppNameProvider.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/BugReportAppNameProvider.kt @@ -18,6 +18,6 @@ fun interface BugReportAppNameProvider { @ContributesBinding(AppScope::class) @Inject -class DefaultBugReportAppNameProvider() : BugReportAppNameProvider { +class DefaultBugReportAppNameProvider : BugReportAppNameProvider { override fun provide(): String = RageshakeConfig.BUG_REPORT_APP_NAME } diff --git a/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt b/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt index 6bd827d3a1..e433c70bf6 100644 --- a/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt +++ b/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.matrix.api.core.RoomId @ContributesBinding(AppScope::class) @Inject -class DefaultReportRoomEntryPoint() : ReportRoomEntryPoint { +class DefaultReportRoomEntryPoint : ReportRoomEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext, roomId: RoomId): Node { return parentNode.createNode(buildContext, plugins = listOf(ReportRoomNode.Inputs(roomId))) } diff --git a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt index 88ad28cd6f..9c2d3d2cdf 100644 --- a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt +++ b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultRoomAliasResolverEntryPoint() : RoomAliasResolverEntryPoint { +class DefaultRoomAliasResolverEntryPoint : RoomAliasResolverEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomAliasResolverEntryPoint.NodeBuilder { val plugins = ArrayList() 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 4c43b8bda1..6d26ef32a1 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 @@ -20,7 +20,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultRoomDetailsEntryPoint() : RoomDetailsEntryPoint { +class DefaultRoomDetailsEntryPoint : RoomDetailsEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomDetailsEntryPoint.NodeBuilder { return object : RoomDetailsEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt index f5e2cb8c9d..135b2d5aea 100644 --- a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt +++ b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt @@ -19,7 +19,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultRoomDirectoryEntryPoint() : RoomDirectoryEntryPoint { +class DefaultRoomDirectoryEntryPoint : RoomDirectoryEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomDirectoryEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/DefaultRoomMemberModerationRenderer.kt b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/DefaultRoomMemberModerationRenderer.kt index cc9e0b4e5f..830e3ef984 100644 --- a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/DefaultRoomMemberModerationRenderer.kt +++ b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/DefaultRoomMemberModerationRenderer.kt @@ -21,7 +21,7 @@ import timber.log.Timber @ContributesBinding(RoomScope::class) @Inject -class DefaultRoomMemberModerationRenderer() : RoomMemberModerationRenderer { +class DefaultRoomMemberModerationRenderer : RoomMemberModerationRenderer { @Composable override fun Render( state: RoomMemberModerationState, diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt index 9f3f2c03f3..6d5358299b 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultSecureBackupEntryPoint() : SecureBackupEntryPoint { +class DefaultSecureBackupEntryPoint : SecureBackupEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): SecureBackupEntryPoint.NodeBuilder { val plugins = ArrayList() 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 68a5ffd366..24a8be7f77 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 @@ -16,7 +16,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import com.freeletics.flowredux.dsl.State as MachineState @Inject -class SecureBackupSetupStateMachine() : FlowReduxStateMachine( +class SecureBackupSetupStateMachine : FlowReduxStateMachine( initialState = State.Initial ) { init { diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyTools.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyTools.kt index 45305e9169..5805146c71 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyTools.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/tools/RecoveryKeyTools.kt @@ -13,7 +13,7 @@ private const val RECOVERY_KEY_LENGTH = 48 private const val BASE_58_ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" @Inject -class RecoveryKeyTools() { +class RecoveryKeyTools { fun isRecoveryKeyFormatValid(recoveryKey: String): Boolean { val recoveryKeyWithoutSpace = recoveryKey.replace("\\s+".toRegex(), "") return recoveryKeyWithoutSpace.length == RECOVERY_KEY_LENGTH && recoveryKeyWithoutSpace.all { BASE_58_ALPHABET.contains(it) } diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt index 8d5770e126..fe65c60b73 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) @Inject -class DefaultShareEntryPoint() : ShareEntryPoint { +class DefaultShareEntryPoint : ShareEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ShareEntryPoint.NodeBuilder { val plugins = ArrayList() 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 c85a957be6..91def6db8d 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 @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultSignedOutEntryPoint() : SignedOutEntryPoint { +class DefaultSignedOutEntryPoint : SignedOutEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): SignedOutEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt index 063293fe90..c33ac4356f 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultStartChatEntryPoint() : StartChatEntryPoint { +class DefaultStartChatEntryPoint : StartChatEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): StartChatEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/userlist/UserListDataStore.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/userlist/UserListDataStore.kt index f6db03a577..99fc19f6e1 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/userlist/UserListDataStore.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/userlist/UserListDataStore.kt @@ -13,7 +13,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow @Inject -class UserListDataStore() { +class UserListDataStore { private val _selectedUsers: MutableStateFlow> = MutableStateFlow(emptyList()) fun selectUser(user: MatrixUser) { diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt index 39fb84ec3e..bfc8a30df6 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultUserProfileEntryPoint() : UserProfileEntryPoint { +class DefaultUserProfileEntryPoint : UserProfileEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): UserProfileEntryPoint.NodeBuilder { return object : UserProfileEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt index e48c65b828..c1a6418153 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultIncomingVerificationEntryPoint() : IncomingVerificationEntryPoint { +class DefaultIncomingVerificationEntryPoint : IncomingVerificationEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): IncomingVerificationEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt index 8bb709a621..8355e71f75 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultOutgoingVerificationEntryPoint() : OutgoingVerificationEntryPoint { +class DefaultOutgoingVerificationEntryPoint : OutgoingVerificationEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): OutgoingVerificationEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationNode.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationNode.kt index 38c7dd7599..8e2e306d35 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationNode.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationNode.kt @@ -25,26 +25,26 @@ import io.element.android.libraries.di.SessionScope class OutgoingVerificationNode( @Assisted buildContext: BuildContext, @Assisted plugins: List, -// presenterFactory: OutgoingVerificationPresenter.Factory, + presenterFactory: OutgoingVerificationPresenter.Factory, ) : Node(buildContext, plugins = plugins) { private val callback = plugins().first() private val inputs = inputs() -// private val presenter = presenterFactory.create( -// showDeviceVerifiedScreen = inputs.showDeviceVerifiedScreen, -// verificationRequest = inputs.verificationRequest, -// ) + private val presenter = presenterFactory.create( + showDeviceVerifiedScreen = inputs.showDeviceVerifiedScreen, + verificationRequest = inputs.verificationRequest, + ) @Composable override fun View(modifier: Modifier) { -// val state = presenter.present() -// OutgoingVerificationView( -// state = state, -// modifier = modifier, -// onLearnMoreClick = callback::onLearnMoreAboutEncryption, -// onFinish = callback::onDone, -// onBack = callback::onBack, -// ) + val state = presenter.present() + OutgoingVerificationView( + state = state, + modifier = modifier, + onLearnMoreClick = callback::onLearnMoreAboutEncryption, + onFinish = callback::onDone, + onBack = callback::onBack, + ) } } diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationPresenter.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationPresenter.kt index 60688a9cb7..5b6004845d 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationPresenter.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationPresenter.kt @@ -9,150 +9,172 @@ package io.element.android.features.verifysession.impl.outgoing +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import com.freeletics.flowredux.compose.rememberStateAndDispatch +import dev.zacsweers.metro.Assisted +import dev.zacsweers.metro.AssistedFactory +import dev.zacsweers.metro.Inject +import io.element.android.libraries.architecture.AsyncData +import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.matrix.api.encryption.EncryptionService +import io.element.android.libraries.matrix.api.verification.SessionVerificationService +import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus +import io.element.android.libraries.matrix.api.verification.VerificationFlowState +import io.element.android.libraries.matrix.api.verification.VerificationRequest +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach +import timber.log.Timber +import io.element.android.features.verifysession.impl.outgoing.OutgoingVerificationStateMachine.Event as StateMachineEvent +import io.element.android.features.verifysession.impl.outgoing.OutgoingVerificationStateMachine.State as StateMachineState -// @Inject -// class OutgoingVerificationPresenter( -// @Assisted private val showDeviceVerifiedScreen: Boolean, -// @Assisted private val verificationRequest: VerificationRequest.Outgoing, -// private val sessionVerificationService: SessionVerificationService, -// private val encryptionService: EncryptionService, -// ) : Presenter { -// @AssistedFactory -// interface Factory { -// fun create( -// verificationRequest: VerificationRequest.Outgoing, -// showDeviceVerifiedScreen: Boolean, -// ): OutgoingVerificationPresenter -// } -// -// private val stateMachine = OutgoingVerificationStateMachine( -// sessionVerificationService = sessionVerificationService, -// encryptionService = encryptionService, -// ) -// -// @Composable -// override fun present(): OutgoingVerificationState { -// val stateAndDispatch = stateMachine.rememberStateAndDispatch() -// -// val sessionVerifiedStatus by sessionVerificationService.sessionVerifiedStatus.collectAsState() -// val step by remember { -// derivedStateOf { -// when (verificationRequest) { -// is VerificationRequest.Outgoing.CurrentSession -> { -// when (sessionVerifiedStatus) { -// SessionVerifiedStatus.Unknown -> OutgoingVerificationState.Step.Loading -// SessionVerifiedStatus.NotVerified -> { -// stateAndDispatch.state.value.toVerificationStep() -// } -// SessionVerifiedStatus.Verified -> { -// if (stateAndDispatch.state.value != StateMachineState.Initial || showDeviceVerifiedScreen) { -// // The user has verified the session, we need to show the success screen -// OutgoingVerificationState.Step.Completed -// } else { -// // Automatic verification, which can happen on freshly created account, in this case, skip the screen -// OutgoingVerificationState.Step.Exit -// } -// } -// } -// } -// is VerificationRequest.Outgoing.User -> stateAndDispatch.state.value.toVerificationStep() -// } -// } -// } -// -// // Start this after observing state machine -// LaunchedEffect(Unit) { -// // Force reset, just in case the service was left in a broken state -// sessionVerificationService.reset(cancelAnyPendingVerificationAttempt = true) -// -// observeVerificationService() -// } -// -// fun handleEvents(event: OutgoingVerificationViewEvents) { -// Timber.d("Verification user action: ${event::class.simpleName}") -// when (event) { -// // Just relay the event to the state machine -// OutgoingVerificationViewEvents.RequestVerification -> StateMachineEvent.RequestVerification(verificationRequest) -// OutgoingVerificationViewEvents.StartSasVerification -> StateMachineEvent.StartSasVerification -// OutgoingVerificationViewEvents.ConfirmVerification -> StateMachineEvent.AcceptChallenge -// OutgoingVerificationViewEvents.DeclineVerification -> StateMachineEvent.DeclineChallenge -// OutgoingVerificationViewEvents.Cancel -> StateMachineEvent.Cancel -// OutgoingVerificationViewEvents.Reset -> StateMachineEvent.Reset -// }.let { stateMachineEvent -> -// stateAndDispatch.dispatchAction(stateMachineEvent) -// } -// } -// return OutgoingVerificationState( -// step = step, -// request = verificationRequest, -// eventSink = ::handleEvents, -// ) -// } -// -// private fun StateMachineState?.toVerificationStep(): OutgoingVerificationState.Step = -// when (val machineState = this) { -// StateMachineState.Initial, null -> { -// OutgoingVerificationState.Step.Initial -// } -// is StateMachineState.RequestingVerification, -// is StateMachineState.StartingSasVerification, -// StateMachineState.SasVerificationStarted -> { -// OutgoingVerificationState.Step.AwaitingOtherDeviceResponse -// } -// -// StateMachineState.VerificationRequestAccepted -> { -// OutgoingVerificationState.Step.Ready -// } -// -// is StateMachineState.Canceled -> { -// OutgoingVerificationState.Step.Canceled -// } -// -// is StateMachineState.Verifying -> { -// val async = when (machineState) { -// is StateMachineState.Verifying.Replying -> AsyncData.Loading() -// else -> AsyncData.Uninitialized -// } -// OutgoingVerificationState.Step.Verifying(machineState.data, async) -// } -// -// StateMachineState.Completed -> { -// OutgoingVerificationState.Step.Completed -// } -// -// StateMachineState.Exit -> { -// OutgoingVerificationState.Step.Exit -// } -// } -// -// private fun CoroutineScope.observeVerificationService() { -// sessionVerificationService.verificationFlowState -// .onEach { Timber.d("Verification flow state: ${it::class.simpleName}") } -// .onEach { verificationAttemptState -> -// when (verificationAttemptState) { -// VerificationFlowState.Initial -> stateMachine.dispatch(StateMachineEvent.Reset) -// VerificationFlowState.DidAcceptVerificationRequest -> { -// stateMachine.dispatch(StateMachineEvent.DidAcceptVerificationRequest) -// } -// VerificationFlowState.DidStartSasVerification -> { -// stateMachine.dispatch(StateMachineEvent.DidStartSasVerification) -// } -// is VerificationFlowState.DidReceiveVerificationData -> { -// stateMachine.dispatch(StateMachineEvent.DidReceiveChallenge(verificationAttemptState.data)) -// } -// VerificationFlowState.DidFinish -> { -// stateMachine.dispatch(StateMachineEvent.DidAcceptChallenge) -// } -// VerificationFlowState.DidCancel -> { -// stateMachine.dispatch(StateMachineEvent.DidCancel) -// } -// VerificationFlowState.DidFail -> { -// stateMachine.dispatch(StateMachineEvent.DidFail) -// } -// } -// } -// .launchIn(this) -// } -// } +@Inject +class OutgoingVerificationPresenter( + @Assisted private val showDeviceVerifiedScreen: Boolean, + @Assisted private val verificationRequest: VerificationRequest.Outgoing, + private val sessionVerificationService: SessionVerificationService, + private val encryptionService: EncryptionService, +) : Presenter { + @AssistedFactory + interface Factory { + fun create( + verificationRequest: VerificationRequest.Outgoing, + showDeviceVerifiedScreen: Boolean, + ): OutgoingVerificationPresenter + } + + private val stateMachine = OutgoingVerificationStateMachine( + sessionVerificationService = sessionVerificationService, + encryptionService = encryptionService, + ) + + @Composable + override fun present(): OutgoingVerificationState { + val stateAndDispatch = stateMachine.rememberStateAndDispatch() + + val sessionVerifiedStatus by sessionVerificationService.sessionVerifiedStatus.collectAsState() + val step by remember { + derivedStateOf { + when (verificationRequest) { + is VerificationRequest.Outgoing.CurrentSession -> { + when (sessionVerifiedStatus) { + SessionVerifiedStatus.Unknown -> OutgoingVerificationState.Step.Loading + SessionVerifiedStatus.NotVerified -> { + stateAndDispatch.state.value.toVerificationStep() + } + SessionVerifiedStatus.Verified -> { + if (stateAndDispatch.state.value != StateMachineState.Initial || showDeviceVerifiedScreen) { + // The user has verified the session, we need to show the success screen + OutgoingVerificationState.Step.Completed + } else { + // Automatic verification, which can happen on freshly created account, in this case, skip the screen + OutgoingVerificationState.Step.Exit + } + } + } + } + is VerificationRequest.Outgoing.User -> stateAndDispatch.state.value.toVerificationStep() + } + } + } + + // Start this after observing state machine + LaunchedEffect(Unit) { + // Force reset, just in case the service was left in a broken state + sessionVerificationService.reset(cancelAnyPendingVerificationAttempt = true) + + observeVerificationService() + } + + fun handleEvents(event: OutgoingVerificationViewEvents) { + Timber.d("Verification user action: ${event::class.simpleName}") + when (event) { + // Just relay the event to the state machine + OutgoingVerificationViewEvents.RequestVerification -> StateMachineEvent.RequestVerification(verificationRequest) + OutgoingVerificationViewEvents.StartSasVerification -> StateMachineEvent.StartSasVerification + OutgoingVerificationViewEvents.ConfirmVerification -> StateMachineEvent.AcceptChallenge + OutgoingVerificationViewEvents.DeclineVerification -> StateMachineEvent.DeclineChallenge + OutgoingVerificationViewEvents.Cancel -> StateMachineEvent.Cancel + OutgoingVerificationViewEvents.Reset -> StateMachineEvent.Reset + }.let { stateMachineEvent -> + stateAndDispatch.dispatchAction(stateMachineEvent) + } + } + return OutgoingVerificationState( + step = step, + request = verificationRequest, + eventSink = ::handleEvents, + ) + } + + private fun StateMachineState?.toVerificationStep(): OutgoingVerificationState.Step = + when (val machineState = this) { + StateMachineState.Initial, null -> { + OutgoingVerificationState.Step.Initial + } + is StateMachineState.RequestingVerification, + is StateMachineState.StartingSasVerification, + StateMachineState.SasVerificationStarted -> { + OutgoingVerificationState.Step.AwaitingOtherDeviceResponse + } + + StateMachineState.VerificationRequestAccepted -> { + OutgoingVerificationState.Step.Ready + } + + is StateMachineState.Canceled -> { + OutgoingVerificationState.Step.Canceled + } + + is StateMachineState.Verifying -> { + val async = when (machineState) { + is StateMachineState.Verifying.Replying -> AsyncData.Loading() + else -> AsyncData.Uninitialized + } + OutgoingVerificationState.Step.Verifying(machineState.data, async) + } + + StateMachineState.Completed -> { + OutgoingVerificationState.Step.Completed + } + + StateMachineState.Exit -> { + OutgoingVerificationState.Step.Exit + } + } + + private fun CoroutineScope.observeVerificationService() { + sessionVerificationService.verificationFlowState + .onEach { Timber.d("Verification flow state: ${it::class.simpleName}") } + .onEach { verificationAttemptState -> + when (verificationAttemptState) { + VerificationFlowState.Initial -> stateMachine.dispatch(StateMachineEvent.Reset) + VerificationFlowState.DidAcceptVerificationRequest -> { + stateMachine.dispatch(StateMachineEvent.DidAcceptVerificationRequest) + } + VerificationFlowState.DidStartSasVerification -> { + stateMachine.dispatch(StateMachineEvent.DidStartSasVerification) + } + is VerificationFlowState.DidReceiveVerificationData -> { + stateMachine.dispatch(StateMachineEvent.DidReceiveChallenge(verificationAttemptState.data)) + } + VerificationFlowState.DidFinish -> { + stateMachine.dispatch(StateMachineEvent.DidAcceptChallenge) + } + VerificationFlowState.DidCancel -> { + stateMachine.dispatch(StateMachineEvent.DidCancel) + } + VerificationFlowState.DidFail -> { + stateMachine.dispatch(StateMachineEvent.DidFail) + } + } + } + .launchIn(this) + } +} diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultTextFileViewer.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultTextFileViewer.kt index 1c6349de0e..0e1f1e11b9 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultTextFileViewer.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultTextFileViewer.kt @@ -19,7 +19,7 @@ import kotlinx.collections.immutable.ImmutableList @ContributesBinding(AppScope::class) @Inject -class DefaultTextFileViewer() : TextFileViewer { +class DefaultTextFileViewer : TextFileViewer { @Composable override fun Render( lines: ImmutableList, diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt index f18e804efb..64d469c34f 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt @@ -19,7 +19,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) @Inject -class DefaultViewFolderEntryPoint() : ViewFolderEntryPoint { +class DefaultViewFolderEntryPoint : ViewFolderEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ViewFolderEntryPoint.NodeBuilder { val plugins = ArrayList() 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 f3da7a8de8..7b3d57259d 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 @@ -22,7 +22,7 @@ import javax.crypto.spec.GCMParameterSpec */ @ContributesBinding(AppScope::class) @Inject -class AESEncryptionDecryptionService() : EncryptionDecryptionService { +class AESEncryptionDecryptionService : EncryptionDecryptionService { override fun createEncryptionCipher(key: SecretKey): Cipher { return Cipher.getInstance(AESEncryptionSpecs.CIPHER_TRANSFORMATION).apply { init(Cipher.ENCRYPT_MODE, key) diff --git a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt index 76a9722f91..7c36ecd0b1 100644 --- a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt +++ b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId @ContributesBinding(AppScope::class) -class DefaultDeepLinkCreator @Inject constructor() : DeepLinkCreator { +@Inject +class DefaultDeepLinkCreator : DeepLinkCreator { override fun create(sessionId: SessionId, roomId: RoomId?, threadId: ThreadId?): String { return buildString { append("$SCHEME://$HOST/") diff --git a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParser.kt b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParser.kt index 0c7d626985..e6ab87b2b3 100644 --- a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParser.kt +++ b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParser.kt @@ -20,7 +20,7 @@ import io.element.android.libraries.matrix.api.core.ThreadId @ContributesBinding(AppScope::class) @Inject -class DefaultDeeplinkParser: DeeplinkParser { +class DefaultDeeplinkParser : DeeplinkParser { override fun getFromIntent(intent: Intent): DeeplinkData? { return intent .takeIf { it.action == Intent.ACTION_VIEW } diff --git a/libraries/di/src/main/kotlin/io/element/android/libraries/di/AppScope.kt b/libraries/di/src/main/kotlin/io/element/android/libraries/di/AppScope.kt deleted file mode 100644 index a1015055bf..0000000000 --- a/libraries/di/src/main/kotlin/io/element/android/libraries/di/AppScope.kt +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright 2022-2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -package io.element.android.libraries.di - -abstract class AppScope private constructor() diff --git a/libraries/matrix/api/build.gradle.kts b/libraries/matrix/api/build.gradle.kts index 4f006a7c81..272527dc9f 100644 --- a/libraries/matrix/api/build.gradle.kts +++ b/libraries/matrix/api/build.gradle.kts @@ -1,5 +1,6 @@ import config.BuildTimeConfig import extension.buildConfigFieldStr +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -14,6 +15,8 @@ plugins { alias(libs.plugins.kotlin.serialization) } +setupDependencyInjection() + android { namespace = "io.element.android.libraries.matrix.api" diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/mxc/MxcTools.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/mxc/MxcTools.kt index 94b18bdead..8525425e1b 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/mxc/MxcTools.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/mxc/MxcTools.kt @@ -10,7 +10,7 @@ package io.element.android.libraries.matrix.api.mxc import dev.zacsweers.metro.Inject @Inject -class MxcTools() { +class MxcTools { /** * Regex to match a Matrix Content (mxc://) URI. * diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/ClientBuilderProvider.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/ClientBuilderProvider.kt index 98c6c5da84..57486da3e8 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/ClientBuilderProvider.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/ClientBuilderProvider.kt @@ -18,7 +18,7 @@ interface ClientBuilderProvider { @ContributesBinding(AppScope::class) @Inject -class RustClientBuilderProvider() : ClientBuilderProvider { +class RustClientBuilderProvider : ClientBuilderProvider { override fun provide(): ClientBuilder { return ClientBuilder() } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustSdkMetadata.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustSdkMetadata.kt index b3bbe9d4a7..88ff69459f 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustSdkMetadata.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustSdkMetadata.kt @@ -15,7 +15,7 @@ import org.matrix.rustcomponents.sdk.sdkGitSha @ContributesBinding(AppScope::class) @Inject -class RustSdkMetadata() : SdkMetadata { +class RustSdkMetadata : SdkMetadata { override val sdkGitSha: String get() = sdkGitSha() } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/RustQrCodeLoginDataFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/RustQrCodeLoginDataFactory.kt index e204a9ff3e..17cff41bc1 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/RustQrCodeLoginDataFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/RustQrCodeLoginDataFactory.kt @@ -17,7 +17,7 @@ import org.matrix.rustcomponents.sdk.QrCodeData @ContributesBinding(AppScope::class) @Inject -class RustQrCodeLoginDataFactory() : MatrixQrCodeLoginDataFactory { +class RustQrCodeLoginDataFactory : MatrixQrCodeLoginDataFactory { override fun parseQrCodeData(data: ByteArray): Result { return runCatchingExceptions { SdkQrCodeLoginData(QrCodeData.fromBytes(data)) } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/certificates/DefaultUserCertificatesProvider.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/certificates/DefaultUserCertificatesProvider.kt index 60e132df71..d5d637f54b 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/certificates/DefaultUserCertificatesProvider.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/certificates/DefaultUserCertificatesProvider.kt @@ -16,7 +16,7 @@ import java.security.KeyStoreException @ContributesBinding(AppScope::class) @Inject -class DefaultUserCertificatesProvider() : UserCertificatesProvider { +class DefaultUserCertificatesProvider : UserCertificatesProvider { /** * Get additional user-installed certificates from the `AndroidCAStore` `Keystore`. * diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/keys/DefaultPassphraseGenerator.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/keys/DefaultPassphraseGenerator.kt index f25b054011..b6d9aa2b89 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/keys/DefaultPassphraseGenerator.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/keys/DefaultPassphraseGenerator.kt @@ -17,7 +17,7 @@ private const val SECRET_SIZE = 256 @ContributesBinding(AppScope::class) @Inject -class DefaultPassphraseGenerator() : PassphraseGenerator { +class DefaultPassphraseGenerator : PassphraseGenerator { override fun generatePassphrase(): String? { val key = ByteArray(size = SECRET_SIZE) SecureRandom().nextBytes(key) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultMatrixToConverter.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultMatrixToConverter.kt index c2eaab89ce..c03be3bbe9 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultMatrixToConverter.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultMatrixToConverter.kt @@ -21,7 +21,7 @@ import io.element.android.libraries.matrix.api.permalink.MatrixToConverter */ @ContributesBinding(AppScope::class) @Inject -class DefaultMatrixToConverter() : MatrixToConverter { +class DefaultMatrixToConverter : 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]. diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultPermalinkBuilder.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultPermalinkBuilder.kt index 3016d437b0..2ed7990ee4 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultPermalinkBuilder.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultPermalinkBuilder.kt @@ -21,7 +21,7 @@ import org.matrix.rustcomponents.sdk.matrixToUserPermalink @ContributesBinding(AppScope::class) @Inject -class DefaultPermalinkBuilder() : PermalinkBuilder { +class DefaultPermalinkBuilder : PermalinkBuilder { override fun permalinkForUser(userId: UserId): Result { if (!MatrixPatterns.isUserId(userId.value)) { return Result.failure(PermalinkBuilderError.InvalidData) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/platform/RustInitPlatformService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/platform/RustInitPlatformService.kt index ae462bba86..492d5e5792 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/platform/RustInitPlatformService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/platform/RustInitPlatformService.kt @@ -17,7 +17,7 @@ import org.matrix.rustcomponents.sdk.initPlatform @ContributesBinding(AppScope::class) @Inject -class RustInitPlatformService() : InitPlatformService { +class RustInitPlatformService : InitPlatformService { override fun init(tracingConfiguration: TracingConfiguration) { initPlatform( config = tracingConfiguration.map(), diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventTypeFilterFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventTypeFilterFactory.kt index 3b3ec8996a..29f72848b8 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventTypeFilterFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventTypeFilterFactory.kt @@ -20,7 +20,7 @@ interface TimelineEventTypeFilterFactory { @ContributesBinding(AppScope::class) @Inject -class RustTimelineEventTypeFilterFactory() : TimelineEventTypeFilterFactory { +class RustTimelineEventTypeFilterFactory : TimelineEventTypeFilterFactory { override fun create(listStateEventType: List): TimelineEventTypeFilter { return TimelineEventTypeFilter.exclude( listStateEventType.map { stateEventType -> diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/alias/DefaultRoomAliasHelper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/alias/DefaultRoomAliasHelper.kt index 90b1b2c444..039144bf55 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/alias/DefaultRoomAliasHelper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/alias/DefaultRoomAliasHelper.kt @@ -15,7 +15,7 @@ import io.element.android.libraries.matrix.api.room.alias.RoomAliasHelper @ContributesBinding(AppScope::class) @Inject -class DefaultRoomAliasHelper() : RoomAliasHelper { +class DefaultRoomAliasHelper : RoomAliasHelper { override fun roomAliasNameFromRoomDisplayName(name: String): String { return org.matrix.rustcomponents.sdk.roomAliasNameFromRoomDisplayName(name) } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/RoomMemberProfilesCache.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/RoomMemberProfilesCache.kt index bc4443d3d3..58dac492dc 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/RoomMemberProfilesCache.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/RoomMemberProfilesCache.kt @@ -19,7 +19,7 @@ import kotlinx.coroutines.flow.runningFold @SingleIn(RoomScope::class) @Inject -class RoomMemberProfilesCache() { +class RoomMemberProfilesCache { private val cache = MutableStateFlow(mapOf()) val updateFlow = cache.drop(1).runningFold(0) { acc, _ -> acc + 1 } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/RoomNamesCache.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/RoomNamesCache.kt index 23e18c78eb..f9253d351f 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/RoomNamesCache.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/RoomNamesCache.kt @@ -20,7 +20,7 @@ import kotlinx.coroutines.flow.runningFold @SingleIn(RoomScope::class) @Inject -class RoomNamesCache() { +class RoomNamesCache { private val cache = MutableStateFlow(mapOf()) val updateFlow = cache.drop(1).runningFold(0) { acc, _ -> acc + 1 } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt index 152207e04d..e9e62131aa 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt @@ -19,7 +19,7 @@ import io.element.android.libraries.mediaviewer.impl.gallery.root.MediaGalleryRo @ContributesBinding(AppScope::class) @Inject -class DefaultMediaGalleryEntryPoint() : MediaGalleryEntryPoint { +class DefaultMediaGalleryEntryPoint : MediaGalleryEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): MediaGalleryEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt index 43326957fb..d2800ef9b8 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt @@ -23,7 +23,7 @@ import io.element.android.libraries.mediaviewer.impl.viewer.MediaViewerNode @ContributesBinding(AppScope::class) @Inject -class DefaultMediaViewerEntryPoint() : MediaViewerEntryPoint { +class DefaultMediaViewerEntryPoint : MediaViewerEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): MediaViewerEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaItemsPostProcessor.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaItemsPostProcessor.kt index 678c496694..102fc611ef 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaItemsPostProcessor.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaItemsPostProcessor.kt @@ -13,7 +13,7 @@ import io.element.android.libraries.mediaviewer.impl.model.MediaItem import kotlinx.collections.immutable.toImmutableList @Inject -class MediaItemsPostProcessor() { +class MediaItemsPostProcessor { fun process( mediaItems: List, ): GroupedMediaItems { diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/util/FileExtensionExtractorWithValidation.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/util/FileExtensionExtractorWithValidation.kt index 028abf8bd6..009218d755 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/util/FileExtensionExtractorWithValidation.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/util/FileExtensionExtractorWithValidation.kt @@ -15,7 +15,7 @@ import io.element.android.libraries.mediaviewer.api.util.FileExtensionExtractor @ContributesBinding(AppScope::class) @Inject -class FileExtensionExtractorWithValidation() : FileExtensionExtractor { +class FileExtensionExtractorWithValidation : FileExtensionExtractor { override fun extractFromName(name: String): String { val fileExtension = name.substringAfterLast('.', "") // Makes sure the extension is known by the system, otherwise default to binary extension. diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/PagerKeysHandler.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/PagerKeysHandler.kt index f2015eff84..03d37690ed 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/PagerKeysHandler.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/PagerKeysHandler.kt @@ -36,7 +36,7 @@ import io.element.android.libraries.mediaviewer.impl.model.eventId * (keyOffset = -1) */ @Inject -class PagerKeysHandler() { +class PagerKeysHandler { private data class Data( val mediaItems: List, val keyOffset: Long, diff --git a/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcActionFlow.kt b/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcActionFlow.kt index 081d5c279d..c49128543a 100644 --- a/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcActionFlow.kt +++ b/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcActionFlow.kt @@ -19,7 +19,7 @@ import kotlinx.coroutines.flow.MutableStateFlow @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) @Inject -class DefaultOidcActionFlow() : OidcActionFlow { +class DefaultOidcActionFlow : OidcActionFlow { private val mutableStateFlow = MutableStateFlow(null) override fun post(oidcAction: OidcAction) { diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/AccompanistPermissionStateProvider.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/AccompanistPermissionStateProvider.kt index e04fc741cf..f2f83e86e5 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/AccompanistPermissionStateProvider.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/AccompanistPermissionStateProvider.kt @@ -24,7 +24,7 @@ interface ComposablePermissionStateProvider { @ContributesBinding(AppScope::class) @Inject -class AccompanistPermissionStateProvider() : ComposablePermissionStateProvider { +class AccompanistPermissionStateProvider : ComposablePermissionStateProvider { @Composable override fun provide(permission: String, onPermissionResult: (Boolean) -> Unit): PermissionState { return rememberPermissionState( diff --git a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultPreferencesDataStoreFactory.kt b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultPreferencesDataStoreFactory.kt index 525b9372b2..78fccf0e84 100644 --- a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultPreferencesDataStoreFactory.kt +++ b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultPreferencesDataStoreFactory.kt @@ -16,7 +16,7 @@ import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.androidutils.preferences.DefaultPreferencesCorruptionHandlerFactory -import io.element.android.libraries.di.ApplicationContext +import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory import java.util.concurrent.ConcurrentHashMap diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ReplyMessageExtractor.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ReplyMessageExtractor.kt index 77cf91cbdd..323c32f64a 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ReplyMessageExtractor.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ReplyMessageExtractor.kt @@ -19,7 +19,7 @@ interface ReplyMessageExtractor { @ContributesBinding(AppScope::class) @Inject -class AndroidReplyMessageExtractor() : ReplyMessageExtractor { +class AndroidReplyMessageExtractor : ReplyMessageExtractor { override fun getReplyMessage(intent: Intent): String? { return RemoteInput.getResultsFromIntent(intent) ?.getCharSequence(NotificationBroadcastReceiver.KEY_TEXT_REPLY) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/DiagnosticPushHandler.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/DiagnosticPushHandler.kt index e909ee0cab..86cd2f630c 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/DiagnosticPushHandler.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/DiagnosticPushHandler.kt @@ -15,7 +15,7 @@ import kotlinx.coroutines.flow.SharedFlow @SingleIn(AppScope::class) @Inject -class DiagnosticPushHandler() { +class DiagnosticPushHandler { private val _state = MutableSharedFlow() val state: SharedFlow = _state diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/NotificationClickHandler.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/NotificationClickHandler.kt index 180c50ad26..e20876198e 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/NotificationClickHandler.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/NotificationClickHandler.kt @@ -15,7 +15,7 @@ import kotlinx.coroutines.flow.SharedFlow @SingleIn(AppScope::class) @Inject -class NotificationClickHandler() { +class NotificationClickHandler { private val _state = MutableSharedFlow(extraBufferCapacity = 1) val state: SharedFlow = _state diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushParser.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushParser.kt index b0993754e6..410fc05014 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushParser.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushParser.kt @@ -11,7 +11,7 @@ import dev.zacsweers.metro.Inject import io.element.android.libraries.pushproviders.api.PushData @Inject -class FirebasePushParser() { +class FirebasePushParser { fun parse(message: Map): PushData? { val pushDataFirebase = PushDataFirebase( eventId = message["event_id"], diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/GuardServiceStarter.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/GuardServiceStarter.kt index cfd96c2010..57813f8fde 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/GuardServiceStarter.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/GuardServiceStarter.kt @@ -18,4 +18,4 @@ interface GuardServiceStarter { @ContributesBinding(AppScope::class) @Inject -class NoopGuardServiceStarter() : GuardServiceStarter +class NoopGuardServiceStarter : GuardServiceStarter diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushParser.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushParser.kt index a1e43c47d9..f1290636c3 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushParser.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushParser.kt @@ -13,7 +13,7 @@ import io.element.android.libraries.pushproviders.api.PushData import kotlinx.serialization.json.Json @Inject -class UnifiedPushParser() { +class UnifiedPushParser { private val json by lazy { Json { ignoreUnknownKeys = true } } fun parse(message: ByteArray, clientSecret: String): PushData? { diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/registration/EndpointRegistrationHandler.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/registration/EndpointRegistrationHandler.kt index 88ddc88b58..c6a1353a2f 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/registration/EndpointRegistrationHandler.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/registration/EndpointRegistrationHandler.kt @@ -20,7 +20,7 @@ data class RegistrationResult( @SingleIn(AppScope::class) @Inject -class EndpointRegistrationHandler() { +class EndpointRegistrationHandler { private val _state = MutableSharedFlow() val state: SharedFlow = _state diff --git a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretFactory.kt b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretFactory.kt index f6bd07b695..be991ca0c5 100644 --- a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretFactory.kt +++ b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretFactory.kt @@ -15,7 +15,7 @@ import java.util.UUID @ContributesBinding(AppScope::class) @Inject -class DefaultPushClientSecretFactory() : PushClientSecretFactory { +class DefaultPushClientSecretFactory : PushClientSecretFactory { override fun create(): String { return UUID.randomUUID().toString() } 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 c01703431d..0c6ba57b9f 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 @@ -18,7 +18,7 @@ import io.element.android.libraries.roomselect.api.RoomSelectEntryPoint @ContributesBinding(SessionScope::class) @Inject -class DefaultRoomSelectEntryPoint() : RoomSelectEntryPoint { +class DefaultRoomSelectEntryPoint : RoomSelectEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomSelectEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt index d8995e9771..b9d9c91814 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.troubleshoot.api.NotificationTroubleShootEnt @ContributesBinding(AppScope::class) @Inject -class DefaultNotificationTroubleShootEntryPoint() : NotificationTroubleShootEntryPoint { +class DefaultNotificationTroubleShootEntryPoint : NotificationTroubleShootEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NotificationTroubleShootEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt index 7895508d36..9a33848cae 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.troubleshoot.api.PushHistoryEntryPoint @ContributesBinding(AppScope::class) @Inject -class DefaultPushHistoryEntryPoint() : PushHistoryEntryPoint { +class DefaultPushHistoryEntryPoint : PushHistoryEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): PushHistoryEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DBovAudioLevelCalculator.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DBovAudioLevelCalculator.kt index c27bb03e10..6001e74615 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DBovAudioLevelCalculator.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DBovAudioLevelCalculator.kt @@ -21,7 +21,7 @@ import kotlin.math.sqrt */ @ContributesBinding(RoomScope::class) @Inject -class DBovAudioLevelCalculator() : AudioLevelCalculator { +class DBovAudioLevelCalculator : AudioLevelCalculator { override fun calculateAudioLevel(buffer: ShortArray): Float { return buffer.rms().dBov().normalize().coerceIn(0f, 1f) } 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 d6e00eee7b..917ef14415 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 @@ -39,7 +39,7 @@ object VoiceRecorderModule { } @Provides - fun provideVoiceFileConfig(): VoiceFileConfig = + public fun provideVoiceFileConfig(): VoiceFileConfig = VoiceFileConfig( cacheSubdir = "voice_recordings", fileExt = "ogg", diff --git a/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopAnalyticsService.kt b/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopAnalyticsService.kt index e55a930660..f43367c66a 100644 --- a/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopAnalyticsService.kt +++ b/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopAnalyticsService.kt @@ -23,7 +23,7 @@ import kotlinx.coroutines.flow.flowOf @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) @Inject -class NoopAnalyticsService() : AnalyticsService { +class NoopAnalyticsService : AnalyticsService { override fun getAvailableAnalyticsProviders(): Set = emptySet() override val userConsentFlow: Flow = flowOf(false) override suspend fun setUserConsent(userConsent: Boolean) = Unit diff --git a/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopScreenTracker.kt b/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopScreenTracker.kt index 2180ae69d3..fb193e115d 100644 --- a/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopScreenTracker.kt +++ b/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopScreenTracker.kt @@ -16,7 +16,7 @@ import io.element.android.services.analytics.api.ScreenTracker @ContributesBinding(AppScope::class) @Inject -class NoopScreenTracker() : ScreenTracker { +class NoopScreenTracker : ScreenTracker { @Composable override fun TrackScreen(screen: MobileScreen.ScreenName) = Unit } diff --git a/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/sdk/DefaultBuildVersionSdkIntProvider.kt b/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/sdk/DefaultBuildVersionSdkIntProvider.kt index 8d6c489750..75904f4dea 100644 --- a/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/sdk/DefaultBuildVersionSdkIntProvider.kt +++ b/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/sdk/DefaultBuildVersionSdkIntProvider.kt @@ -15,7 +15,7 @@ import io.element.android.services.toolbox.api.sdk.BuildVersionSdkIntProvider @ContributesBinding(AppScope::class) @Inject -class DefaultBuildVersionSdkIntProvider() : +class DefaultBuildVersionSdkIntProvider : BuildVersionSdkIntProvider { override fun get() = Build.VERSION.SDK_INT } diff --git a/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/systemclock/DefaultSystemClock.kt b/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/systemclock/DefaultSystemClock.kt index 00f48bfeea..74c5094868 100644 --- a/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/systemclock/DefaultSystemClock.kt +++ b/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/systemclock/DefaultSystemClock.kt @@ -14,7 +14,7 @@ import io.element.android.services.toolbox.api.systemclock.SystemClock @ContributesBinding(AppScope::class) @Inject -class DefaultSystemClock() : SystemClock { +class DefaultSystemClock : SystemClock { /** * Provides a UTC epoch in milliseconds *