Link up marmotGroupEvent
This commit is contained in:
@@ -5,6 +5,7 @@ import androidx.room3.RoomDatabase
|
||||
import androidx.room3.TypeConverters
|
||||
import androidx.room3.immediateTransaction
|
||||
import androidx.room3.useWriterConnection
|
||||
import at.torch.compose.database.dao.MarmotGroupEventDao
|
||||
import at.torch.compose.database.dao.MarmotInnerEventDao
|
||||
import at.torch.compose.database.dao.MarmotKeyPackageBundleDao
|
||||
import at.torch.compose.database.dao.MarmotKeyPackageDao
|
||||
@@ -20,6 +21,8 @@ import at.torch.compose.database.model.GiftWrapMessage
|
||||
import at.torch.compose.database.model.GiftWrapPayload
|
||||
import at.torch.compose.database.model.GiftWrapSeal
|
||||
import at.torch.compose.database.model.InReplyToRelation
|
||||
import at.torch.compose.database.model.MarmotGroupEvent
|
||||
import at.torch.compose.database.model.MarmotInnerEvent
|
||||
import at.torch.compose.database.model.MarmotKeyPackage
|
||||
import at.torch.compose.database.model.MarmotKeyPackageBundle
|
||||
import at.torch.compose.database.model.Mention
|
||||
@@ -57,6 +60,8 @@ val GENESIS_AT = Instant.fromEpochMilliseconds(1231006505000L)
|
||||
GiftWrapSeal::class,
|
||||
GiftWrapPayload::class,
|
||||
InReplyToRelation::class,
|
||||
MarmotGroupEvent::class,
|
||||
MarmotInnerEvent::class,
|
||||
MarmotKeyPackage::class,
|
||||
MarmotKeyPackageBundle::class,
|
||||
Mention::class,
|
||||
@@ -104,6 +109,7 @@ abstract class TorchDatabase: RoomDatabase() {
|
||||
|
||||
abstract fun inReplyToRelationDao(): at.torch.compose.database.dao.InReplyToRelationDao
|
||||
|
||||
abstract fun marmotGroupEventDao(): MarmotGroupEventDao
|
||||
abstract fun marmotInnerEventDao(): MarmotInnerEventDao
|
||||
|
||||
abstract fun marmotKeyPackageDao(): MarmotKeyPackageDao
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package at.torch.compose.database.dao
|
||||
|
||||
import androidx.room3.Dao
|
||||
import androidx.room3.Query
|
||||
import androidx.room3.Upsert
|
||||
import at.torch.compose.database.model.MarmotGroupEvent
|
||||
import at.torch.compose.database.model.MarmotInnerEvent
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
||||
interface MarmotGroupEventDao {
|
||||
|
||||
@Upsert
|
||||
suspend fun upsert(marmotGroupEvent: MarmotGroupEvent)
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import at.torch.compose.database.model.BroadcastNostrEventRequest
|
||||
import at.torch.compose.database.model.ChatMessage
|
||||
import at.torch.compose.database.model.ChatRoom
|
||||
import at.torch.compose.database.model.Connection
|
||||
import at.torch.compose.database.model.MarmotGroupEvent
|
||||
import at.torch.compose.database.model.Mention
|
||||
import at.torch.compose.database.model.NegentropySynchronizeRequest
|
||||
import at.torch.compose.database.model.NostrEvent
|
||||
@@ -53,6 +54,7 @@ import com.vitorpamplona.quartz.nip01Core.tags.people.taggedUsers
|
||||
import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent
|
||||
import com.vitorpamplona.quartz.nip17Dm.messages.ChatMessageEvent
|
||||
import com.vitorpamplona.quartz.nip17Dm.settings.ChatMessageRelayListEvent
|
||||
import com.vitorpamplona.quartz.nip40Expiration.expiration
|
||||
import com.vitorpamplona.quartz.nip59Giftwrap.wraps.GiftWrapEvent
|
||||
import kotlin.io.encoding.Base64
|
||||
import kotlin.time.Clock
|
||||
@@ -367,7 +369,18 @@ abstract class NostrDao(
|
||||
}
|
||||
|
||||
if (memberPubkeys.contains(activeKeyPair.pubKey.toHex())) {
|
||||
// Ingest message...
|
||||
database.marmotGroupEventDao().upsert(
|
||||
MarmotGroupEvent(
|
||||
id = groupEvent.id,
|
||||
userPublicKey = activeKeyPair.pubKey.toHex(),
|
||||
publicKey = groupEvent.pubKey,
|
||||
encryptedContent = groupEvent.encryptedContent(),
|
||||
chatRoomId = chatRoomId,
|
||||
nostrEventId = nostrEvent.id,
|
||||
createdAt = Instant.fromEpochSeconds(groupEvent.createdAt),
|
||||
expiresAt = groupEvent.expiration()?.let { Instant.fromEpochSeconds(it) }
|
||||
)
|
||||
)
|
||||
MarmotInboundManager.processGroupEvent(
|
||||
database = database,
|
||||
activeKeyPair = activeKeyPair,
|
||||
@@ -375,7 +388,6 @@ abstract class NostrDao(
|
||||
mlsGroup = mlsGroup,
|
||||
groupEvent = groupEvent
|
||||
)?.let { groupEventResult ->
|
||||
|
||||
ChatMessage.fromGroupEventResult(
|
||||
database = database,
|
||||
activeKeyPair = activeKeyPair,
|
||||
@@ -386,11 +398,7 @@ abstract class NostrDao(
|
||||
chatMessage
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
throw MarmotNotMemberOfChatGroupException("We are not a member of the chat room ${localChatRoom.chatRoom.id}")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user