From cf4497d323a9e9438821f69d8a89c6ceac0f1e51 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 May 2024 09:34:45 +0200 Subject: [PATCH 1/7] Add Konsist test about class name: Class implementing interface should have name not end with 'Impl' but start with 'Default' --- .../android/tests/konsist/KonsistClassNameTest.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt index 3ac03680ff..679191975f 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt @@ -21,7 +21,9 @@ import com.bumble.appyx.core.node.Node import com.lemonappdev.konsist.api.Konsist import com.lemonappdev.konsist.api.ext.list.withAllParentsOf import com.lemonappdev.konsist.api.ext.list.withNameContaining +import com.lemonappdev.konsist.api.ext.list.withNameEndingWith import com.lemonappdev.konsist.api.ext.list.withoutName +import com.lemonappdev.konsist.api.verify.assertEmpty import com.lemonappdev.konsist.api.verify.assertTrue import io.element.android.libraries.architecture.Presenter import org.junit.Test @@ -81,4 +83,12 @@ class KonsistClassNameTest { it.parents().any { parent -> parent.name.replace(".", "") == interfaceName } } } + + @Test + fun `Class implementing interface should have name not end with 'Impl' but start with 'Default'`() { + Konsist.scopeFromProject() + .classes() + .withNameEndingWith("Impl") + .assertEmpty(additionalMessage = "Class implementing interface should have name not end with 'Impl' but start with 'Default'") + } } From 45598a885ed626fcbe9cd797ac81d8f2afc3b095 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 May 2024 09:45:34 +0200 Subject: [PATCH 2/7] Rename some class from `Impl` to Default --- ...oviderImpl.kt => DefaultIntentProvider.kt} | 2 +- ...plTest.kt => DefaultIntentProviderTest.kt} | 12 ++++----- ...erImpl.kt => DefaultLeaveRoomPresenter.kt} | 2 +- .../impl/LeaveRoomPresenterImplModule.kt | 2 +- ...st.kt => DefaultLeaveRoomPresenterTest.kt} | 25 +++++++++---------- ...Impl.kt => DefaultPermissionsPresenter.kt} | 5 ++-- ...pl.kt => DefaultSendLocationEntryPoint.kt} | 2 +- ...pl.kt => DefaultShowLocationEntryPoint.kt} | 2 +- .../impl/actionlist/ActionListView.kt | 4 +-- ...pl.kt => DefaultMessageComposerContext.kt} | 2 +- .../MessageComposerPresenter.kt | 2 +- ...l.kt => DefaultMessageSummaryFormatter.kt} | 2 +- .../messages/impl/MessagesPresenterTest.kt | 4 +-- .../MessageComposerPresenterTest.kt | 4 +-- ...onitorImpl.kt => DefaultNetworkMonitor.kt} | 2 +- ...oviderImpl.kt => DefaultPickerProvider.kt} | 2 +- ...diaPlayerImpl.kt => DefaultMediaPlayer.kt} | 2 +- .../mediaplayer/impl/SimplePlayer.kt | 4 +-- ...rImplTest.kt => DefaultMediaPlayerTest.kt} | 2 +- ...cretImpl.kt => DefaultPushClientSecret.kt} | 2 +- ...l.kt => DefaultPushClientSecretFactory.kt} | 2 +- ...Test.kt => DefaultPushClientSecretTest.kt} | 4 +-- ...ecorderImpl.kt => DefaultVoiceRecorder.kt} | 2 +- ...mplTest.kt => DefaultVoiceRecorderTest.kt} | 16 ++++++------ .../android/samples/minimal/RoomListScreen.kt | 8 +++--- .../tests/konsist/KonsistClassNameTest.kt | 1 + 26 files changed, 59 insertions(+), 58 deletions(-) rename app/src/main/kotlin/io/element/android/x/intent/{IntentProviderImpl.kt => DefaultIntentProvider.kt} (97%) rename app/src/test/kotlin/io/element/android/x/intent/{IntentProviderImplTest.kt => DefaultIntentProviderTest.kt} (90%) rename features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/{LeaveRoomPresenterImpl.kt => DefaultLeaveRoomPresenter.kt} (98%) rename features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/{LeaveRoomPresenterImplTest.kt => DefaultLeaveRoomPresenterTest.kt} (93%) rename features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/{PermissionsPresenterImpl.kt => DefaultPermissionsPresenter.kt} (93%) rename features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/{SendLocationEntryPointImpl.kt => DefaultSendLocationEntryPoint.kt} (93%) rename features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/{ShowLocationEntryPointImpl.kt => DefaultShowLocationEntryPoint.kt} (93%) rename features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/{MessageComposerContextImpl.kt => DefaultMessageComposerContext.kt} (93%) rename features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/{MessageSummaryFormatterImpl.kt => DefaultMessageSummaryFormatter.kt} (98%) rename features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/{NetworkMonitorImpl.kt => DefaultNetworkMonitor.kt} (98%) rename libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/{PickerProviderImpl.kt => DefaultPickerProvider.kt} (98%) rename libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/{MediaPlayerImpl.kt => DefaultMediaPlayer.kt} (99%) rename libraries/mediaplayer/impl/src/test/kotlin/io/element/android/libraries/mediaplayer/impl/{MediaPlayerImplTest.kt => DefaultMediaPlayerTest.kt} (96%) rename libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/{PushClientSecretImpl.kt => DefaultPushClientSecret.kt} (98%) rename libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/{PushClientSecretFactoryImpl.kt => DefaultPushClientSecretFactory.kt} (92%) rename libraries/pushstore/impl/src/test/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/{PushClientSecretImplTest.kt => DefaultPushClientSecretTest.kt} (95%) rename libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/{VoiceRecorderImpl.kt => DefaultVoiceRecorder.kt} (99%) rename libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/{VoiceRecorderImplTest.kt => DefaultVoiceRecorderTest.kt} (93%) diff --git a/app/src/main/kotlin/io/element/android/x/intent/IntentProviderImpl.kt b/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt similarity index 97% rename from app/src/main/kotlin/io/element/android/x/intent/IntentProviderImpl.kt rename to app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt index bdadf1e3ef..e8e83028a7 100644 --- a/app/src/main/kotlin/io/element/android/x/intent/IntentProviderImpl.kt +++ b/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt @@ -31,7 +31,7 @@ import io.element.android.x.MainActivity import javax.inject.Inject @ContributesBinding(AppScope::class) -class IntentProviderImpl @Inject constructor( +class DefaultIntentProvider @Inject constructor( @ApplicationContext private val context: Context, private val deepLinkCreator: DeepLinkCreator, ) : IntentProvider { diff --git a/app/src/test/kotlin/io/element/android/x/intent/IntentProviderImplTest.kt b/app/src/test/kotlin/io/element/android/x/intent/DefaultIntentProviderTest.kt similarity index 90% rename from app/src/test/kotlin/io/element/android/x/intent/IntentProviderImplTest.kt rename to app/src/test/kotlin/io/element/android/x/intent/DefaultIntentProviderTest.kt index b8b854d158..87e72bcb12 100644 --- a/app/src/test/kotlin/io/element/android/x/intent/IntentProviderImplTest.kt +++ b/app/src/test/kotlin/io/element/android/x/intent/DefaultIntentProviderTest.kt @@ -30,10 +30,10 @@ import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment @RunWith(RobolectricTestRunner::class) -class IntentProviderImplTest { +class DefaultIntentProviderTest { @Test fun `test getViewRoomIntent with Session`() { - val sut = createIntentProviderImpl() + val sut = createDefaultIntentProvider() val result = sut.getViewRoomIntent( sessionId = A_SESSION_ID, roomId = null, @@ -45,7 +45,7 @@ class IntentProviderImplTest { @Test fun `test getViewRoomIntent with Session and Room`() { - val sut = createIntentProviderImpl() + val sut = createDefaultIntentProvider() val result = sut.getViewRoomIntent( sessionId = A_SESSION_ID, roomId = A_ROOM_ID, @@ -57,7 +57,7 @@ class IntentProviderImplTest { @Test fun `test getViewRoomIntent with Session, Room and Thread`() { - val sut = createIntentProviderImpl() + val sut = createDefaultIntentProvider() val result = sut.getViewRoomIntent( sessionId = A_SESSION_ID, roomId = A_ROOM_ID, @@ -67,8 +67,8 @@ class IntentProviderImplTest { assertThat(result.data.toString()).isEqualTo("elementx://open/@alice:server.org/!aRoomId:domain/\$aThreadId") } - private fun createIntentProviderImpl(): IntentProviderImpl { - return IntentProviderImpl( + private fun createDefaultIntentProvider(): DefaultIntentProvider { + return DefaultIntentProvider( context = RuntimeEnvironment.getApplication() as Context, deepLinkCreator = DeepLinkCreator(), ) diff --git a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImpl.kt b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/DefaultLeaveRoomPresenter.kt similarity index 98% rename from features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImpl.kt rename to features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/DefaultLeaveRoomPresenter.kt index 56c2f9b8fd..1d4b78f75c 100644 --- a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImpl.kt +++ b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/DefaultLeaveRoomPresenter.kt @@ -36,7 +36,7 @@ import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject -class LeaveRoomPresenterImpl @Inject constructor( +class DefaultLeaveRoomPresenter @Inject constructor( private val client: MatrixClient, private val roomMembershipObserver: RoomMembershipObserver, private val dispatchers: CoroutineDispatchers, diff --git a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplModule.kt b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplModule.kt index 65403adb60..a20be4f65f 100644 --- a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplModule.kt +++ b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplModule.kt @@ -26,5 +26,5 @@ import io.element.android.libraries.di.SessionScope @ContributesTo(SessionScope::class) interface LeaveRoomPresenterImplModule { @Binds - fun leaveRoomPresenter(leaveRoomPresenter: LeaveRoomPresenterImpl): LeaveRoomPresenter + fun leaveRoomPresenter(leaveRoomPresenter: DefaultLeaveRoomPresenter): LeaveRoomPresenter } diff --git a/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplTest.kt b/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/DefaultLeaveRoomPresenterTest.kt similarity index 93% rename from features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplTest.kt rename to features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/DefaultLeaveRoomPresenterTest.kt index 664ca4bd28..9962a3bd32 100644 --- a/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplTest.kt +++ b/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/DefaultLeaveRoomPresenterTest.kt @@ -21,7 +21,6 @@ import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.leaveroom.api.LeaveRoomEvent -import io.element.android.features.leaveroom.api.LeaveRoomPresenter import io.element.android.features.leaveroom.api.LeaveRoomState import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.room.RoomMembershipObserver @@ -37,13 +36,13 @@ import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test -class LeaveRoomPresenterImplTest { +class DefaultLeaveRoomPresenterTest { @get:Rule val warmUpRule = WarmUpRule() @Test fun `present - initial state hides all dialogs`() = runTest { - val presenter = createLeaveRoomPresenter() + val presenter = createDefaultLeaveRoomPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -56,7 +55,7 @@ class LeaveRoomPresenterImplTest { @Test fun `present - show generic confirmation`() = runTest { - val presenter = createLeaveRoomPresenter( + val presenter = createDefaultLeaveRoomPresenter( client = FakeMatrixClient().apply { givenGetRoomResult( roomId = A_ROOM_ID, @@ -76,7 +75,7 @@ class LeaveRoomPresenterImplTest { @Test fun `present - show private room confirmation`() = runTest { - val presenter = createLeaveRoomPresenter( + val presenter = createDefaultLeaveRoomPresenter( client = FakeMatrixClient().apply { givenGetRoomResult( roomId = A_ROOM_ID, @@ -96,7 +95,7 @@ class LeaveRoomPresenterImplTest { @Test fun `present - show last user in room confirmation`() = runTest { - val presenter = createLeaveRoomPresenter( + val presenter = createDefaultLeaveRoomPresenter( client = FakeMatrixClient().apply { givenGetRoomResult( roomId = A_ROOM_ID, @@ -116,7 +115,7 @@ class LeaveRoomPresenterImplTest { @Test fun `present - show DM confirmation`() = runTest { - val presenter = createLeaveRoomPresenter( + val presenter = createDefaultLeaveRoomPresenter( client = FakeMatrixClient().apply { givenGetRoomResult( roomId = A_ROOM_ID, @@ -137,7 +136,7 @@ class LeaveRoomPresenterImplTest { @Test fun `present - leaving a room leaves the room`() = runTest { val roomMembershipObserver = RoomMembershipObserver() - val presenter = createLeaveRoomPresenter( + val presenter = createDefaultLeaveRoomPresenter( client = FakeMatrixClient().apply { givenGetRoomResult( roomId = A_ROOM_ID, @@ -159,7 +158,7 @@ class LeaveRoomPresenterImplTest { @Test fun `present - show error if leave room fails`() = runTest { - val presenter = createLeaveRoomPresenter( + val presenter = createDefaultLeaveRoomPresenter( client = FakeMatrixClient().apply { givenGetRoomResult( roomId = A_ROOM_ID, @@ -183,7 +182,7 @@ class LeaveRoomPresenterImplTest { @Test fun `present - show progress indicator while leaving a room`() = runTest { - val presenter = createLeaveRoomPresenter( + val presenter = createDefaultLeaveRoomPresenter( client = FakeMatrixClient().apply { givenGetRoomResult( roomId = A_ROOM_ID, @@ -205,7 +204,7 @@ class LeaveRoomPresenterImplTest { @Test fun `present - hide error hides the error`() = runTest { - val presenter = createLeaveRoomPresenter( + val presenter = createDefaultLeaveRoomPresenter( client = FakeMatrixClient().apply { givenGetRoomResult( roomId = A_ROOM_ID, @@ -231,10 +230,10 @@ class LeaveRoomPresenterImplTest { } } -private fun TestScope.createLeaveRoomPresenter( +private fun TestScope.createDefaultLeaveRoomPresenter( client: MatrixClient = FakeMatrixClient(), roomMembershipObserver: RoomMembershipObserver = RoomMembershipObserver(), -): LeaveRoomPresenter = LeaveRoomPresenterImpl( +): DefaultLeaveRoomPresenter = DefaultLeaveRoomPresenter( client = client, roomMembershipObserver = roomMembershipObserver, dispatchers = testCoroutineDispatchers(false), diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/PermissionsPresenterImpl.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/DefaultPermissionsPresenter.kt similarity index 93% rename from features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/PermissionsPresenterImpl.kt rename to features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/DefaultPermissionsPresenter.kt index 7966640231..bf3dd19947 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/PermissionsPresenterImpl.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/DefaultPermissionsPresenter.kt @@ -26,13 +26,14 @@ import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import io.element.android.libraries.di.AppScope -class PermissionsPresenterImpl @AssistedInject constructor( +@Suppress("unused") +class DefaultPermissionsPresenter @AssistedInject constructor( @Assisted private val permissions: List ) : PermissionsPresenter { @AssistedFactory @ContributesBinding(AppScope::class) interface Factory : PermissionsPresenter.Factory { - override fun create(permissions: List): PermissionsPresenterImpl + override fun create(permissions: List): DefaultPermissionsPresenter } @OptIn(ExperimentalPermissionsApi::class) diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationEntryPointImpl.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt similarity index 93% rename from features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationEntryPointImpl.kt rename to features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt index fb5ff1c1c7..7eb30a0a6c 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationEntryPointImpl.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt @@ -25,7 +25,7 @@ import io.element.android.libraries.di.AppScope import javax.inject.Inject @ContributesBinding(AppScope::class) -class SendLocationEntryPointImpl @Inject constructor() : SendLocationEntryPoint { +class DefaultSendLocationEntryPoint @Inject constructor() : SendLocationEntryPoint { override fun createNode( parentNode: Node, buildContext: BuildContext diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationEntryPointImpl.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt similarity index 93% rename from features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationEntryPointImpl.kt rename to features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt index 7dc1fc02f3..06ba937571 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationEntryPointImpl.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt @@ -25,7 +25,7 @@ import io.element.android.libraries.di.AppScope import javax.inject.Inject @ContributesBinding(AppScope::class) -class ShowLocationEntryPointImpl @Inject constructor() : ShowLocationEntryPoint { +class DefaultShowLocationEntryPoint @Inject constructor() : ShowLocationEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: ShowLocationEntryPoint.Inputs): Node { return parentNode.createNode(buildContext, listOf(inputs)) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt index cf366c1fba..010ebbe99d 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt @@ -72,7 +72,7 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt import io.element.android.features.messages.impl.timeline.model.event.TimelineItemUnknownContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemVideoContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemVoiceContent -import io.element.android.features.messages.impl.utils.messagesummary.MessageSummaryFormatterImpl +import io.element.android.features.messages.impl.utils.messagesummary.DefaultMessageSummaryFormatter import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.list.ListItemContent @@ -229,7 +229,7 @@ private fun MessageSummary(event: TimelineItem.Event, modifier: Modifier = Modif } val context = LocalContext.current - val formatter = remember(context) { MessageSummaryFormatterImpl(context) } + val formatter = remember(context) { DefaultMessageSummaryFormatter(context) } val textContent = remember(event.content) { formatter.format(event) } when (event.content) { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerContextImpl.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DefaultMessageComposerContext.kt similarity index 93% rename from features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerContextImpl.kt rename to features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DefaultMessageComposerContext.kt index 2353285499..0eba289355 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerContextImpl.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DefaultMessageComposerContext.kt @@ -28,7 +28,7 @@ import javax.inject.Inject @SingleIn(RoomScope::class) @ContributesBinding(RoomScope::class) -class MessageComposerContextImpl @Inject constructor() : MessageComposerContext { +class DefaultMessageComposerContext @Inject constructor() : 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/MessageComposerPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt index 929dfe024a..60e8088504 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt @@ -100,7 +100,7 @@ class MessageComposerPresenter @Inject constructor( private val mediaSender: MediaSender, private val snackbarDispatcher: SnackbarDispatcher, private val analyticsService: AnalyticsService, - private val messageComposerContext: MessageComposerContextImpl, + private val messageComposerContext: DefaultMessageComposerContext, private val richTextEditorStateFactory: RichTextEditorStateFactory, private val currentSessionIdHolder: CurrentSessionIdHolder, private val permalinkParser: PermalinkParser, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/MessageSummaryFormatterImpl.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/DefaultMessageSummaryFormatter.kt similarity index 98% rename from features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/MessageSummaryFormatterImpl.kt rename to features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/DefaultMessageSummaryFormatter.kt index 9f2717b124..c6615dc74b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/MessageSummaryFormatterImpl.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/DefaultMessageSummaryFormatter.kt @@ -40,7 +40,7 @@ import io.element.android.libraries.ui.strings.CommonStrings import javax.inject.Inject @ContributesBinding(RoomScope::class) -class MessageSummaryFormatterImpl @Inject constructor( +class DefaultMessageSummaryFormatter @Inject constructor( @ApplicationContext private val context: Context, ) : MessageSummaryFormatter { companion object { diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt index 14eb3616ad..1732087814 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt @@ -27,7 +27,7 @@ import io.element.android.features.messages.impl.actionlist.ActionListState import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction import io.element.android.features.messages.impl.fixtures.aMessageEvent import io.element.android.features.messages.impl.fixtures.aTimelineItemsFactory -import io.element.android.features.messages.impl.messagecomposer.MessageComposerContextImpl +import io.element.android.features.messages.impl.messagecomposer.DefaultMessageComposerContext import io.element.android.features.messages.impl.messagecomposer.MessageComposerPresenter import io.element.android.features.messages.impl.messagesummary.FakeMessageSummaryFormatter import io.element.android.features.messages.impl.textcomposer.TestRichTextEditorStateFactory @@ -793,7 +793,7 @@ class MessagesPresenterTest { mediaSender = mediaSender, snackbarDispatcher = SnackbarDispatcher(), analyticsService = analyticsService, - messageComposerContext = MessageComposerContextImpl(), + messageComposerContext = DefaultMessageComposerContext(), richTextEditorStateFactory = TestRichTextEditorStateFactory(), permissionsPresenterFactory = permissionsPresenterFactory, currentSessionIdHolder = CurrentSessionIdHolder(FakeMatrixClient(A_SESSION_ID)), diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt index f0bf4c42ef..91f507fc51 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt @@ -27,7 +27,7 @@ import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import im.vector.app.features.analytics.plan.Composer import io.element.android.features.messages.impl.messagecomposer.AttachmentsState -import io.element.android.features.messages.impl.messagecomposer.MessageComposerContextImpl +import io.element.android.features.messages.impl.messagecomposer.DefaultMessageComposerContext import io.element.android.features.messages.impl.messagecomposer.MessageComposerEvents import io.element.android.features.messages.impl.messagecomposer.MessageComposerPresenter import io.element.android.features.messages.impl.messagecomposer.MessageComposerState @@ -1049,7 +1049,7 @@ class MessageComposerPresenterTest { MediaSender(mediaPreProcessor, room), snackbarDispatcher, analyticsService, - MessageComposerContextImpl(), + DefaultMessageComposerContext(), TestRichTextEditorStateFactory(), currentSessionIdHolder = CurrentSessionIdHolder(FakeMatrixClient(A_SESSION_ID)), permissionsPresenterFactory = FakePermissionsPresenterFactory(permissionPresenter), diff --git a/features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/NetworkMonitorImpl.kt b/features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/DefaultNetworkMonitor.kt similarity index 98% rename from features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/NetworkMonitorImpl.kt rename to features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/DefaultNetworkMonitor.kt index ddc75669fd..d866c43ec0 100644 --- a/features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/NetworkMonitorImpl.kt +++ b/features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/DefaultNetworkMonitor.kt @@ -46,7 +46,7 @@ import javax.inject.Inject @ContributesBinding(scope = AppScope::class) @SingleIn(AppScope::class) -class NetworkMonitorImpl @Inject constructor( +class DefaultNetworkMonitor @Inject constructor( @ApplicationContext context: Context, appCoroutineScope: CoroutineScope, ) : NetworkMonitor { diff --git a/libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/PickerProviderImpl.kt b/libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/DefaultPickerProvider.kt similarity index 98% rename from libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/PickerProviderImpl.kt rename to libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/DefaultPickerProvider.kt index d5e092f9ca..606d023154 100644 --- a/libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/PickerProviderImpl.kt +++ b/libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/DefaultPickerProvider.kt @@ -37,7 +37,7 @@ import java.util.UUID import javax.inject.Inject @ContributesBinding(AppScope::class) -class PickerProviderImpl(private val isInTest: Boolean) : PickerProvider { +class DefaultPickerProvider(private val isInTest: Boolean) : PickerProvider { @Inject constructor() : this(false) diff --git a/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/MediaPlayerImpl.kt b/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/DefaultMediaPlayer.kt similarity index 99% rename from libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/MediaPlayerImpl.kt rename to libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/DefaultMediaPlayer.kt index 1cd14051a7..71ec49df80 100644 --- a/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/MediaPlayerImpl.kt +++ b/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/DefaultMediaPlayer.kt @@ -43,7 +43,7 @@ import kotlin.time.Duration.Companion.seconds */ @ContributesBinding(RoomScope::class) @SingleIn(RoomScope::class) -class MediaPlayerImpl @Inject constructor( +class DefaultMediaPlayer @Inject constructor( private val player: SimplePlayer, ) : MediaPlayer { private val listener = object : SimplePlayer.Listener { diff --git a/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/SimplePlayer.kt b/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/SimplePlayer.kt index ff8ff786ec..94495dfaa9 100644 --- a/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/SimplePlayer.kt +++ b/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/SimplePlayer.kt @@ -55,13 +55,13 @@ object SimplePlayerModule { @Provides fun simplePlayerProvider( @ApplicationContext context: Context, - ): SimplePlayer = SimplePlayerImpl(ExoPlayer.Builder(context).build()) + ): SimplePlayer = DefaultSimplePlayer(ExoPlayer.Builder(context).build()) } /** * Default implementation of [SimplePlayer] backed by a media3 [Player]. */ -class SimplePlayerImpl( +class DefaultSimplePlayer( private val p: Player ) : SimplePlayer { override fun addListener(listener: SimplePlayer.Listener) { diff --git a/libraries/mediaplayer/impl/src/test/kotlin/io/element/android/libraries/mediaplayer/impl/MediaPlayerImplTest.kt b/libraries/mediaplayer/impl/src/test/kotlin/io/element/android/libraries/mediaplayer/impl/DefaultMediaPlayerTest.kt similarity index 96% rename from libraries/mediaplayer/impl/src/test/kotlin/io/element/android/libraries/mediaplayer/impl/MediaPlayerImplTest.kt rename to libraries/mediaplayer/impl/src/test/kotlin/io/element/android/libraries/mediaplayer/impl/DefaultMediaPlayerTest.kt index bf111026e1..3a1dc96333 100644 --- a/libraries/mediaplayer/impl/src/test/kotlin/io/element/android/libraries/mediaplayer/impl/MediaPlayerImplTest.kt +++ b/libraries/mediaplayer/impl/src/test/kotlin/io/element/android/libraries/mediaplayer/impl/DefaultMediaPlayerTest.kt @@ -19,7 +19,7 @@ package io.element.android.libraries.mediaplayer.impl import kotlinx.coroutines.test.runTest import org.junit.Test -class MediaPlayerImplTest { +class DefaultMediaPlayerTest { @Test fun `default test`() = runTest { // TODO diff --git a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretImpl.kt b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecret.kt similarity index 98% rename from libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretImpl.kt rename to libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecret.kt index 5f0c83b6d7..eeebd4a999 100644 --- a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretImpl.kt +++ b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecret.kt @@ -29,7 +29,7 @@ import javax.inject.Inject @SingleIn(AppScope::class) @ContributesBinding(AppScope::class, boundType = PushClientSecret::class) -class PushClientSecretImpl @Inject constructor( +class DefaultPushClientSecret @Inject constructor( private val pushClientSecretFactory: PushClientSecretFactory, private val pushClientSecretStore: PushClientSecretStore, private val sessionObserver: SessionObserver, diff --git a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretFactoryImpl.kt b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretFactory.kt similarity index 92% rename from libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretFactoryImpl.kt rename to libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretFactory.kt index 4e6e718a60..9e4b06e918 100644 --- a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretFactoryImpl.kt +++ b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretFactory.kt @@ -23,7 +23,7 @@ import java.util.UUID import javax.inject.Inject @ContributesBinding(AppScope::class) -class PushClientSecretFactoryImpl @Inject constructor() : PushClientSecretFactory { +class DefaultPushClientSecretFactory @Inject constructor() : PushClientSecretFactory { override fun create(): String { return UUID.randomUUID().toString() } diff --git a/libraries/pushstore/impl/src/test/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretImplTest.kt b/libraries/pushstore/impl/src/test/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretTest.kt similarity index 95% rename from libraries/pushstore/impl/src/test/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretImplTest.kt rename to libraries/pushstore/impl/src/test/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretTest.kt index 0277feef45..0031c07021 100644 --- a/libraries/pushstore/impl/src/test/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretImplTest.kt +++ b/libraries/pushstore/impl/src/test/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretTest.kt @@ -28,12 +28,12 @@ private val A_USER_ID_1 = SessionId("@A_USER_ID_1:domain") private const val A_UNKNOWN_SECRET = "A_UNKNOWN_SECRET" -internal class PushClientSecretImplTest { +internal class DefaultPushClientSecretTest { @Test fun test() = runTest { val factory = FakePushClientSecretFactory() val store = InMemoryPushClientSecretStore() - val sut = PushClientSecretImpl(factory, store, NoOpSessionObserver()) + val sut = DefaultPushClientSecret(factory, store, NoOpSessionObserver()) val secret0 = factory.getSecretForUser(0) val secret1 = factory.getSecretForUser(1) diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImpl.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorder.kt similarity index 99% rename from libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImpl.kt rename to libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorder.kt index 3c4d7dd15f..9ebeda3460 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImpl.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorder.kt @@ -51,7 +51,7 @@ import kotlin.time.TimeSource @SingleIn(RoomScope::class) @ContributesBinding(RoomScope::class) -class VoiceRecorderImpl @Inject constructor( +class DefaultVoiceRecorder @Inject constructor( private val dispatchers: CoroutineDispatchers, private val timeSource: TimeSource, private val audioReaderFactory: AudioReader.Factory, diff --git a/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImplTest.kt b/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorderTest.kt similarity index 93% rename from libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImplTest.kt rename to libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorderTest.kt index 022661bc11..be12aa04b1 100644 --- a/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImplTest.kt +++ b/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorderTest.kt @@ -44,13 +44,13 @@ import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds import kotlin.time.TestTimeSource -class VoiceRecorderImplTest { +class DefaultVoiceRecorderTest { private val fakeFileSystem = FakeFileSystem() private val timeSource = TestTimeSource() @Test fun `it emits the initial state`() = runTest { - val voiceRecorder = createVoiceRecorder() + val voiceRecorder = createDefaultVoiceRecorder() voiceRecorder.state.test { assertThat(awaitItem()).isEqualTo(VoiceRecorderState.Idle) } @@ -58,7 +58,7 @@ class VoiceRecorderImplTest { @Test fun `when recording, it emits the recording state`() = runTest { - val voiceRecorder = createVoiceRecorder() + val voiceRecorder = createDefaultVoiceRecorder() voiceRecorder.state.test { assertThat(awaitItem()).isEqualTo(VoiceRecorderState.Idle) @@ -73,7 +73,7 @@ class VoiceRecorderImplTest { @Test fun `when elapsed time reaches 30 minutes, it stops recording`() = runTest { - val voiceRecorder = createVoiceRecorder() + val voiceRecorder = createDefaultVoiceRecorder() voiceRecorder.state.test { assertThat(awaitItem()).isEqualTo(VoiceRecorderState.Idle) @@ -96,7 +96,7 @@ class VoiceRecorderImplTest { @Test fun `when stopped, it provides a file and duration`() = runTest { - val voiceRecorder = createVoiceRecorder() + val voiceRecorder = createDefaultVoiceRecorder() voiceRecorder.state.test { assertThat(awaitItem()).isEqualTo(VoiceRecorderState.Idle) @@ -119,7 +119,7 @@ class VoiceRecorderImplTest { @Test fun `when cancelled, it deletes the file`() = runTest { - val voiceRecorder = createVoiceRecorder() + val voiceRecorder = createDefaultVoiceRecorder() voiceRecorder.state.test { assertThat(awaitItem()).isEqualTo(VoiceRecorderState.Idle) @@ -131,9 +131,9 @@ class VoiceRecorderImplTest { } } - private fun TestScope.createVoiceRecorder(): VoiceRecorderImpl { + private fun TestScope.createDefaultVoiceRecorder(): DefaultVoiceRecorder { val fileConfig = VoiceRecorderModule.provideVoiceFileConfig() - return VoiceRecorderImpl( + return DefaultVoiceRecorder( dispatchers = testCoroutineDispatchers(), timeSource = timeSource, audioReaderFactory = FakeAudioReaderFactory( diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt index 306a69edcc..ccc9164ca3 100644 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt +++ b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt @@ -22,8 +22,8 @@ import androidx.compose.runtime.DisposableEffect import androidx.compose.ui.Modifier import io.element.android.features.invite.impl.response.AcceptDeclineInvitePresenter import io.element.android.features.invite.impl.response.AcceptDeclineInviteView -import io.element.android.features.leaveroom.impl.LeaveRoomPresenterImpl -import io.element.android.features.networkmonitor.impl.NetworkMonitorImpl +import io.element.android.features.leaveroom.impl.DefaultLeaveRoomPresenter +import io.element.android.features.networkmonitor.impl.DefaultNetworkMonitor import io.element.android.features.roomlist.impl.RoomListPresenter import io.element.android.features.roomlist.impl.RoomListView import io.element.android.features.roomlist.impl.datasource.RoomListDataSource @@ -97,9 +97,9 @@ class RoomListScreen( ) private val presenter = RoomListPresenter( client = matrixClient, - networkMonitor = NetworkMonitorImpl(context, Singleton.appScope), + networkMonitor = DefaultNetworkMonitor(context, Singleton.appScope), snackbarDispatcher = SnackbarDispatcher(), - leaveRoomPresenter = LeaveRoomPresenterImpl(matrixClient, RoomMembershipObserver(), coroutineDispatchers), + leaveRoomPresenter = DefaultLeaveRoomPresenter(matrixClient, RoomMembershipObserver(), coroutineDispatchers), roomListDataSource = RoomListDataSource( roomListService = matrixClient.roomListService, roomListRoomSummaryFactory = roomListRoomSummaryFactory, diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt index 679191975f..7534590f25 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt @@ -89,6 +89,7 @@ class KonsistClassNameTest { Konsist.scopeFromProject() .classes() .withNameEndingWith("Impl") + .withoutName("MediaUploadHandlerImpl") .assertEmpty(additionalMessage = "Class implementing interface should have name not end with 'Impl' but start with 'Default'") } } From f886eab582f5800b2a29075c85d48c4cb1acdf86 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 May 2024 09:51:32 +0200 Subject: [PATCH 3/7] Remove LeaveRoomPresenterImplModule and use ContributesBinding --- .../impl/DefaultLeaveRoomPresenter.kt | 3 ++ .../impl/LeaveRoomPresenterImplModule.kt | 30 ------------------- 2 files changed, 3 insertions(+), 30 deletions(-) delete mode 100644 features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplModule.kt diff --git a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/DefaultLeaveRoomPresenter.kt b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/DefaultLeaveRoomPresenter.kt index 1d4b78f75c..c949a5f446 100644 --- a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/DefaultLeaveRoomPresenter.kt +++ b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/DefaultLeaveRoomPresenter.kt @@ -21,6 +21,7 @@ import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope +import com.squareup.anvil.annotations.ContributesBinding import io.element.android.features.leaveroom.api.LeaveRoomEvent import io.element.android.features.leaveroom.api.LeaveRoomPresenter import io.element.android.features.leaveroom.api.LeaveRoomState @@ -29,6 +30,7 @@ import io.element.android.features.leaveroom.api.LeaveRoomState.Confirmation.Gen import io.element.android.features.leaveroom.api.LeaveRoomState.Confirmation.LastUserInRoom import io.element.android.features.leaveroom.api.LeaveRoomState.Confirmation.PrivateRoom import io.element.android.libraries.core.coroutine.CoroutineDispatchers +import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.room.RoomMembershipObserver @@ -36,6 +38,7 @@ import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject +@ContributesBinding(SessionScope::class) class DefaultLeaveRoomPresenter @Inject constructor( private val client: MatrixClient, private val roomMembershipObserver: RoomMembershipObserver, diff --git a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplModule.kt b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplModule.kt deleted file mode 100644 index a20be4f65f..0000000000 --- a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplModule.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2023 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.element.android.features.leaveroom.impl - -import com.squareup.anvil.annotations.ContributesTo -import dagger.Binds -import dagger.Module -import io.element.android.features.leaveroom.api.LeaveRoomPresenter -import io.element.android.libraries.di.SessionScope - -@Module -@ContributesTo(SessionScope::class) -interface LeaveRoomPresenterImplModule { - @Binds - fun leaveRoomPresenter(leaveRoomPresenter: DefaultLeaveRoomPresenter): LeaveRoomPresenter -} From 3fa508f1feb668648cf2a29860a5b4ef76faa28d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 May 2024 10:18:08 +0200 Subject: [PATCH 4/7] Add Konsist test `Class with 'ContributeBinding' annotation should have allowed prefix` and fix exissting issues. Also remove annotation `DefaultPreferences`, we only have one implementation. --- .../io/element/android/x/di/AppModule.kt | 4 +-- .../x/initializer/TracingInitializer.kt | 4 +-- .../state/AndroidWelcomeScreenState.kt | 3 +- ...r.kt => DefaultAcceptDeclineInviteView.kt} | 2 +- .../tracing/TracingConfigurationStore.kt | 5 ++-- ... SharedPreferencesMigrationScreenStore.kt} | 5 ++-- .../libraries/di/DefaultPreferences.kt | 21 ------------- .../pushproviders/firebase/FirebaseStore.kt | 9 +++--- .../unifiedpush/UnifiedPushStore.kt | 17 +++++------ ...e.kt => DataStorePushClientSecretStore.kt} | 2 +- .../android/samples/minimal/RoomListScreen.kt | 4 +-- .../tests/konsist/KonsistClassNameTest.kt | 30 +++++++++++++++++++ 12 files changed, 54 insertions(+), 52 deletions(-) rename features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/{AcceptDeclineInviteViewWrapper.kt => DefaultAcceptDeclineInviteView.kt} (96%) rename features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/migration/{SharedPrefsMigrationScreenStore.kt => SharedPreferencesMigrationScreenStore.kt} (91%) delete mode 100644 libraries/di/src/main/kotlin/io/element/android/libraries/di/DefaultPreferences.kt rename libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/{PushClientSecretStoreDataStore.kt => DataStorePushClientSecretStore.kt} (97%) diff --git a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt index 3187cae410..dd0ad775fe 100644 --- a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt +++ b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt @@ -34,7 +34,6 @@ import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatch import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.di.CacheDirectory -import io.element.android.libraries.di.DefaultPreferences import io.element.android.libraries.di.SingleIn import io.element.android.x.BuildConfig import io.element.android.x.R @@ -97,8 +96,7 @@ object AppModule { @Provides @SingleIn(AppScope::class) - @DefaultPreferences - fun providesDefaultSharedPreferences(@ApplicationContext context: Context): SharedPreferences { + fun providesSharedPreferences(@ApplicationContext context: Context): SharedPreferences { return PreferenceManager.getDefaultSharedPreferences(context) } diff --git a/app/src/main/kotlin/io/element/android/x/initializer/TracingInitializer.kt b/app/src/main/kotlin/io/element/android/x/initializer/TracingInitializer.kt index e037d2978f..3c938e2a6d 100644 --- a/app/src/main/kotlin/io/element/android/x/initializer/TracingInitializer.kt +++ b/app/src/main/kotlin/io/element/android/x/initializer/TracingInitializer.kt @@ -20,7 +20,7 @@ import android.content.Context import android.system.Os import androidx.preference.PreferenceManager import androidx.startup.Initializer -import io.element.android.features.preferences.impl.developer.tracing.SharedPrefTracingConfigurationStore +import io.element.android.features.preferences.impl.developer.tracing.SharedPreferencesTracingConfigurationStore import io.element.android.features.preferences.impl.developer.tracing.TargetLogLevelMapBuilder import io.element.android.libraries.architecture.bindings import io.element.android.libraries.matrix.api.tracing.TracingConfiguration @@ -38,7 +38,7 @@ class TracingInitializer : Initializer { Timber.plant(tracingService.createTimberTree()) val tracingConfiguration = if (BuildConfig.DEBUG) { val prefs = PreferenceManager.getDefaultSharedPreferences(context) - val store = SharedPrefTracingConfigurationStore(prefs) + val store = SharedPreferencesTracingConfigurationStore(prefs) val builder = TargetLogLevelMapBuilder(store) TracingConfiguration( filterConfiguration = TracingFilterConfigurations.custom(builder.getCurrentMap()), diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/AndroidWelcomeScreenState.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/AndroidWelcomeScreenState.kt index 00629d7d03..38084c6fb8 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/AndroidWelcomeScreenState.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/AndroidWelcomeScreenState.kt @@ -20,14 +20,13 @@ import android.content.SharedPreferences import androidx.core.content.edit import com.squareup.anvil.annotations.ContributesBinding import io.element.android.libraries.di.AppScope -import io.element.android.libraries.di.DefaultPreferences import io.element.android.libraries.di.SingleIn import javax.inject.Inject @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) class AndroidWelcomeScreenState @Inject constructor( - @DefaultPreferences private val sharedPreferences: SharedPreferences, + private val sharedPreferences: SharedPreferences, ) : WelcomeScreenState { companion object { private const val IS_WELCOME_SCREEN_SHOWN = "is_welcome_screen_shown" diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInviteViewWrapper.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/DefaultAcceptDeclineInviteView.kt similarity index 96% rename from features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInviteViewWrapper.kt rename to features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/DefaultAcceptDeclineInviteView.kt index 14080cdf12..f7654fa2f3 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInviteViewWrapper.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/DefaultAcceptDeclineInviteView.kt @@ -26,7 +26,7 @@ import io.element.android.libraries.matrix.api.core.RoomId import javax.inject.Inject @ContributesBinding(SessionScope::class) -class AcceptDeclineInviteViewWrapper @Inject constructor() : AcceptDeclineInviteView { +class DefaultAcceptDeclineInviteView @Inject constructor() : AcceptDeclineInviteView { @Composable override fun Render( state: AcceptDeclineInviteState, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/tracing/TracingConfigurationStore.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/tracing/TracingConfigurationStore.kt index 582231eb50..c77a3b2d3d 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/tracing/TracingConfigurationStore.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/tracing/TracingConfigurationStore.kt @@ -20,7 +20,6 @@ import android.content.SharedPreferences import androidx.core.content.edit import com.squareup.anvil.annotations.ContributesBinding import io.element.android.libraries.di.AppScope -import io.element.android.libraries.di.DefaultPreferences import io.element.android.libraries.matrix.api.tracing.LogLevel import io.element.android.libraries.matrix.api.tracing.Target import javax.inject.Inject @@ -32,8 +31,8 @@ interface TracingConfigurationStore { } @ContributesBinding(AppScope::class) -class SharedPrefTracingConfigurationStore @Inject constructor( - @DefaultPreferences private val sharedPreferences: SharedPreferences +class SharedPreferencesTracingConfigurationStore @Inject constructor( + private val sharedPreferences: SharedPreferences ) : TracingConfigurationStore { override fun getLogLevel(target: Target): LogLevel? { return sharedPreferences.getString("$KEY_PREFIX${target.name}", null) diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/migration/SharedPrefsMigrationScreenStore.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/migration/SharedPreferencesMigrationScreenStore.kt similarity index 91% rename from features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/migration/SharedPrefsMigrationScreenStore.kt rename to features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/migration/SharedPreferencesMigrationScreenStore.kt index 62121fd282..344c84b6a6 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/migration/SharedPrefsMigrationScreenStore.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/migration/SharedPreferencesMigrationScreenStore.kt @@ -22,13 +22,12 @@ import com.squareup.anvil.annotations.ContributesBinding import io.element.android.features.roomlist.api.migration.MigrationScreenStore import io.element.android.libraries.androidutils.hash.hash import io.element.android.libraries.di.AppScope -import io.element.android.libraries.di.DefaultPreferences import io.element.android.libraries.matrix.api.core.SessionId import javax.inject.Inject @ContributesBinding(AppScope::class) -class SharedPrefsMigrationScreenStore @Inject constructor( - @DefaultPreferences private val sharedPreferences: SharedPreferences, +class SharedPreferencesMigrationScreenStore @Inject constructor( + private val sharedPreferences: SharedPreferences, ) : MigrationScreenStore { override fun isMigrationScreenNeeded(sessionId: SessionId): Boolean { return sharedPreferences.getBoolean(sessionId.toKey(), false).not() diff --git a/libraries/di/src/main/kotlin/io/element/android/libraries/di/DefaultPreferences.kt b/libraries/di/src/main/kotlin/io/element/android/libraries/di/DefaultPreferences.kt deleted file mode 100644 index 2a4f9b8ac1..0000000000 --- a/libraries/di/src/main/kotlin/io/element/android/libraries/di/DefaultPreferences.kt +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2022 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.element.android.libraries.di - -import javax.inject.Qualifier - -@Qualifier annotation class DefaultPreferences diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseStore.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseStore.kt index 0614e2065c..1c8b6c5ed8 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseStore.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseStore.kt @@ -20,7 +20,6 @@ import android.content.SharedPreferences import androidx.core.content.edit import com.squareup.anvil.annotations.ContributesBinding import io.element.android.libraries.di.AppScope -import io.element.android.libraries.di.DefaultPreferences import javax.inject.Inject /** @@ -32,15 +31,15 @@ interface FirebaseStore { } @ContributesBinding(AppScope::class) -class DefaultFirebaseStore @Inject constructor( - @DefaultPreferences private val sharedPrefs: SharedPreferences, +class SharedPreferencesFirebaseStore @Inject constructor( + private val sharedPreferences: SharedPreferences, ) : FirebaseStore { override fun getFcmToken(): String? { - return sharedPrefs.getString(PREFS_KEY_FCM_TOKEN, null) + return sharedPreferences.getString(PREFS_KEY_FCM_TOKEN, null) } override fun storeFcmToken(token: String?) { - sharedPrefs.edit { + sharedPreferences.edit { putString(PREFS_KEY_FCM_TOKEN, token) } } diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushStore.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushStore.kt index dc1bd86d9e..12ba32e620 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushStore.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushStore.kt @@ -22,7 +22,6 @@ import androidx.core.content.edit import com.squareup.anvil.annotations.ContributesBinding import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.ApplicationContext -import io.element.android.libraries.di.DefaultPreferences import io.element.android.libraries.matrix.api.core.UserId import javax.inject.Inject @@ -36,9 +35,9 @@ interface UnifiedPushStore { } @ContributesBinding(AppScope::class) -class DefaultUnifiedPushStore @Inject constructor( +class SharedPreferencesUnifiedPushStore @Inject constructor( @ApplicationContext val context: Context, - @DefaultPreferences private val defaultPrefs: SharedPreferences, + private val sharedPreferences: SharedPreferences, ) : UnifiedPushStore { /** * Retrieves the UnifiedPush Endpoint. @@ -47,7 +46,7 @@ class DefaultUnifiedPushStore @Inject constructor( * @return the UnifiedPush Endpoint or null if not received */ override fun getEndpoint(clientSecret: String): String? { - return defaultPrefs.getString(PREFS_ENDPOINT_OR_TOKEN + clientSecret, null) + return sharedPreferences.getString(PREFS_ENDPOINT_OR_TOKEN + clientSecret, null) } /** @@ -57,7 +56,7 @@ class DefaultUnifiedPushStore @Inject constructor( * @param endpoint the endpoint to store */ override fun storeUpEndpoint(clientSecret: String, endpoint: String?) { - defaultPrefs.edit { + sharedPreferences.edit { putString(PREFS_ENDPOINT_OR_TOKEN + clientSecret, endpoint) } } @@ -69,7 +68,7 @@ class DefaultUnifiedPushStore @Inject constructor( * @return the Push Gateway or null if not defined */ override fun getPushGateway(clientSecret: String): String? { - return defaultPrefs.getString(PREFS_PUSH_GATEWAY + clientSecret, null) + return sharedPreferences.getString(PREFS_PUSH_GATEWAY + clientSecret, null) } /** @@ -79,17 +78,17 @@ class DefaultUnifiedPushStore @Inject constructor( * @param gateway the push gateway to store */ override fun storePushGateway(clientSecret: String, gateway: String?) { - defaultPrefs.edit { + sharedPreferences.edit { putString(PREFS_PUSH_GATEWAY + clientSecret, gateway) } } override fun getDistributorValue(userId: UserId): String? { - return defaultPrefs.getString(PREFS_DISTRIBUTOR + userId, null) + return sharedPreferences.getString(PREFS_DISTRIBUTOR + userId, null) } override fun setDistributorValue(userId: UserId, value: String) { - defaultPrefs.edit { + sharedPreferences.edit { putString(PREFS_DISTRIBUTOR + userId, value) } } diff --git a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretStoreDataStore.kt b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DataStorePushClientSecretStore.kt similarity index 97% rename from libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretStoreDataStore.kt rename to libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DataStorePushClientSecretStore.kt index 92ba2bfe1e..414e868cd4 100644 --- a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/PushClientSecretStoreDataStore.kt +++ b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DataStorePushClientSecretStore.kt @@ -33,7 +33,7 @@ import javax.inject.Inject private val Context.dataStore: DataStore by preferencesDataStore(name = "push_client_secret_store") @ContributesBinding(AppScope::class) -class PushClientSecretStoreDataStore @Inject constructor( +class DataStorePushClientSecretStore @Inject constructor( @ApplicationContext private val context: Context, ) : PushClientSecretStore { override suspend fun storeSecret(userId: SessionId, clientSecret: String) { diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt index ccc9164ca3..c6812f84ba 100644 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt +++ b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt @@ -31,7 +31,7 @@ import io.element.android.features.roomlist.impl.datasource.RoomListRoomSummaryF import io.element.android.features.roomlist.impl.filters.RoomListFiltersPresenter import io.element.android.features.roomlist.impl.filters.selection.DefaultFilterSelectionStrategy import io.element.android.features.roomlist.impl.migration.MigrationScreenPresenter -import io.element.android.features.roomlist.impl.migration.SharedPrefsMigrationScreenStore +import io.element.android.features.roomlist.impl.migration.SharedPreferencesMigrationScreenStore import io.element.android.features.roomlist.impl.search.RoomListSearchDataSource import io.element.android.features.roomlist.impl.search.RoomListSearchPresenter import io.element.android.libraries.core.coroutine.CoroutineDispatchers @@ -114,7 +114,7 @@ class RoomListScreen( featureFlagService = featureFlagService, migrationScreenPresenter = MigrationScreenPresenter( matrixClient = matrixClient, - migrationScreenStore = SharedPrefsMigrationScreenStore(context.getSharedPreferences("migration", Context.MODE_PRIVATE)) + migrationScreenStore = SharedPreferencesMigrationScreenStore(context.getSharedPreferences("migration", Context.MODE_PRIVATE)) ), searchPresenter = RoomListSearchPresenter( RoomListSearchDataSource( diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt index 7534590f25..f126640149 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt @@ -20,9 +20,11 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider import com.bumble.appyx.core.node.Node import com.lemonappdev.konsist.api.Konsist import com.lemonappdev.konsist.api.ext.list.withAllParentsOf +import com.lemonappdev.konsist.api.ext.list.withAnnotationNamed import com.lemonappdev.konsist.api.ext.list.withNameContaining import com.lemonappdev.konsist.api.ext.list.withNameEndingWith import com.lemonappdev.konsist.api.ext.list.withoutName +import com.lemonappdev.konsist.api.ext.list.withoutNameStartingWith import com.lemonappdev.konsist.api.verify.assertEmpty import com.lemonappdev.konsist.api.verify.assertTrue import io.element.android.libraries.architecture.Presenter @@ -92,4 +94,32 @@ class KonsistClassNameTest { .withoutName("MediaUploadHandlerImpl") .assertEmpty(additionalMessage = "Class implementing interface should have name not end with 'Impl' but start with 'Default'") } + + @Test + fun `Class with 'ContributeBinding' annotation should have allowed prefix`() { + Konsist.scopeFromProject() + .classes() + .withAnnotationNamed("ContributesBinding") + .withoutName( + "Factory", + "TimelineController", + ) + .withoutNameStartingWith( + "Accompanist", + "AES", + "Android", + "Database", + "DBov", + "Default", + "DataStore", + "FileExtensionExtractor", + "KeyStore", + "Matrix", + "Noop", + "Preferences", + "Rust", + "SharedPreferences", + ) + .assertEmpty() + } } From ade3b5de4f570600bcecbcab9f3ad26ab58cce41 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 May 2024 10:19:55 +0200 Subject: [PATCH 5/7] Fix naming issue. --- ...eScreenState.kt => SharedPreferencesWelcomeScreenState.kt} | 4 ++-- .../state/{WelcomeScreenState.kt => WelcomeScreenStore.kt} | 2 +- ...akeWelcomeScreenState.kt => InMemoryWelcomeScreenState.kt} | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/{AndroidWelcomeScreenState.kt => SharedPreferencesWelcomeScreenState.kt} (94%) rename features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/{WelcomeScreenState.kt => WelcomeScreenStore.kt} (96%) rename features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/welcome/state/{FakeWelcomeScreenState.kt => InMemoryWelcomeScreenState.kt} (94%) diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/AndroidWelcomeScreenState.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/SharedPreferencesWelcomeScreenState.kt similarity index 94% rename from features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/AndroidWelcomeScreenState.kt rename to features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/SharedPreferencesWelcomeScreenState.kt index 38084c6fb8..c318f2feb7 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/AndroidWelcomeScreenState.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/SharedPreferencesWelcomeScreenState.kt @@ -25,9 +25,9 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -class AndroidWelcomeScreenState @Inject constructor( +class SharedPreferencesWelcomeScreenState @Inject constructor( private val sharedPreferences: SharedPreferences, -) : WelcomeScreenState { +) : WelcomeScreenStore { companion object { private const val IS_WELCOME_SCREEN_SHOWN = "is_welcome_screen_shown" } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/WelcomeScreenState.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/WelcomeScreenStore.kt similarity index 96% rename from features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/WelcomeScreenState.kt rename to features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/WelcomeScreenStore.kt index d2be17fcbb..a7a5b26a4c 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/WelcomeScreenState.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/state/WelcomeScreenStore.kt @@ -16,7 +16,7 @@ package io.element.android.features.ftue.impl.welcome.state -interface WelcomeScreenState { +interface WelcomeScreenStore { fun isWelcomeScreenNeeded(): Boolean fun setWelcomeScreenShown() fun reset() diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/welcome/state/FakeWelcomeScreenState.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/welcome/state/InMemoryWelcomeScreenState.kt similarity index 94% rename from features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/welcome/state/FakeWelcomeScreenState.kt rename to features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/welcome/state/InMemoryWelcomeScreenState.kt index 66ffe24285..a75c659c7b 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/welcome/state/FakeWelcomeScreenState.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/welcome/state/InMemoryWelcomeScreenState.kt @@ -16,7 +16,7 @@ package io.element.android.features.ftue.impl.welcome.state -class FakeWelcomeScreenState : WelcomeScreenState { +class InMemoryWelcomeScreenState : WelcomeScreenStore { private var isWelcomeScreenNeeded = true override fun isWelcomeScreenNeeded(): Boolean { From 9e387534e746ed226e16652c5894a12e7a361201 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 May 2024 11:34:28 +0200 Subject: [PATCH 6/7] Exclude io.element.android.features.location.impl.common.permissions.DefaultPermissionsPresenter from kover check --- plugins/src/main/kotlin/extension/KoverExtension.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/src/main/kotlin/extension/KoverExtension.kt b/plugins/src/main/kotlin/extension/KoverExtension.kt index ff66d1d6c6..f83dfb46b8 100644 --- a/plugins/src/main/kotlin/extension/KoverExtension.kt +++ b/plugins/src/main/kotlin/extension/KoverExtension.kt @@ -162,6 +162,8 @@ fun Project.setupKover() { "io.element.android.appnav.loggedin.LoggedInPresenter$*", // Some options can't be tested at the moment "io.element.android.features.preferences.impl.developer.DeveloperSettingsPresenter$*", + // Need an Activity to use rememberMultiplePermissionsState + "io.element.android.features.location.impl.common.permissions.DefaultPermissionsPresenter$*", "*Presenter\$present\$*", ) } From 2aeab9ea29f10bc4cdc133f5df4450f1de82f435 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 May 2024 12:34:24 +0200 Subject: [PATCH 7/7] Second try... --- plugins/src/main/kotlin/extension/KoverExtension.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/src/main/kotlin/extension/KoverExtension.kt b/plugins/src/main/kotlin/extension/KoverExtension.kt index f83dfb46b8..19622f3256 100644 --- a/plugins/src/main/kotlin/extension/KoverExtension.kt +++ b/plugins/src/main/kotlin/extension/KoverExtension.kt @@ -163,7 +163,7 @@ fun Project.setupKover() { // Some options can't be tested at the moment "io.element.android.features.preferences.impl.developer.DeveloperSettingsPresenter$*", // Need an Activity to use rememberMultiplePermissionsState - "io.element.android.features.location.impl.common.permissions.DefaultPermissionsPresenter$*", + "io.element.android.features.location.impl.common.permissions.DefaultPermissionsPresenter", "*Presenter\$present\$*", ) }