diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 0f5ba569ff..7e5f3f6862 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -199,6 +199,8 @@ dependencies {
allLibraries()
allFeatures()
implementation(projects.libraries.matrix.impl)
+ implementation(projects.libraries.dateformatter.impl)
+ implementation(projects.libraries.sessionStorage.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/libraries/matrix/api/build.gradle.kts b/libraries/matrix/api/build.gradle.kts
index 2d8519b2e2..6d622f249e 100644
--- a/libraries/matrix/api/build.gradle.kts
+++ b/libraries/matrix/api/build.gradle.kts
@@ -39,6 +39,6 @@ dependencies {
implementation(projects.libraries.core)
implementation("net.java.dev.jna:jna:5.13.0@aar")
implementation(libs.serialization.json)
- api(projects.libraries.sessionStorage)
+ api(projects.libraries.sessionStorage.api)
implementation(libs.coroutines.core)
}
diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt
index f02929e9ed..e75dd756a2 100644
--- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt
+++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt
@@ -24,7 +24,7 @@ import io.element.android.libraries.matrix.impl.media.RustMediaResolver
import io.element.android.libraries.matrix.impl.room.RustMatrixRoom
import io.element.android.libraries.matrix.impl.room.RustRoomSummaryDataSource
import io.element.android.libraries.matrix.impl.sync.SlidingSyncObserverProxy
-import io.element.android.libraries.sessionstorage.SessionStore
+import io.element.android.libraries.sessionstorage.api.SessionStore
import io.element.android.libraries.matrix.api.media.MediaResolver
import io.element.android.libraries.matrix.api.room.MatrixRoom
import io.element.android.libraries.matrix.api.room.RoomSummaryDataSource
diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt
index a00e787c9f..7a51386d02 100644
--- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt
+++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt
@@ -27,8 +27,8 @@ import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.impl.RustMatrixClient
import io.element.android.libraries.matrix.impl.util.logError
-import io.element.android.libraries.matrix.session.SessionData
-import io.element.android.libraries.sessionstorage.SessionStore
+import io.element.android.libraries.sessionstorage.api.SessionData
+import io.element.android.libraries.sessionstorage.api.SessionStore
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
diff --git a/libraries/session-storage/api/build.gradle.kts b/libraries/session-storage/api/build.gradle.kts
new file mode 100644
index 0000000000..99fd07fee6
--- /dev/null
+++ b/libraries/session-storage/api/build.gradle.kts
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+
+plugins {
+ id("io.element.android-library")
+}
+
+android {
+ namespace = "io.element.android.libraries.sessionstorage.api"
+}
+
+dependencies {
+ implementation(libs.coroutines.core)
+}
diff --git a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionData.kt b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionData.kt
new file mode 100644
index 0000000000..3f79701fd8
--- /dev/null
+++ b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionData.kt
@@ -0,0 +1,27 @@
+/*
+ * 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.libraries.sessionstorage.api
+
+data class SessionData(
+ val userId: String,
+ val deviceId: String,
+ val accessToken: String,
+ val refreshToken: String?,
+ val homeserverUrl: String,
+ val isSoftLogout: Boolean,
+ val slidingSyncProxy: String?
+)
diff --git a/libraries/session-storage/src/main/kotlin/io/element/android/libraries/sessionstorage/SessionStore.kt b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionStore.kt
similarity index 84%
rename from libraries/session-storage/src/main/kotlin/io/element/android/libraries/sessionstorage/SessionStore.kt
rename to libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionStore.kt
index a8cd52df70..de0ec2f727 100644
--- a/libraries/session-storage/src/main/kotlin/io/element/android/libraries/sessionstorage/SessionStore.kt
+++ b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionStore.kt
@@ -14,14 +14,13 @@
* limitations under the License.
*/
-package io.element.android.libraries.sessionstorage
+package io.element.android.libraries.sessionstorage.api
-import io.element.android.libraries.matrix.session.SessionData
import kotlinx.coroutines.flow.Flow
interface SessionStore {
fun isLoggedIn(): Flow
- suspend fun storeData(session: SessionData)
+ suspend fun storeData(sessionData: SessionData)
suspend fun getSession(sessionId: String): SessionData?
suspend fun getLatestSession(): SessionData?
suspend fun removeSession(sessionId: String)
diff --git a/libraries/session-storage/impl-memory/build.gradle.kts b/libraries/session-storage/impl-memory/build.gradle.kts
new file mode 100644
index 0000000000..ec1d618962
--- /dev/null
+++ b/libraries/session-storage/impl-memory/build.gradle.kts
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+plugins {
+ id("io.element.android-library")
+}
+
+android {
+ namespace = "io.element.android.libraries.sessionstorage.impl.memory"
+}
+
+dependencies {
+ implementation(projects.libraries.sessionStorage.api)
+ implementation(libs.coroutines.core)
+}
diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/InMemorySessionStore.kt b/libraries/session-storage/impl-memory/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/memory/InMemorySessionStore.kt
similarity index 62%
rename from samples/minimal/src/main/kotlin/io/element/android/samples/minimal/InMemorySessionStore.kt
rename to libraries/session-storage/impl-memory/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/memory/InMemorySessionStore.kt
index f96ea63d72..b73ffdeb9a 100644
--- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/InMemorySessionStore.kt
+++ b/libraries/session-storage/impl-memory/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/memory/InMemorySessionStore.kt
@@ -14,37 +14,37 @@
* limitations under the License.
*/
-package io.element.android.samples.minimal
+package io.element.android.libraries.sessionstorage.impl.memory
-import io.element.android.libraries.matrix.session.SessionData
-import io.element.android.libraries.sessionstorage.SessionStore
+import io.element.android.libraries.sessionstorage.api.SessionData
+import io.element.android.libraries.sessionstorage.api.SessionStore
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.map
class InMemorySessionStore : SessionStore {
- private var sessionData = MutableStateFlow(null)
+ private var sessionDataFlow = MutableStateFlow(null)
override fun isLoggedIn(): Flow {
- return sessionData.map { it != null }
+ return sessionDataFlow.map { it != null }
}
- override suspend fun storeData(session: SessionData) {
- sessionData.value = session
+ override suspend fun storeData(sessionData: SessionData) {
+ sessionDataFlow.value = sessionData
}
override suspend fun getSession(sessionId: String): SessionData? {
- return sessionData.value.takeIf { it?.userId == sessionId }
+ return sessionDataFlow.value.takeIf { it?.userId == sessionId }
}
override suspend fun getLatestSession(): SessionData? {
- return sessionData.value
+ return sessionDataFlow.value
}
override suspend fun removeSession(sessionId: String) {
- if (sessionData.value?.userId == sessionId) {
- sessionData.value = null
+ if (sessionDataFlow.value?.userId == sessionId) {
+ sessionDataFlow.value = null
}
}
}
diff --git a/libraries/session-storage/build.gradle.kts b/libraries/session-storage/impl/build.gradle.kts
similarity index 92%
rename from libraries/session-storage/build.gradle.kts
rename to libraries/session-storage/impl/build.gradle.kts
index 2fd74a4670..b1952b6cc5 100644
--- a/libraries/session-storage/build.gradle.kts
+++ b/libraries/session-storage/impl/build.gradle.kts
@@ -21,7 +21,7 @@ plugins {
}
android {
- namespace = "io.element.android.libraries.sessionstorage"
+ namespace = "io.element.android.libraries.sessionstorage.impl"
}
anvil {
@@ -32,6 +32,7 @@ dependencies {
implementation(libs.dagger)
implementation(projects.libraries.core)
implementation(projects.libraries.encryptedDb)
+ implementation(projects.libraries.sessionStorage.api)
implementation(libs.sqldelight.driver.android)
implementation(libs.sqlcipher)
implementation(libs.sqlite)
diff --git a/libraries/session-storage/src/main/kotlin/io/element/android/libraries/sessionstorage/DatabaseSessionStore.kt b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt
similarity index 87%
rename from libraries/session-storage/src/main/kotlin/io/element/android/libraries/sessionstorage/DatabaseSessionStore.kt
rename to libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt
index d833f06d92..6c32bcd1f3 100644
--- a/libraries/session-storage/src/main/kotlin/io/element/android/libraries/sessionstorage/DatabaseSessionStore.kt
+++ b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt
@@ -14,14 +14,15 @@
* limitations under the License.
*/
-package io.element.android.libraries.sessionstorage
+package io.element.android.libraries.sessionstorage.impl
import com.squareup.anvil.annotations.ContributesBinding
import com.squareup.sqldelight.runtime.coroutines.asFlow
import com.squareup.sqldelight.runtime.coroutines.mapToOneOrNull
import io.element.android.libraries.di.AppScope
import io.element.android.libraries.di.SingleIn
-import io.element.android.libraries.matrix.session.SessionData
+import io.element.android.libraries.sessionstorage.api.SessionData
+import io.element.android.libraries.sessionstorage.api.SessionStore
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import javax.inject.Inject
@@ -37,17 +38,19 @@ class DatabaseSessionStore @Inject constructor(
}
override suspend fun storeData(sessionData: SessionData) {
- database.sessionDataQueries.insertSessionData(sessionData)
+ database.sessionDataQueries.insertSessionData(sessionData.toDbModel())
}
override suspend fun getLatestSession(): SessionData? {
return database.sessionDataQueries.selectFirst()
.executeAsOneOrNull()
+ ?.toApiModel()
}
override suspend fun getSession(sessionId: String): SessionData? {
return database.sessionDataQueries.selectByUserId(sessionId)
.executeAsOneOrNull()
+ ?.toApiModel()
}
override suspend fun removeSession(sessionId: String) {
diff --git a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/SessionDataMapper.kt b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/SessionDataMapper.kt
new file mode 100644
index 0000000000..627f896381
--- /dev/null
+++ b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/SessionDataMapper.kt
@@ -0,0 +1,43 @@
+/*
+ * 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.libraries.sessionstorage.impl
+
+import io.element.android.libraries.sessionstorage.api.SessionData
+
+internal fun SessionData.toDbModel(): io.element.android.libraries.matrix.session.SessionData {
+ return io.element.android.libraries.matrix.session.SessionData(
+ userId = userId,
+ deviceId = deviceId,
+ accessToken = accessToken,
+ refreshToken = refreshToken,
+ homeserverUrl = homeserverUrl,
+ isSoftLogout = isSoftLogout,
+ slidingSyncProxy = slidingSyncProxy,
+ )
+}
+
+internal fun io.element.android.libraries.matrix.session.SessionData.toApiModel(): SessionData {
+ return SessionData(
+ userId = userId,
+ deviceId = deviceId,
+ accessToken = accessToken,
+ refreshToken = refreshToken,
+ homeserverUrl = homeserverUrl,
+ isSoftLogout = isSoftLogout,
+ slidingSyncProxy = slidingSyncProxy,
+ )
+}
diff --git a/libraries/session-storage/src/main/kotlin/io/element/android/libraries/sessionstorage/di/SessionStorageModule.kt b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/di/SessionStorageModule.kt
similarity index 92%
rename from libraries/session-storage/src/main/kotlin/io/element/android/libraries/sessionstorage/di/SessionStorageModule.kt
rename to libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/di/SessionStorageModule.kt
index 33cdc50257..b101fc39b4 100644
--- a/libraries/session-storage/src/main/kotlin/io/element/android/libraries/sessionstorage/di/SessionStorageModule.kt
+++ b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/di/SessionStorageModule.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.element.android.libraries.sessionstorage.di
+package io.element.android.libraries.sessionstorage.impl.di
import android.content.Context
import com.squareup.anvil.annotations.ContributesTo
@@ -23,7 +23,7 @@ import dagger.Provides
import io.element.android.libraries.di.AppScope
import io.element.android.libraries.di.ApplicationContext
import io.element.android.libraries.di.SingleIn
-import io.element.android.libraries.sessionstorage.SessionDatabase
+import io.element.android.libraries.sessionstorage.impl.SessionDatabase
import io.element.encrypteddb.SqlCipherDriverFactory
import io.element.encrypteddb.passphrase.RandomSecretPassphraseProvider
diff --git a/libraries/session-storage/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq b/libraries/session-storage/impl/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq
similarity index 100%
rename from libraries/session-storage/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq
rename to libraries/session-storage/impl/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq
diff --git a/libraries/session-storage/src/test/kotlin/io/element/android/libraries/sessionstorage/DatabaseSessionStoreTests.kt b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTests.kt
similarity index 95%
rename from libraries/session-storage/src/test/kotlin/io/element/android/libraries/sessionstorage/DatabaseSessionStoreTests.kt
rename to libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTests.kt
index 56c5e4db16..5bd726609b 100644
--- a/libraries/session-storage/src/test/kotlin/io/element/android/libraries/sessionstorage/DatabaseSessionStoreTests.kt
+++ b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTests.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.element.android.libraries.sessionstorage
+package io.element.android.libraries.sessionstorage.impl
import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat
@@ -55,7 +55,7 @@ class DatabaseSessionStoreTests {
fun `storeData persists the SessionData into the DB`() = runTest {
assertThat(database.sessionDataQueries.selectFirst().executeAsOneOrNull()).isNull()
- databaseSessionStore.storeData(aSessionData)
+ databaseSessionStore.storeData(aSessionData.toApiModel())
assertThat(database.sessionDataQueries.selectFirst().executeAsOneOrNull()).isEqualTo(aSessionData)
}
@@ -76,7 +76,7 @@ class DatabaseSessionStoreTests {
database.sessionDataQueries.insertSessionData(aSessionData)
database.sessionDataQueries.insertSessionData(aSessionData.copy(userId = "otherUserId"))
- val latestSession = databaseSessionStore.getLatestSession()
+ val latestSession = databaseSessionStore.getLatestSession()?.toDbModel()
assertThat(latestSession).isEqualTo(aSessionData)
}
@@ -86,7 +86,7 @@ class DatabaseSessionStoreTests {
database.sessionDataQueries.insertSessionData(aSessionData)
database.sessionDataQueries.insertSessionData(aSessionData.copy(userId = "otherUserId"))
- val foundSession = databaseSessionStore.getSession(aSessionData.userId)
+ val foundSession = databaseSessionStore.getSession(aSessionData.userId)?.toDbModel()
assertThat(foundSession).isEqualTo(aSessionData)
}
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..a7da2a94c8 100644
--- a/samples/minimal/build.gradle.kts
+++ b/samples/minimal/build.gradle.kts
@@ -49,10 +49,12 @@ dependencies {
implementation(libs.androidx.activity.compose)
implementation(projects.libraries.matrix.api)
implementation(projects.libraries.matrix.impl)
+ implementation(projects.libraries.sessionStorage.implMemory)
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/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/MainActivity.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/MainActivity.kt
index bdf2818519..4ba66c51d6 100644
--- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/MainActivity.kt
+++ b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/MainActivity.kt
@@ -31,6 +31,7 @@ import androidx.core.view.WindowCompat
import io.element.android.libraries.designsystem.theme.ElementTheme
import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService
import io.element.android.libraries.matrix.impl.auth.RustMatrixAuthenticationService
+import io.element.android.libraries.sessionstorage.impl.memory.InMemorySessionStore
import kotlinx.coroutines.runBlocking
import org.matrix.rustcomponents.sdk.AuthenticationService
import java.io.File
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 2e5312a9f4..77751aeda1 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")
@@ -65,4 +67,6 @@ include(":features:template")
include(":libraries:androidutils")
include(":samples:minimal")
include(":libraries:encrypted-db")
-include(":libraries:session-storage")
+include(":libraries:session-storage:api")
+include(":libraries:session-storage:impl")
+include(":libraries:session-storage:impl-memory")