From 0531248457c257cc2ff7bf690b768dcd5ff3b5f8 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Sat, 2 May 2026 00:05:38 +0200 Subject: [PATCH] Update to android room3 --- composeApp/build.gradle.kts | 19 ++++---- .../PlatformDatabaseBuilder.android.kt | 4 +- .../auxiliary/compose/database/AuxDatabase.kt | 10 ++-- .../database/AuxDatabaseConstructor.kt | 2 +- .../builder/PlatformDatabaseBuilder.kt | 2 +- .../{Converters.kt => AuxConverters.kt} | 27 +++++------ .../dao/BroadcastNostrEventReceiptDao.kt | 6 +-- .../dao/BroadcastNostrEventRequestDao.kt | 6 +-- .../compose/database/dao/ConnectionDao.kt | 10 ++-- .../database/dao/InReplyToRelationDao.kt | 8 ++-- .../compose/database/dao/MentionDao.kt | 10 ++-- .../compose/database/dao/NostrDao.kt | 6 +-- .../compose/database/dao/NostrEventDao.kt | 26 +++++------ .../auxiliary/compose/database/dao/PostDao.kt | 8 ++-- .../compose/database/dao/ProfileDao.kt | 10 ++-- .../compose/database/dao/QuotedRelationDao.kt | 8 ++-- .../compose/database/dao/ReactionDao.kt | 6 +-- .../compose/database/dao/RecentSearchDao.kt | 8 ++-- .../compose/database/dao/RelayDao.kt | 6 +-- .../database/dao/RepostedRelationDao.kt | 6 +-- .../dao/SynchronizeNostrEventRequestDao.kt | 8 ++-- .../dao/SynchronizeNostrEventResultDao.kt | 4 +- .../database/dao/UnsignedNostrEventDao.kt | 6 +-- .../auxiliary/compose/database/dao/ZapDao.kt | 6 +-- .../model/BroadcastNostrEventReceipt.kt | 8 ++-- .../model/BroadcastNostrEventRequest.kt | 8 ++-- .../compose/database/model/Connection.kt | 4 +- .../database/model/InReplyToRelation.kt | 8 ++-- .../compose/database/model/Mention.kt | 4 +- .../compose/database/model/NostrEvent.kt | 10 ++-- .../auxiliary/compose/database/model/Post.kt | 8 ++-- .../compose/database/model/Profile.kt | 8 ++-- .../compose/database/model/QuotedRelation.kt | 8 ++-- .../compose/database/model/Reaction.kt | 8 ++-- .../compose/database/model/RecentSearch.kt | 7 +-- .../auxiliary/compose/database/model/Relay.kt | 2 +- .../database/model/RepostedRelation.kt | 8 ++-- .../model/SynchronizeNostrEventRequest.kt | 11 +++-- .../model/SynchronizeNostrEventResult.kt | 8 ++-- .../database/model/UnsignedNostrEvent.kt | 10 ++-- .../auxiliary/compose/database/model/Zap.kt | 8 ++-- .../model/intermdiate/LocalAccount.kt | 4 +- .../LocalBroadcastNostrEventRequest.kt | 4 +- .../intermdiate/LocalInReplyToNostrEvent.kt | 4 +- .../model/intermdiate/LocalMention.kt | 4 +- .../model/intermdiate/LocalNostrEvent.kt | 8 ++-- .../database/model/intermdiate/LocalPost.kt | 4 +- .../model/intermdiate/LocalProfile.kt | 4 +- .../intermdiate/LocalProfileWithFollowers.kt | 6 +-- .../intermdiate/LocalProfileWithFollowing.kt | 6 +-- .../intermdiate/LocalQuotedNostrEvent.kt | 4 +- .../intermdiate/LocalRepostedNostrEvent.kt | 4 +- .../repository/DatabaseNostrRepository.kt | 46 ++++++------------- gradle/libs.versions.toml | 6 ++- 54 files changed, 219 insertions(+), 225 deletions(-) rename composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/converters/{Converters.kt => AuxConverters.kt} (71%) diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index 1c59acbc..bd98379a 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -3,7 +3,8 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.androidApplication) - alias(libs.plugins.androidx.room) +// alias(libs.plugins.androidx.room) + alias(libs.plugins.androidx.room3) alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.composeCompiler) @@ -38,7 +39,7 @@ kotlin { sourceSets { androidMain.dependencies { implementation(libs.androidx.activity.compose) - implementation(libs.androidx.room.sqlite.wrapper) +// implementation(libs.androidx.room.sqlite.wrapper) implementation(libs.compose.uiToolingPreview) implementation(libs.okhttp.coroutines) } @@ -54,7 +55,8 @@ kotlin { implementation(libs.androidx.paging.common) implementation(libs.androidx.paging.compose) - implementation(libs.androidx.room.runtime) +// implementation(libs.androidx.room.runtime) + implementation(libs.androidx.room3.runtime) implementation(libs.androidx.sqlite.bundled) implementation(libs.coil.compose) @@ -132,15 +134,16 @@ android { dependencies { debugImplementation(libs.compose.uiTooling) - add("kspAndroid", libs.androidx.room.compiler) - add("kspIosSimulatorArm64", libs.androidx.room.compiler) +// ksp(libs.androidx.room3.compiler) + add("kspAndroid", libs.androidx.room3.compiler) + add("kspIosSimulatorArm64", libs.androidx.room3.compiler) // add("kspIosX64", libs.androidx.room.compiler) - add("kspIosArm64", libs.androidx.room.compiler) - add("kspJvm", libs.androidx.room.compiler) + add("kspIosArm64", libs.androidx.room3.compiler) + add("kspJvm", libs.androidx.room3.compiler) // Add any other platform target you use in your project, for example kspDesktop } -room { +room3 { schemaDirectory("$projectDir/schemas") } diff --git a/composeApp/src/androidMain/kotlin/ac/cord/auxiliary/compose/database/builder/PlatformDatabaseBuilder.android.kt b/composeApp/src/androidMain/kotlin/ac/cord/auxiliary/compose/database/builder/PlatformDatabaseBuilder.android.kt index 1f98e112..5ffc7fcd 100644 --- a/composeApp/src/androidMain/kotlin/ac/cord/auxiliary/compose/database/builder/PlatformDatabaseBuilder.android.kt +++ b/composeApp/src/androidMain/kotlin/ac/cord/auxiliary/compose/database/builder/PlatformDatabaseBuilder.android.kt @@ -2,8 +2,8 @@ package ac.cord.auxiliary.compose.database.builder import ac.cord.auxiliary.compose.PlatformContext import ac.cord.auxiliary.compose.database.AuxDatabase -import androidx.room.Room -import androidx.room.RoomDatabase +import androidx.room3.Room +import androidx.room3.RoomDatabase actual object PlatformDatabaseBuilder { actual fun getDatabaseBuilder(platformContext: PlatformContext): RoomDatabase.Builder { diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/AuxDatabase.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/AuxDatabase.kt index 18f043c5..cd98075e 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/AuxDatabase.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/AuxDatabase.kt @@ -36,11 +36,11 @@ import ac.cord.auxiliary.compose.database.model.SynchronizeNostrEventRequest import ac.cord.auxiliary.compose.database.model.SynchronizeNostrEventResult import ac.cord.auxiliary.compose.database.model.UnsignedNostrEvent import ac.cord.auxiliary.compose.database.model.Zap -import androidx.room.Database -import androidx.room.RoomDatabase -import androidx.room.TypeConverters -import androidx.room.immediateTransaction -import androidx.room.useWriterConnection +import androidx.room3.Database +import androidx.room3.RoomDatabase +import androidx.room3.TypeConverters +import androidx.room3.immediateTransaction +import androidx.room3.useWriterConnection import kotlin.time.Instant val GENESIS_AT = Instant.fromEpochMilliseconds(1231006505000L) diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/AuxDatabaseConstructor.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/AuxDatabaseConstructor.kt index 9fba8a64..13fcaf41 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/AuxDatabaseConstructor.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/AuxDatabaseConstructor.kt @@ -1,6 +1,6 @@ package ac.cord.auxiliary.compose.database -import androidx.room.RoomDatabaseConstructor +import androidx.room3.RoomDatabaseConstructor @Suppress("KotlinNoActualForExpect", "NO_ACTUAL_FOR_EXPECT") expect object AuxDatabaseConstructor: RoomDatabaseConstructor { diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/builder/PlatformDatabaseBuilder.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/builder/PlatformDatabaseBuilder.kt index 127e14c6..5e831a8b 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/builder/PlatformDatabaseBuilder.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/builder/PlatformDatabaseBuilder.kt @@ -2,7 +2,7 @@ package ac.cord.auxiliary.compose.database.builder import ac.cord.auxiliary.compose.PlatformContext import ac.cord.auxiliary.compose.database.AuxDatabase -import androidx.room.RoomDatabase +import androidx.room3.RoomDatabase import androidx.sqlite.driver.bundled.BundledSQLiteDriver import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/converters/Converters.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/converters/AuxConverters.kt similarity index 71% rename from composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/converters/Converters.kt rename to composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/converters/AuxConverters.kt index 616f3fca..4b18c559 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/converters/Converters.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/converters/AuxConverters.kt @@ -3,7 +3,8 @@ package ac.cord.auxiliary.compose.database.converters import ac.cord.auxiliary.compose.database.model.typealiases.SynchronizationFilterArray import ac.cord.auxiliary.compose.database.model.typealiases.HexArray import ac.cord.auxiliary.compose.database.model.typealiases.KindArray -import androidx.room.TypeConverter +import ac.cord.auxiliary.compose.database.model.types.SynchronizationFilter +import androidx.room3.TypeConverter import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip01Core.core.TagArray import kotlinx.serialization.json.Json @@ -23,20 +24,20 @@ class AuxConverters { } @TypeConverter - fun fromTagArray(value: TagArray?): String? { + fun fromTagArray(value: Array>?): String? { // Returns null if the value is null, otherwise serializes to JSON string return value?.let { Json.encodeToString(it) } } @TypeConverter - fun toTagArray(value: String?): TagArray? { + fun toTagArray(value: String?): Array>? { // Decodes the JSON string back into the nested array structure - return value?.let { Json.decodeFromString(it) } + return value?.let { Json.decodeFromString>>(it) } } @TypeConverter - fun fromHexArray(value: HexArray?): String? = try { + fun fromHexArray(value: Array?): String? = try { return value?.let { Json.encodeToString(it).lowercase() } @@ -46,9 +47,9 @@ class AuxConverters { } @TypeConverter - fun toHexArray(value: String?): HexArray? = try { + fun toHexArray(value: String?): Array? = try { return value?.let { - Json.decodeFromString(it) + Json.decodeFromString>(it) } } catch (e: Throwable) { logger.e("Failed to convert to HexArray $value", e) @@ -56,7 +57,7 @@ class AuxConverters { } @TypeConverter - fun fromKindArray(value: KindArray?): String? = try { + fun fromKindArray(value: Array?): String? = try { return value?.let { Json.encodeToString(it) } @@ -66,9 +67,9 @@ class AuxConverters { } @TypeConverter - fun toKindArray(value: String?): KindArray? = try { + fun toKindArray(value: String?): Array? = try { return value?.let { - Json.decodeFromString(it) + Json.decodeFromString>(it) } } catch (e: Throwable) { logger.e("Failed to convert to KindArray $value", e) @@ -76,7 +77,7 @@ class AuxConverters { } @TypeConverter - fun fromFilterArray(value: SynchronizationFilterArray?): String? = try { + fun fromFilterArray(value: Array?): String? = try { return value?.let { Json.encodeToString(value) } @@ -86,9 +87,9 @@ class AuxConverters { } @TypeConverter - fun toFilterArray(value: String?): SynchronizationFilterArray? = try { + fun toFilterArray(value: String?): Array? = try { return value?.let { - Json.decodeFromString(it) + Json.decodeFromString>(it) } } catch (e: Throwable) { logger.e("Failed to convert to FilterArray $value", e) diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/BroadcastNostrEventReceiptDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/BroadcastNostrEventReceiptDao.kt index 10c4980c..73b22375 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/BroadcastNostrEventReceiptDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/BroadcastNostrEventReceiptDao.kt @@ -1,9 +1,9 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.BroadcastNostrEventReceipt -import androidx.room.Dao -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert import kotlinx.coroutines.flow.Flow @Dao diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/BroadcastNostrEventRequestDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/BroadcastNostrEventRequestDao.kt index 1acae23d..c8e1bd9b 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/BroadcastNostrEventRequestDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/BroadcastNostrEventRequestDao.kt @@ -2,9 +2,9 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.BroadcastNostrEventRequest import ac.cord.auxiliary.compose.database.model.intermdiate.LocalBroadcastNostrEventRequest -import androidx.room.Dao -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert import kotlinx.coroutines.flow.Flow @Dao diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ConnectionDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ConnectionDao.kt index 6f0ba565..3f1d049b 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ConnectionDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ConnectionDao.kt @@ -1,11 +1,11 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.Connection -import androidx.room.Dao -import androidx.room.Delete -import androidx.room.Insert -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Delete +import androidx.room3.Insert +import androidx.room3.Query +import androidx.room3.Upsert import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlinx.coroutines.flow.Flow diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/InReplyToRelationDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/InReplyToRelationDao.kt index d95909b3..e2dae7a0 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/InReplyToRelationDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/InReplyToRelationDao.kt @@ -1,10 +1,10 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.InReplyToRelation -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Insert +import androidx.room3.Query +import androidx.room3.Upsert @Dao interface InReplyToRelationDao { diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/MentionDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/MentionDao.kt index 1c7168e5..6f9048b3 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/MentionDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/MentionDao.kt @@ -3,11 +3,11 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.Mention import ac.cord.auxiliary.compose.database.model.Post import ac.cord.auxiliary.compose.database.model.intermdiate.LocalPost -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.OnConflictStrategy.Companion.IGNORE -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Insert +import androidx.room3.OnConflictStrategy.Companion.IGNORE +import androidx.room3.Query +import androidx.room3.Upsert @Dao interface MentionDao { diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/NostrDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/NostrDao.kt index 71c73738..ec971605 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/NostrDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/NostrDao.kt @@ -12,9 +12,9 @@ import ac.cord.auxiliary.compose.database.model.SynchronizeNostrEventRequest import ac.cord.auxiliary.compose.database.model.UnsignedNostrEvent import ac.cord.auxiliary.compose.database.model.types.SynchronizationFilter import ac.cord.auxiliary.compose.nostr.Relays -import androidx.room.Dao -import androidx.room.Transaction -import androidx.room.useWriterConnection +import androidx.room3.Dao +import androidx.room3.Transaction +import androidx.room3.useWriterConnection import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEvents diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/NostrEventDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/NostrEventDao.kt index c344a6db..cd7e1ef2 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/NostrEventDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/NostrEventDao.kt @@ -2,13 +2,13 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.NostrEvent import ac.cord.auxiliary.compose.database.model.intermdiate.LocalNostrEvent -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.OnConflictStrategy.Companion.IGNORE -import androidx.room.Query -import androidx.room.RawQuery -import androidx.room.RoomRawQuery -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Insert +import androidx.room3.OnConflictStrategy.Companion.IGNORE +import androidx.room3.Query +import androidx.room3.RawQuery +import androidx.room3.RoomRawQuery +import androidx.room3.Upsert import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Kind import fr.acinq.bitcoin.PublicKey @@ -16,28 +16,28 @@ import kotlinx.coroutines.flow.Flow @Dao interface NostrEventDao { - @Query("SELECT * FROM NostrEvent WHERE kind in (:kinds) AND savedAt < strftime('%s', 'now') ORDER BY createdAt DESC") + @Query("SELECT * FROM NostrEvent WHERE kind in (:kinds) ORDER BY createdAt DESC") fun observeNostrEvents(kinds: Array): Flow> - @Query("SELECT * FROM NostrEvent WHERE content LIKE '%' || :search || '%' AND kind in (:kinds) AND savedAt < strftime('%s', 'now') ORDER BY createdAt DESC") + @Query("SELECT * FROM NostrEvent WHERE content LIKE '%' || :search || '%' AND kind in (:kinds) ORDER BY createdAt DESC") fun observeFilteredNostrEvents( kinds: Array, search: String ): Flow> - @Query("SELECT * FROM NostrEvent WHERE kind in (:kinds) AND id in (:ids) AND savedAt < strftime('%s', 'now') ORDER BY createdAt DESC") + @Query("SELECT * FROM NostrEvent WHERE kind in (:kinds) AND id in (:ids) ORDER BY createdAt DESC") fun observeFilteredNostrEvents( kinds: Array, ids: Array, ): Flow> - @Query("SELECT * FROM NostrEvent WHERE kind in (:kinds) AND pubKey in (:authors) AND savedAt < strftime('%s', 'now') ORDER BY createdAt DESC LIMIT 50") + @Query("SELECT * FROM NostrEvent WHERE kind in (:kinds) AND pubKey in (:authors) ORDER BY createdAt DESC LIMIT 50") fun observeAuthoredNostrEvents( kinds: Array, authors: Array, ): Flow> - @Query("SELECT * FROM NostrEvent WHERE tags LIKE '%' || :publicKey || '%' AND kind in (:kinds) AND savedAt < strftime('%s', 'now') ORDER BY createdAt DESC") + @Query("SELECT * FROM NostrEvent WHERE tags LIKE '%' || :publicKey || '%' AND kind in (:kinds) ORDER BY createdAt DESC") fun observePublicKeyMentionedNostrEvents( kinds: Array, publicKey: HexKey @@ -48,7 +48,7 @@ interface NostrEventDao { query: RoomRawQuery ): Flow> - @Query("SELECT * FROM NostrEvent WHERE kind in (:kinds) AND savedAt < strftime('%s', 'now') ORDER BY savedAt DESC") + @Query("SELECT * FROM NostrEvent WHERE kind in (:kinds) ORDER BY savedAt DESC") fun getAllNostrEvents(kinds: Array): List @Query("SELECT * FROM NostrEvent WHERE id = :id") diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/PostDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/PostDao.kt index 4912784b..c1b40cba 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/PostDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/PostDao.kt @@ -2,10 +2,10 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.Post import ac.cord.auxiliary.compose.database.model.intermdiate.LocalPost -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Insert +import androidx.room3.Query +import androidx.room3.Upsert @Dao interface PostDao { diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ProfileDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ProfileDao.kt index cfa273d3..6ca6a073 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ProfileDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ProfileDao.kt @@ -4,11 +4,11 @@ import ac.cord.auxiliary.compose.database.model.Profile import ac.cord.auxiliary.compose.database.model.intermdiate.LocalProfile import ac.cord.auxiliary.compose.database.model.intermdiate.LocalProfileWithFollowers import ac.cord.auxiliary.compose.database.model.intermdiate.LocalProfileWithFollowing -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.OnConflictStrategy.Companion.IGNORE -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Insert +import androidx.room3.OnConflictStrategy.Companion.IGNORE +import androidx.room3.Query +import androidx.room3.Upsert import kotlinx.coroutines.flow.Flow @Dao diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/QuotedRelationDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/QuotedRelationDao.kt index 4c28d9cc..2872e1d9 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/QuotedRelationDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/QuotedRelationDao.kt @@ -1,10 +1,10 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.QuotedRelation -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Insert +import androidx.room3.Query +import androidx.room3.Upsert @Dao interface QuotedRelationDao { diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ReactionDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ReactionDao.kt index 24954519..166fc601 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ReactionDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ReactionDao.kt @@ -1,9 +1,9 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.Reaction -import androidx.room.Dao -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert import kotlinx.coroutines.flow.Flow @Dao diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/RecentSearchDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/RecentSearchDao.kt index ea64d40b..616304c2 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/RecentSearchDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/RecentSearchDao.kt @@ -1,10 +1,10 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.RecentSearch -import androidx.room.Dao -import androidx.room.Delete -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Delete +import androidx.room3.Query +import androidx.room3.Upsert import kotlinx.coroutines.flow.Flow @Dao diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/RelayDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/RelayDao.kt index 618a795b..bf686180 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/RelayDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/RelayDao.kt @@ -1,9 +1,9 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.Relay -import androidx.room.Dao -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert import kotlinx.coroutines.flow.Flow @Dao diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/RepostedRelationDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/RepostedRelationDao.kt index b040f58d..3a3d22d4 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/RepostedRelationDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/RepostedRelationDao.kt @@ -1,9 +1,9 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.RepostedRelation -import androidx.room.Dao -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert @Dao interface RepostedRelationDao { diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/SynchronizeNostrEventRequestDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/SynchronizeNostrEventRequestDao.kt index 15b8be31..dc3f0e0b 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/SynchronizeNostrEventRequestDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/SynchronizeNostrEventRequestDao.kt @@ -1,10 +1,10 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.SynchronizeNostrEventRequest -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Insert +import androidx.room3.Query +import androidx.room3.Upsert import kotlinx.coroutines.flow.Flow import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/SynchronizeNostrEventResultDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/SynchronizeNostrEventResultDao.kt index 945e1c12..102a15ee 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/SynchronizeNostrEventResultDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/SynchronizeNostrEventResultDao.kt @@ -1,8 +1,8 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.SynchronizeNostrEventResult -import androidx.room.Dao -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Upsert @Dao interface SynchronizeNostrEventResultDao { diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/UnsignedNostrEventDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/UnsignedNostrEventDao.kt index b47510d8..ebe3d579 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/UnsignedNostrEventDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/UnsignedNostrEventDao.kt @@ -2,9 +2,9 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.UnsignedNostrEvent import ac.cord.auxiliary.compose.database.model.intermdiate.LocalAccount -import androidx.room.Dao -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert import kotlinx.coroutines.flow.Flow @Dao diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ZapDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ZapDao.kt index c8cce07f..b10f288c 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ZapDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ZapDao.kt @@ -1,9 +1,9 @@ package ac.cord.auxiliary.compose.database.dao import ac.cord.auxiliary.compose.database.model.Zap -import androidx.room.Dao -import androidx.room.Query -import androidx.room.Upsert +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert import kotlinx.coroutines.flow.Flow @Dao diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/BroadcastNostrEventReceipt.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/BroadcastNostrEventReceipt.kt index 75988e2a..ad9b756e 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/BroadcastNostrEventReceipt.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/BroadcastNostrEventReceipt.kt @@ -2,10 +2,10 @@ package ac.cord.auxiliary.compose.database.model import ac.cord.auxiliary.compose.database.model.traits.NostrEventEntity import ac.cord.auxiliary.compose.database.model.traits.UnsignedNostrEventEntity -import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index -import androidx.room.PrimaryKey +import androidx.room3.Entity +import androidx.room3.ForeignKey +import androidx.room3.Index +import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey @Entity( diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/BroadcastNostrEventRequest.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/BroadcastNostrEventRequest.kt index 2c4c31cd..920bc8f7 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/BroadcastNostrEventRequest.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/BroadcastNostrEventRequest.kt @@ -2,10 +2,10 @@ package ac.cord.auxiliary.compose.database.model import ac.cord.auxiliary.compose.database.model.traits.NostrEventEntity import ac.cord.auxiliary.compose.database.model.traits.UnsignedNostrEventEntity -import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index -import androidx.room.PrimaryKey +import androidx.room3.Entity +import androidx.room3.ForeignKey +import androidx.room3.Index +import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey @Entity( diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Connection.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Connection.kt index 133765d3..49641502 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Connection.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Connection.kt @@ -5,8 +5,8 @@ import ac.cord.auxiliary.compose.database.model.traits.LocalStoreEntity import ac.cord.auxiliary.compose.database.model.traits.NostrEventEntity import ac.cord.auxiliary.compose.database.model.traits.SoftDeletableEntity import ac.cord.auxiliary.compose.database.model.traits.TimestampedEntity -import androidx.room.Entity -import androidx.room.ForeignKey +import androidx.room3.Entity +import androidx.room3.ForeignKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/InReplyToRelation.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/InReplyToRelation.kt index 56335213..c09ba056 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/InReplyToRelation.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/InReplyToRelation.kt @@ -5,10 +5,10 @@ import ac.cord.auxiliary.compose.database.model.traits.LocalStoreEntity import ac.cord.auxiliary.compose.database.model.traits.SoftDeletableEntity import ac.cord.auxiliary.compose.database.model.traits.TimestampedEntity import ac.cord.auxiliary.compose.database.model.traits.UserViewableEntity -import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index -import androidx.room.PrimaryKey +import androidx.room3.Entity +import androidx.room3.ForeignKey +import androidx.room3.Index +import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Mention.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Mention.kt index c7598140..64349e15 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Mention.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Mention.kt @@ -5,8 +5,8 @@ import ac.cord.auxiliary.compose.database.model.traits.LocalStoreEntity import ac.cord.auxiliary.compose.database.model.traits.NostrEventEntity import ac.cord.auxiliary.compose.database.model.traits.SoftDeletableEntity import ac.cord.auxiliary.compose.database.model.traits.TimestampedEntity -import androidx.room.Entity -import androidx.room.ForeignKey +import androidx.room3.Entity +import androidx.room3.ForeignKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/NostrEvent.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/NostrEvent.kt index f5eea138..c1d33dfa 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/NostrEvent.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/NostrEvent.kt @@ -8,10 +8,10 @@ import ac.cord.auxiliary.compose.database.model.traits.UnsignedNostrEventEntity import ac.cord.auxiliary.compose.database.model.types.SynchronizationFilter import ac.cord.auxiliary.compose.ui.composable.widgets.content.ContentParser import ac.cord.auxiliary.compose.ui.composable.widgets.content.ContentSegment -import androidx.room.Entity -import androidx.room.Ignore -import androidx.room.Index -import androidx.room.PrimaryKey +import androidx.room3.Entity +import androidx.room3.Ignore +import androidx.room3.Index +import androidx.room3.PrimaryKey import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey @@ -52,7 +52,7 @@ data class NostrEvent( val id: String, val pubKey: HexKey, val kind: Kind, - val tags: TagArray, + val tags: Array>, val content: String, val sig: HexKey, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Post.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Post.kt index 95e3b05d..de40d19c 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Post.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Post.kt @@ -8,10 +8,10 @@ import ac.cord.auxiliary.compose.database.model.traits.ReplyingToEntity import ac.cord.auxiliary.compose.database.model.traits.SoftDeletableEntity import ac.cord.auxiliary.compose.database.model.traits.TimestampedEntity import ac.cord.auxiliary.compose.database.model.traits.UserViewableEntity -import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index -import androidx.room.PrimaryKey +import androidx.room3.Entity +import androidx.room3.ForeignKey +import androidx.room3.Index +import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Profile.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Profile.kt index 649737da..90063794 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Profile.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Profile.kt @@ -26,10 +26,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.focusModifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index -import androidx.room.PrimaryKey +import androidx.room3.Entity +import androidx.room3.ForeignKey +import androidx.room3.Index +import androidx.room3.PrimaryKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/QuotedRelation.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/QuotedRelation.kt index 3212451c..858c116d 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/QuotedRelation.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/QuotedRelation.kt @@ -5,10 +5,10 @@ import ac.cord.auxiliary.compose.database.model.traits.LocalStoreEntity import ac.cord.auxiliary.compose.database.model.traits.SoftDeletableEntity import ac.cord.auxiliary.compose.database.model.traits.TimestampedEntity import ac.cord.auxiliary.compose.database.model.traits.UserViewableEntity -import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index -import androidx.room.PrimaryKey +import androidx.room3.Entity +import androidx.room3.ForeignKey +import androidx.room3.Index +import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Reaction.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Reaction.kt index 2fe96343..5a21d75d 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Reaction.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Reaction.kt @@ -8,10 +8,10 @@ import ac.cord.auxiliary.compose.database.model.traits.ReplyingToEntity import ac.cord.auxiliary.compose.database.model.traits.SoftDeletableEntity import ac.cord.auxiliary.compose.database.model.traits.TimestampedEntity import ac.cord.auxiliary.compose.database.model.traits.UserViewableEntity -import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index -import androidx.room.PrimaryKey +import androidx.room3.Entity +import androidx.room3.ForeignKey +import androidx.room3.Index +import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/RecentSearch.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/RecentSearch.kt index f0ec0e31..95cb0309 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/RecentSearch.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/RecentSearch.kt @@ -2,8 +2,9 @@ package ac.cord.auxiliary.compose.database.model import ac.cord.auxiliary.compose.database.model.traits.TimestampedEntity import ac.cord.auxiliary.compose.database.model.typealiases.SynchronizationFilterArray -import androidx.room.Entity -import androidx.room.PrimaryKey +import ac.cord.auxiliary.compose.database.model.types.SynchronizationFilter +import androidx.room3.Entity +import androidx.room3.PrimaryKey import kotlin.time.Clock import kotlin.time.Instant @@ -12,7 +13,7 @@ data class RecentSearch( @PrimaryKey val query: String, - val synchronizationFilters: SynchronizationFilterArray? = null, + val synchronizationFilters: Array? = null, override val createdAt: Instant = Clock.System.now(), override val updatedAt: Instant = createdAt, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Relay.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Relay.kt index 67c9eb86..a5b17671 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Relay.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Relay.kt @@ -1,6 +1,6 @@ package ac.cord.auxiliary.compose.database.model -import androidx.room.Entity +import androidx.room3.Entity @Entity( primaryKeys = ["publicKey", "type", "url"] diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/RepostedRelation.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/RepostedRelation.kt index 6cd402df..c74e2640 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/RepostedRelation.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/RepostedRelation.kt @@ -5,10 +5,10 @@ import ac.cord.auxiliary.compose.database.model.traits.LocalStoreEntity import ac.cord.auxiliary.compose.database.model.traits.SoftDeletableEntity import ac.cord.auxiliary.compose.database.model.traits.TimestampedEntity import ac.cord.auxiliary.compose.database.model.traits.UserViewableEntity -import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index -import androidx.room.PrimaryKey +import androidx.room3.Entity +import androidx.room3.ForeignKey +import androidx.room3.Index +import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/SynchronizeNostrEventRequest.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/SynchronizeNostrEventRequest.kt index 91632cd1..e66cbbff 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/SynchronizeNostrEventRequest.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/SynchronizeNostrEventRequest.kt @@ -4,10 +4,11 @@ import ac.cord.auxiliary.compose.database.model.traits.OptionalNostrEventEntity import ac.cord.auxiliary.compose.database.model.traits.TimestampedEntity import ac.cord.auxiliary.compose.database.model.traits.UnsignedNostrEventEntity import ac.cord.auxiliary.compose.database.model.typealiases.SynchronizationFilterArray -import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index -import androidx.room.PrimaryKey +import ac.cord.auxiliary.compose.database.model.types.SynchronizationFilter +import androidx.room3.Entity +import androidx.room3.ForeignKey +import androidx.room3.Index +import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant @@ -45,7 +46,7 @@ data class SynchronizeNostrEventRequest( val level: Int, - val synchronizationFilters: SynchronizationFilterArray, + val synchronizationFilters: Array, override val nostrEventId: HexKey? = null, override val unsignedNostrEventId: Long? = null, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/SynchronizeNostrEventResult.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/SynchronizeNostrEventResult.kt index 5c28f6db..0678eb23 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/SynchronizeNostrEventResult.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/SynchronizeNostrEventResult.kt @@ -2,10 +2,10 @@ package ac.cord.auxiliary.compose.database.model import ac.cord.auxiliary.compose.database.model.traits.OptionalNostrEventEntity import ac.cord.auxiliary.compose.database.model.traits.TimestampedEntity -import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index -import androidx.room.PrimaryKey +import androidx.room3.Entity +import androidx.room3.ForeignKey +import androidx.room3.Index +import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/UnsignedNostrEvent.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/UnsignedNostrEvent.kt index 84f95de3..70900bbc 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/UnsignedNostrEvent.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/UnsignedNostrEvent.kt @@ -4,9 +4,9 @@ import ac.cord.auxiliary.compose.database.model.traits.BroadcastableEntity import ac.cord.auxiliary.compose.database.model.traits.LocalStoreEntity import ac.cord.auxiliary.compose.database.model.traits.SoftDeletableEntity import ac.cord.auxiliary.compose.database.model.traits.TimestampedEntity -import androidx.room.Entity -import androidx.room.Index -import androidx.room.PrimaryKey +import androidx.room3.Entity +import androidx.room3.Index +import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Kind import com.vitorpamplona.quartz.nip01Core.core.TagArray @@ -26,8 +26,8 @@ data class UnsignedNostrEvent( val pubKey: HexKey, val kind: Kind, - val tags: TagArray, - val privateTags: TagArray? = null, + val tags: Array>, + val privateTags: Array>? = null, val content: String, val signedAt: Instant? = null, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Zap.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Zap.kt index 28eb4381..14bbc0f9 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Zap.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/Zap.kt @@ -6,10 +6,10 @@ import ac.cord.auxiliary.compose.database.model.traits.NostrEventEntity import ac.cord.auxiliary.compose.database.model.traits.SoftDeletableEntity import ac.cord.auxiliary.compose.database.model.traits.TimestampedEntity import ac.cord.auxiliary.compose.database.model.traits.UserViewableEntity -import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index -import androidx.room.PrimaryKey +import androidx.room3.Entity +import androidx.room3.ForeignKey +import androidx.room3.Index +import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalAccount.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalAccount.kt index d990e64e..7acbe7ee 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalAccount.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalAccount.kt @@ -6,8 +6,8 @@ import ac.cord.auxiliary.compose.database.model.NostrEvent import ac.cord.auxiliary.compose.database.model.Profile import ac.cord.auxiliary.compose.database.model.SynchronizeNostrEventRequest import ac.cord.auxiliary.compose.database.model.UnsignedNostrEvent -import androidx.room.Embedded -import androidx.room.Relation +import androidx.room3.Embedded +import androidx.room3.Relation data class LocalAccount( @Embedded val unsignedNostrEvent: UnsignedNostrEvent?, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalBroadcastNostrEventRequest.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalBroadcastNostrEventRequest.kt index d943c63a..6aa394fd 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalBroadcastNostrEventRequest.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalBroadcastNostrEventRequest.kt @@ -2,8 +2,8 @@ package ac.cord.auxiliary.compose.database.model.intermdiate import ac.cord.auxiliary.compose.database.model.BroadcastNostrEventRequest import ac.cord.auxiliary.compose.database.model.NostrEvent -import androidx.room.Embedded -import androidx.room.Relation +import androidx.room3.Embedded +import androidx.room3.Relation data class LocalBroadcastNostrEventRequest( @Embedded val broadcastNostrEventRequest: BroadcastNostrEventRequest, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalInReplyToNostrEvent.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalInReplyToNostrEvent.kt index 54096520..5b1d0fee 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalInReplyToNostrEvent.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalInReplyToNostrEvent.kt @@ -20,8 +20,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import androidx.room.Embedded -import androidx.room.Relation +import androidx.room3.Embedded +import androidx.room3.Relation data class LocalInReplyToNostrEvent( @Embedded val inReplyToRelation: InReplyToRelation, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalMention.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalMention.kt index 2f811fe5..acdca3d2 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalMention.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalMention.kt @@ -2,8 +2,8 @@ package ac.cord.auxiliary.compose.database.model.intermdiate import ac.cord.auxiliary.compose.database.model.Mention import ac.cord.auxiliary.compose.database.model.Profile -import androidx.room.Embedded -import androidx.room.Relation +import androidx.room3.Embedded +import androidx.room3.Relation data class LocalMention( @Embedded val mention: Mention, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalNostrEvent.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalNostrEvent.kt index 0d6a21b3..6dbf36a4 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalNostrEvent.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalNostrEvent.kt @@ -21,10 +21,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import androidx.room.Embedded -import androidx.room.Ignore -import androidx.room.Junction -import androidx.room.Relation +import androidx.room3.Embedded +import androidx.room3.Ignore +import androidx.room3.Junction +import androidx.room3.Relation data class LocalNostrEvent( @Embedded val nostrEvent: NostrEvent, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalPost.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalPost.kt index 492e1be7..ef7f2bd1 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalPost.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalPost.kt @@ -2,8 +2,8 @@ package ac.cord.auxiliary.compose.database.model.intermdiate import ac.cord.auxiliary.compose.database.model.Post import ac.cord.auxiliary.compose.database.model.Profile -import androidx.room.Embedded -import androidx.room.Relation +import androidx.room3.Embedded +import androidx.room3.Relation data class LocalPost( @Embedded val post: Post, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalProfile.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalProfile.kt index d12e1536..6594f3ff 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalProfile.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalProfile.kt @@ -2,8 +2,8 @@ package ac.cord.auxiliary.compose.database.model.intermdiate import ac.cord.auxiliary.compose.database.model.NostrEvent import ac.cord.auxiliary.compose.database.model.Profile -import androidx.room.Embedded -import androidx.room.Relation +import androidx.room3.Embedded +import androidx.room3.Relation data class LocalProfile( @Embedded val nostrEvent: NostrEvent, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalProfileWithFollowers.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalProfileWithFollowers.kt index 7509df0e..457b5267 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalProfileWithFollowers.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalProfileWithFollowers.kt @@ -3,9 +3,9 @@ package ac.cord.auxiliary.compose.database.model.intermdiate import ac.cord.auxiliary.compose.database.model.Connection import ac.cord.auxiliary.compose.database.model.NostrEvent import ac.cord.auxiliary.compose.database.model.Profile -import androidx.room.Embedded -import androidx.room.Junction -import androidx.room.Relation +import androidx.room3.Embedded +import androidx.room3.Junction +import androidx.room3.Relation data class LocalProfileWithFollowers( @Embedded val nostrEvent: NostrEvent, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalProfileWithFollowing.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalProfileWithFollowing.kt index e1702708..e1d0ffc5 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalProfileWithFollowing.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalProfileWithFollowing.kt @@ -3,9 +3,9 @@ package ac.cord.auxiliary.compose.database.model.intermdiate import ac.cord.auxiliary.compose.database.model.Connection import ac.cord.auxiliary.compose.database.model.NostrEvent import ac.cord.auxiliary.compose.database.model.Profile -import androidx.room.Embedded -import androidx.room.Junction -import androidx.room.Relation +import androidx.room3.Embedded +import androidx.room3.Junction +import androidx.room3.Relation data class LocalProfileWithFollowing( @Embedded val nostrEvent: NostrEvent, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalQuotedNostrEvent.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalQuotedNostrEvent.kt index 61e004d6..b33b1b0c 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalQuotedNostrEvent.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalQuotedNostrEvent.kt @@ -20,8 +20,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import androidx.room.Embedded -import androidx.room.Relation +import androidx.room3.Embedded +import androidx.room3.Relation data class LocalQuotedNostrEvent( @Embedded val quotedRelation: QuotedRelation, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalRepostedNostrEvent.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalRepostedNostrEvent.kt index 2e7f9327..ed0be920 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalRepostedNostrEvent.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/model/intermdiate/LocalRepostedNostrEvent.kt @@ -20,8 +20,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import androidx.room.Embedded -import androidx.room.Relation +import androidx.room3.Embedded +import androidx.room3.Relation data class LocalRepostedNostrEvent( @Embedded val repostedRelation: RepostedRelation, diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/repository/DatabaseNostrRepository.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/repository/DatabaseNostrRepository.kt index 15f94322..a8314257 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/repository/DatabaseNostrRepository.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/repository/DatabaseNostrRepository.kt @@ -58,6 +58,8 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.launch +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock import kotlin.collections.emptyMap import kotlin.collections.plus import kotlin.time.Clock @@ -75,6 +77,8 @@ class DatabaseNostrRepository( val logger = Logger.withTag(TAG) + private val storeNostrEventMutex = Mutex() + override suspend fun observeProfile(publicKey: HexKey): Flow { return database.unsignedNostrEventDao().observeProfile(publicKey) } @@ -399,40 +403,20 @@ class DatabaseNostrRepository( synchronizeNostrEventRequest: SynchronizeNostrEventRequest, synchronizationRelayURLs: List ) { - val triggerDelay = 5.seconds - - val delayedFlowTriggerNostrEvent = nostrEvent.copy( - savedAt = Instant.fromEpochSeconds( - Clock.System.now().epochSeconds + triggerDelay.inWholeSeconds + storeNostrEventMutex.withLock { + database.nostrDao().storeNostrEvent( + nostrEvent, + synchronizationRelayURLs = synchronizationRelayURLs, + level = synchronizeNostrEventRequest.level ) - ) - logger.d("savedAt: ${nostrEvent.savedAt}") - logger.d("SavedAt: ${delayedFlowTriggerNostrEvent.savedAt}") - database.nostrDao().storeNostrEvent( - delayedFlowTriggerNostrEvent, - synchronizationRelayURLs = synchronizationRelayURLs, - level = synchronizeNostrEventRequest.level - ) - database.synchronizeNostrEventRequestDao().upsert( - synchronizeNostrEventRequest.copy( - nostrEventId = nostrEvent.id, - status = "processed" + database.synchronizeNostrEventRequestDao().upsert( + synchronizeNostrEventRequest.copy( + nostrEventId = nostrEvent.id, + status = "processed" + ) ) - ) - - // Might not even need this delay -// scope.launch { -// delay(triggerDelay) -// database.nostrEventDao().upsert( -// nostrEvent -// ) -// } - // Trigger the nostrEvent to appear in the feed... - delay(triggerDelay) - database.nostrEventDao().upsert( - nostrEvent - ) + } } override suspend fun queueSynchronizeNostrEvent( diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5b3fe087..92eed254 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -29,8 +29,9 @@ navigationCompose = "2.9.2" okhttp = "5.3.2" okio = "3.16.4" pagingCommon = "3.5.0-alpha01" -quartz = "1.06.3" +quartz = "1.08.0" room = "2.8.4" +room3 = "3.0.0-alpha03" sqlite = "2.6.2" [libraries] @@ -45,7 +46,9 @@ androidx-paging-common = { module = "androidx.paging:paging-common", version.ref androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "pagingCommon" } androidx-sqlite-bundled = { module = "androidx.sqlite:sqlite-bundled", version.ref = "sqlite" } androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } +androidx-room3-runtime = { module = "androidx.room3:room3-runtime", version.ref = "room3" } androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } +androidx-room3-compiler = { module = "androidx.room3:room3-compiler", version.ref = "room3" } androidx-room-sqlite-wrapper = { module = "androidx.room:room-sqlite-wrapper", version.ref = "room" } androidx-lifecycle-viewmodelCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" } androidx-lifecycle-runtimeCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" } @@ -80,6 +83,7 @@ vitorpamplona-quartz = { module = "com.vitorpamplona.quartz:quartz", version.ref [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" } androidx-room = { id = "androidx.room", version.ref = "room" } +androidx-room3 = { id = "androidx.room3", version.ref = "room3" } androidLibrary = { id = "com.android.library", version.ref = "agp" } composeHotReload = { id = "org.jetbrains.compose.hot-reload", version.ref = "composeHotReload" } composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "composeMultiplatform" }