From 0037da4ce56caf12eedd3c2da36824f37f666719 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 6 Mar 2023 11:42:55 +0100 Subject: [PATCH] Split module `dateformatter` into `api`, `impl` and `test`. --- app/build.gradle.kts | 1 + features/messages/build.gradle.kts | 3 +- .../TimelineItemDaySeparatorFactory.kt | 2 +- .../messages/fixtures/timelineItemsFactory.kt | 2 +- features/roomlist/build.gradle.kts | 2 +- .../features/roomlist/RoomListPresenter.kt | 2 +- .../roomlist/FakeLastMessageFormatter.kt | 2 +- .../roomlist/RoomListPresenterTests.kt | 2 +- libraries/dateformatter/{ => api}/.gitignore | 0 libraries/dateformatter/api/build.gradle.kts | 25 ++++++++++++++++ .../{ => api}/consumer-rules.pro | 0 .../{ => api}/proguard-rules.pro | 0 .../{ => api}/src/main/AndroidManifest.xml | 0 .../api}/DaySeparatorFormatter.kt | 2 +- .../api}/LastMessageFormatter.kt | 2 +- libraries/dateformatter/impl/.gitignore | 1 + .../dateformatter/{ => impl}/build.gradle.kts | 6 ++-- .../dateformatter/impl/consumer-rules.pro | 0 .../dateformatter/impl/proguard-rules.pro | 21 +++++++++++++ .../impl/src/main/AndroidManifest.xml | 16 ++++++++++ .../dateformatter/impl/DateFormatters.kt | 0 .../impl/DefaultDaySeparatorFormatter.kt | 2 +- .../impl/DefaultLastMessageFormatter.kt | 2 +- .../impl/LocalDateTimeProvider.kt | 0 .../impl}/di/DateFormatterModule.kt | 2 +- .../impl/DefaultLastMessageFormatterTest.kt | 3 +- libraries/dateformatter/test/.gitignore | 1 + libraries/dateformatter/test/build.gradle.kts | 30 +++++++++++++++++++ .../dateformatter/test/consumer-rules.pro | 0 .../dateformatter/test/proguard-rules.pro | 21 +++++++++++++ .../test/src/main/AndroidManifest.xml | 16 ++++++++++ .../dateformatter/test}/FakeClock.kt | 2 +- .../test}/FakeDaySeparatorFormatter.kt | 4 +-- .../kotlin/extension/DependencyHandleScope.kt | 2 +- samples/minimal/build.gradle.kts | 3 +- settings.gradle.kts | 4 ++- 36 files changed, 160 insertions(+), 21 deletions(-) rename libraries/dateformatter/{ => api}/.gitignore (100%) create mode 100644 libraries/dateformatter/api/build.gradle.kts rename libraries/dateformatter/{ => api}/consumer-rules.pro (100%) rename libraries/dateformatter/{ => api}/proguard-rules.pro (100%) rename libraries/dateformatter/{ => api}/src/main/AndroidManifest.xml (100%) rename libraries/dateformatter/{src/main/kotlin/io/element/android/libraries/dateformatter => api/src/main/kotlin/io/element/android/libraries/dateformatter/api}/DaySeparatorFormatter.kt (92%) rename libraries/dateformatter/{src/main/kotlin/io/element/android/libraries/dateformatter => api/src/main/kotlin/io/element/android/libraries/dateformatter/api}/LastMessageFormatter.kt (92%) create mode 100644 libraries/dateformatter/impl/.gitignore rename libraries/dateformatter/{ => impl}/build.gradle.kts (86%) create mode 100644 libraries/dateformatter/impl/consumer-rules.pro create mode 100644 libraries/dateformatter/impl/proguard-rules.pro create mode 100644 libraries/dateformatter/impl/src/main/AndroidManifest.xml rename libraries/dateformatter/{ => impl}/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt (100%) rename libraries/dateformatter/{ => impl}/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDaySeparatorFormatter.kt (94%) rename libraries/dateformatter/{ => impl}/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatter.kt (95%) rename libraries/dateformatter/{ => impl}/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt (100%) rename libraries/dateformatter/{src/main/kotlin/io/element/android/libraries/dateformatter => impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl}/di/DateFormatterModule.kt (94%) rename libraries/dateformatter/{ => impl}/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatterTest.kt (96%) create mode 100644 libraries/dateformatter/test/.gitignore create mode 100644 libraries/dateformatter/test/build.gradle.kts create mode 100644 libraries/dateformatter/test/consumer-rules.pro create mode 100644 libraries/dateformatter/test/proguard-rules.pro create mode 100644 libraries/dateformatter/test/src/main/AndroidManifest.xml rename libraries/dateformatter/{src/test/kotlin/io/element/android/libraries/dateformatter/impl => test/src/main/kotlin/io/element/android/libraries/dateformatter/test}/FakeClock.kt (94%) rename {features/messages/src/test/kotlin/io/element/android/features/messages/fakes => libraries/dateformatter/test/src/main/kotlin/io/element/android/libraries/dateformatter/test}/FakeDaySeparatorFormatter.kt (86%) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0f5ba569ff..80df2d1392 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -199,6 +199,7 @@ dependencies { allLibraries() allFeatures() implementation(projects.libraries.matrix.impl) + implementation(projects.libraries.dateformatter.impl) implementation(projects.tests.uitests) implementation(projects.anvilannotations) anvil(projects.anvilcodegen) diff --git a/features/messages/build.gradle.kts b/features/messages/build.gradle.kts index eb73115c8a..316bb1e5c3 100644 --- a/features/messages/build.gradle.kts +++ b/features/messages/build.gradle.kts @@ -39,7 +39,7 @@ dependencies { implementation(projects.libraries.matrixui) implementation(projects.libraries.designsystem) implementation(projects.libraries.textcomposer) - implementation(projects.libraries.dateformatter) + implementation(projects.libraries.dateformatter.api) implementation(libs.coil.compose) implementation(libs.datetime) implementation(libs.accompanist.flowlayout) @@ -52,6 +52,7 @@ dependencies { testImplementation(libs.test.truth) testImplementation(libs.test.turbine) testImplementation(projects.libraries.matrix.test) + testImplementation(projects.libraries.dateformatter.test) androidTestImplementation(libs.test.junitext) ksp(libs.showkase.processor) diff --git a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/factories/virtual/TimelineItemDaySeparatorFactory.kt b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/factories/virtual/TimelineItemDaySeparatorFactory.kt index 43a6beada7..0f2a9f7ede 100644 --- a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/factories/virtual/TimelineItemDaySeparatorFactory.kt +++ b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/factories/virtual/TimelineItemDaySeparatorFactory.kt @@ -18,7 +18,7 @@ package io.element.android.features.messages.timeline.factories.virtual import io.element.android.features.messages.timeline.model.virtual.TimelineItemDaySeparatorModel import io.element.android.features.messages.timeline.model.virtual.TimelineItemVirtualModel -import io.element.android.libraries.dateformatter.DaySeparatorFormatter +import io.element.android.libraries.dateformatter.api.DaySeparatorFormatter import org.matrix.rustcomponents.sdk.VirtualTimelineItem import javax.inject.Inject diff --git a/features/messages/src/test/kotlin/io/element/android/features/messages/fixtures/timelineItemsFactory.kt b/features/messages/src/test/kotlin/io/element/android/features/messages/fixtures/timelineItemsFactory.kt index fc4cecf203..7cf4b3b766 100644 --- a/features/messages/src/test/kotlin/io/element/android/features/messages/fixtures/timelineItemsFactory.kt +++ b/features/messages/src/test/kotlin/io/element/android/features/messages/fixtures/timelineItemsFactory.kt @@ -16,7 +16,6 @@ package io.element.android.features.messages.fixtures -import io.element.android.features.messages.fakes.FakeDaySeparatorFormatter import io.element.android.features.messages.timeline.factories.TimelineItemsFactory import io.element.android.features.messages.timeline.factories.event.TimelineItemContentFactory import io.element.android.features.messages.timeline.factories.event.TimelineItemContentFailedToParseMessageFactory @@ -31,6 +30,7 @@ import io.element.android.features.messages.timeline.factories.event.TimelineIte import io.element.android.features.messages.timeline.factories.event.TimelineItemEventFactory import io.element.android.features.messages.timeline.factories.virtual.TimelineItemDaySeparatorFactory import io.element.android.features.messages.timeline.factories.virtual.TimelineItemVirtualFactory +import io.element.android.libraries.dateformatter.test.FakeDaySeparatorFormatter internal fun aTimelineItemsFactory() = TimelineItemsFactory( dispatchers = testCoroutineDispatchers(), diff --git a/features/roomlist/build.gradle.kts b/features/roomlist/build.gradle.kts index 9999262c40..89d66744bb 100644 --- a/features/roomlist/build.gradle.kts +++ b/features/roomlist/build.gradle.kts @@ -41,7 +41,7 @@ dependencies { implementation(projects.libraries.designsystem) implementation(projects.libraries.elementresources) implementation(projects.libraries.uiStrings) - implementation(projects.libraries.dateformatter) + implementation(projects.libraries.dateformatter.api) implementation(libs.accompanist.placeholder) testImplementation(libs.test.junit) diff --git a/features/roomlist/src/main/kotlin/io/element/android/features/roomlist/RoomListPresenter.kt b/features/roomlist/src/main/kotlin/io/element/android/features/roomlist/RoomListPresenter.kt index 905b1746b0..49e53075f9 100644 --- a/features/roomlist/src/main/kotlin/io/element/android/features/roomlist/RoomListPresenter.kt +++ b/features/roomlist/src/main/kotlin/io/element/android/features/roomlist/RoomListPresenter.kt @@ -31,7 +31,7 @@ import io.element.android.features.roomlist.model.RoomListRoomSummaryPlaceholder import io.element.android.features.roomlist.model.RoomListState import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.coroutine.parallelMap -import io.element.android.libraries.dateformatter.LastMessageFormatter +import io.element.android.libraries.dateformatter.api.LastMessageFormatter import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.matrix.api.MatrixClient diff --git a/features/roomlist/src/test/kotlin/io/element/android/features/roomlist/FakeLastMessageFormatter.kt b/features/roomlist/src/test/kotlin/io/element/android/features/roomlist/FakeLastMessageFormatter.kt index 997846056a..0040b9f480 100644 --- a/features/roomlist/src/test/kotlin/io/element/android/features/roomlist/FakeLastMessageFormatter.kt +++ b/features/roomlist/src/test/kotlin/io/element/android/features/roomlist/FakeLastMessageFormatter.kt @@ -16,7 +16,7 @@ package io.element.android.features.roomlist -import io.element.android.libraries.dateformatter.LastMessageFormatter +import io.element.android.libraries.dateformatter.api.LastMessageFormatter class FakeLastMessageFormatter : LastMessageFormatter { private var format = "" diff --git a/features/roomlist/src/test/kotlin/io/element/android/features/roomlist/RoomListPresenterTests.kt b/features/roomlist/src/test/kotlin/io/element/android/features/roomlist/RoomListPresenterTests.kt index 377af91261..77e7f236be 100644 --- a/features/roomlist/src/test/kotlin/io/element/android/features/roomlist/RoomListPresenterTests.kt +++ b/features/roomlist/src/test/kotlin/io/element/android/features/roomlist/RoomListPresenterTests.kt @@ -24,7 +24,7 @@ import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.roomlist.model.RoomListEvents import io.element.android.features.roomlist.model.RoomListRoomSummary -import io.element.android.libraries.dateformatter.LastMessageFormatter +import io.element.android.libraries.dateformatter.api.LastMessageFormatter import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.libraries.matrix.test.AN_AVATAR_URL import io.element.android.libraries.matrix.test.AN_EXCEPTION diff --git a/libraries/dateformatter/.gitignore b/libraries/dateformatter/api/.gitignore similarity index 100% rename from libraries/dateformatter/.gitignore rename to libraries/dateformatter/api/.gitignore diff --git a/libraries/dateformatter/api/build.gradle.kts b/libraries/dateformatter/api/build.gradle.kts new file mode 100644 index 0000000000..45f1ada80a --- /dev/null +++ b/libraries/dateformatter/api/build.gradle.kts @@ -0,0 +1,25 @@ +/* + * 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. + */ + +// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed +@Suppress("DSL_SCOPE_VIOLATION") +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.libraries.dateformatter.api" +} diff --git a/libraries/dateformatter/consumer-rules.pro b/libraries/dateformatter/api/consumer-rules.pro similarity index 100% rename from libraries/dateformatter/consumer-rules.pro rename to libraries/dateformatter/api/consumer-rules.pro diff --git a/libraries/dateformatter/proguard-rules.pro b/libraries/dateformatter/api/proguard-rules.pro similarity index 100% rename from libraries/dateformatter/proguard-rules.pro rename to libraries/dateformatter/api/proguard-rules.pro diff --git a/libraries/dateformatter/src/main/AndroidManifest.xml b/libraries/dateformatter/api/src/main/AndroidManifest.xml similarity index 100% rename from libraries/dateformatter/src/main/AndroidManifest.xml rename to libraries/dateformatter/api/src/main/AndroidManifest.xml diff --git a/libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/DaySeparatorFormatter.kt b/libraries/dateformatter/api/src/main/kotlin/io/element/android/libraries/dateformatter/api/DaySeparatorFormatter.kt similarity index 92% rename from libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/DaySeparatorFormatter.kt rename to libraries/dateformatter/api/src/main/kotlin/io/element/android/libraries/dateformatter/api/DaySeparatorFormatter.kt index 453bbb2154..682f0c5745 100644 --- a/libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/DaySeparatorFormatter.kt +++ b/libraries/dateformatter/api/src/main/kotlin/io/element/android/libraries/dateformatter/api/DaySeparatorFormatter.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.libraries.dateformatter +package io.element.android.libraries.dateformatter.api interface DaySeparatorFormatter { fun format(timestamp: Long): String diff --git a/libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/LastMessageFormatter.kt b/libraries/dateformatter/api/src/main/kotlin/io/element/android/libraries/dateformatter/api/LastMessageFormatter.kt similarity index 92% rename from libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/LastMessageFormatter.kt rename to libraries/dateformatter/api/src/main/kotlin/io/element/android/libraries/dateformatter/api/LastMessageFormatter.kt index caa5886cf9..7f61dfac5d 100644 --- a/libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/LastMessageFormatter.kt +++ b/libraries/dateformatter/api/src/main/kotlin/io/element/android/libraries/dateformatter/api/LastMessageFormatter.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.libraries.dateformatter +package io.element.android.libraries.dateformatter.api interface LastMessageFormatter { fun format(timestamp: Long?): String diff --git a/libraries/dateformatter/impl/.gitignore b/libraries/dateformatter/impl/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/libraries/dateformatter/impl/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/libraries/dateformatter/build.gradle.kts b/libraries/dateformatter/impl/build.gradle.kts similarity index 86% rename from libraries/dateformatter/build.gradle.kts rename to libraries/dateformatter/impl/build.gradle.kts index 60ecd95052..3e7f698c1f 100644 --- a/libraries/dateformatter/build.gradle.kts +++ b/libraries/dateformatter/impl/build.gradle.kts @@ -27,17 +27,19 @@ anvil { } android { - namespace = "io.element.android.libraries.dateformatter" + namespace = "io.element.android.libraries.dateformatter.impl" dependencies { anvil(projects.anvilcodegen) implementation(libs.dagger) implementation(projects.libraries.di) implementation(projects.anvilannotations) + + implementation(projects.libraries.dateformatter.api) api(libs.datetime) - ksp(libs.showkase.processor) testImplementation(libs.test.junit) testImplementation(libs.test.truth) + testImplementation(projects.libraries.dateformatter.test) } } diff --git a/libraries/dateformatter/impl/consumer-rules.pro b/libraries/dateformatter/impl/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libraries/dateformatter/impl/proguard-rules.pro b/libraries/dateformatter/impl/proguard-rules.pro new file mode 100644 index 0000000000..ff59496d81 --- /dev/null +++ b/libraries/dateformatter/impl/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle.kts. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/libraries/dateformatter/impl/src/main/AndroidManifest.xml b/libraries/dateformatter/impl/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..cf0e6386de --- /dev/null +++ b/libraries/dateformatter/impl/src/main/AndroidManifest.xml @@ -0,0 +1,16 @@ + + diff --git a/libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt similarity index 100% rename from libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt rename to libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt diff --git a/libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDaySeparatorFormatter.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDaySeparatorFormatter.kt similarity index 94% rename from libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDaySeparatorFormatter.kt rename to libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDaySeparatorFormatter.kt index 29e2c87221..4c6ebbbde0 100644 --- a/libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDaySeparatorFormatter.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDaySeparatorFormatter.kt @@ -17,7 +17,7 @@ package io.element.android.libraries.dateformatter.impl import com.squareup.anvil.annotations.ContributesBinding -import io.element.android.libraries.dateformatter.DaySeparatorFormatter +import io.element.android.libraries.dateformatter.api.DaySeparatorFormatter import io.element.android.libraries.di.AppScope import javax.inject.Inject diff --git a/libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatter.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatter.kt similarity index 95% rename from libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatter.kt rename to libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatter.kt index 753457c48f..fd7afe55e7 100644 --- a/libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatter.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatter.kt @@ -17,7 +17,7 @@ package io.element.android.libraries.dateformatter.impl import com.squareup.anvil.annotations.ContributesBinding -import io.element.android.libraries.dateformatter.LastMessageFormatter +import io.element.android.libraries.dateformatter.api.LastMessageFormatter import io.element.android.libraries.di.AppScope import javax.inject.Inject diff --git a/libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt similarity index 100% rename from libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt rename to libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt diff --git a/libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/di/DateFormatterModule.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/di/DateFormatterModule.kt similarity index 94% rename from libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/di/DateFormatterModule.kt rename to libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/di/DateFormatterModule.kt index feab851a8b..352306da65 100644 --- a/libraries/dateformatter/src/main/kotlin/io/element/android/libraries/dateformatter/di/DateFormatterModule.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/di/DateFormatterModule.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.libraries.dateformatter.di +package io.element.android.libraries.dateformatter.impl.di import com.squareup.anvil.annotations.ContributesTo import dagger.Module diff --git a/libraries/dateformatter/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatterTest.kt b/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatterTest.kt similarity index 96% rename from libraries/dateformatter/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatterTest.kt rename to libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatterTest.kt index cfe3e40fce..1d8390ec9f 100644 --- a/libraries/dateformatter/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatterTest.kt +++ b/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultLastMessageFormatterTest.kt @@ -17,7 +17,8 @@ package io.element.android.libraries.dateformatter.impl import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.dateformatter.LastMessageFormatter +import io.element.android.libraries.dateformatter.api.LastMessageFormatter +import io.element.android.libraries.dateformatter.test.FakeClock import kotlinx.datetime.Instant import kotlinx.datetime.TimeZone import org.junit.Test diff --git a/libraries/dateformatter/test/.gitignore b/libraries/dateformatter/test/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/libraries/dateformatter/test/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/libraries/dateformatter/test/build.gradle.kts b/libraries/dateformatter/test/build.gradle.kts new file mode 100644 index 0000000000..afc7e66059 --- /dev/null +++ b/libraries/dateformatter/test/build.gradle.kts @@ -0,0 +1,30 @@ +/* + * 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. + */ + +// TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed +@Suppress("DSL_SCOPE_VIOLATION") +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.libraries.dateformatter.test" + + dependencies { + implementation(projects.libraries.dateformatter.api) + api(libs.datetime) + } +} diff --git a/libraries/dateformatter/test/consumer-rules.pro b/libraries/dateformatter/test/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libraries/dateformatter/test/proguard-rules.pro b/libraries/dateformatter/test/proguard-rules.pro new file mode 100644 index 0000000000..ff59496d81 --- /dev/null +++ b/libraries/dateformatter/test/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle.kts. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/libraries/dateformatter/test/src/main/AndroidManifest.xml b/libraries/dateformatter/test/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..cf0e6386de --- /dev/null +++ b/libraries/dateformatter/test/src/main/AndroidManifest.xml @@ -0,0 +1,16 @@ + + diff --git a/libraries/dateformatter/src/test/kotlin/io/element/android/libraries/dateformatter/impl/FakeClock.kt b/libraries/dateformatter/test/src/main/kotlin/io/element/android/libraries/dateformatter/test/FakeClock.kt similarity index 94% rename from libraries/dateformatter/src/test/kotlin/io/element/android/libraries/dateformatter/impl/FakeClock.kt rename to libraries/dateformatter/test/src/main/kotlin/io/element/android/libraries/dateformatter/test/FakeClock.kt index 58a5495218..4716b0f5f0 100644 --- a/libraries/dateformatter/src/test/kotlin/io/element/android/libraries/dateformatter/impl/FakeClock.kt +++ b/libraries/dateformatter/test/src/main/kotlin/io/element/android/libraries/dateformatter/test/FakeClock.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.libraries.dateformatter.impl +package io.element.android.libraries.dateformatter.test import kotlinx.datetime.Clock import kotlinx.datetime.Instant diff --git a/features/messages/src/test/kotlin/io/element/android/features/messages/fakes/FakeDaySeparatorFormatter.kt b/libraries/dateformatter/test/src/main/kotlin/io/element/android/libraries/dateformatter/test/FakeDaySeparatorFormatter.kt similarity index 86% rename from features/messages/src/test/kotlin/io/element/android/features/messages/fakes/FakeDaySeparatorFormatter.kt rename to libraries/dateformatter/test/src/main/kotlin/io/element/android/libraries/dateformatter/test/FakeDaySeparatorFormatter.kt index 40a52c640c..202e3ee5ae 100644 --- a/features/messages/src/test/kotlin/io/element/android/features/messages/fakes/FakeDaySeparatorFormatter.kt +++ b/libraries/dateformatter/test/src/main/kotlin/io/element/android/libraries/dateformatter/test/FakeDaySeparatorFormatter.kt @@ -14,9 +14,9 @@ * limitations under the License. */ -package io.element.android.features.messages.fakes +package io.element.android.libraries.dateformatter.test -import io.element.android.libraries.dateformatter.DaySeparatorFormatter +import io.element.android.libraries.dateformatter.api.DaySeparatorFormatter class FakeDaySeparatorFormatter : DaySeparatorFormatter { diff --git a/plugins/src/main/kotlin/extension/DependencyHandleScope.kt b/plugins/src/main/kotlin/extension/DependencyHandleScope.kt index 8d8f574cb1..87e6b41094 100644 --- a/plugins/src/main/kotlin/extension/DependencyHandleScope.kt +++ b/plugins/src/main/kotlin/extension/DependencyHandleScope.kt @@ -55,7 +55,7 @@ fun DependencyHandlerScope.allLibraries() { implementation(project(":libraries:matrixui")) implementation(project(":libraries:core")) implementation(project(":libraries:architecture")) - implementation(project(":libraries:dateformatter")) + implementation(project(":libraries:dateformatter:api")) implementation(project(":libraries:di")) } diff --git a/samples/minimal/build.gradle.kts b/samples/minimal/build.gradle.kts index 13686e7e61..7271b295e5 100644 --- a/samples/minimal/build.gradle.kts +++ b/samples/minimal/build.gradle.kts @@ -52,7 +52,8 @@ dependencies { implementation(projects.libraries.designsystem) implementation(projects.libraries.architecture) implementation(projects.libraries.core) - implementation(projects.libraries.dateformatter) + implementation(projects.libraries.dateformatter.api) + implementation(projects.libraries.dateformatter.impl) implementation(projects.features.roomlist) implementation(projects.features.login) implementation(libs.coroutines.core) diff --git a/settings.gradle.kts b/settings.gradle.kts index 2e5312a9f4..928fc5b4a4 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -44,7 +44,9 @@ include(":libraries:matrix:impl") include(":libraries:matrix:test") include(":libraries:matrixui") include(":libraries:textcomposer") -include(":libraries:dateformatter") +include(":libraries:dateformatter:api") +include(":libraries:dateformatter:impl") +include(":libraries:dateformatter:test") include(":libraries:elementresources") include(":libraries:ui-strings") include(":libraries:testtags")