A little clean up

This commit is contained in:
Kgothatso Ngako
2026-07-05 17:15:54 +02:00
parent 61a5e4c138
commit d44193bdab
4 changed files with 19 additions and 33 deletions

View File

@@ -87,11 +87,11 @@ abstract class MarmotOutboundDao(
logger.d("groupEvent: ${groupEvent.toJson()}")
// May need to update chatRoom mlsGroupState... or last sent message
// database.chatRoomDao().upsert(
// localChatRoom.chatRoom.copy(
// mlsGroupState = mlsGroup.saveState().encodeTls().toHex()
// )
// )
database.chatRoomDao().upsert(
localChatRoom.chatRoom.copy(
mlsGroupState = mlsGroup.saveState().encodeTls().toHex()
)
)
database.nostrEventDao().upsert(
NostrEvent(

View File

@@ -4,6 +4,10 @@ import androidx.room3.Entity
import androidx.room3.ForeignKey
import androidx.room3.Ignore
import androidx.room3.PrimaryKey
import at.torch.compose.database.model.traits.LocalStoreEntity
import at.torch.compose.database.model.traits.SoftDeletableEntity
import at.torch.compose.database.model.traits.TimestampedEntity
import at.torch.compose.database.model.traits.UserViewableEntity
import co.touchlab.kermit.Logger
import com.vitorpamplona.quartz.nip01Core.core.HexKey
import com.vitorpamplona.quartz.nip01Core.core.hexToByteArray
@@ -75,10 +79,7 @@ data class ChatRoom(
override val viewedAt: Instant? = null,
override val deletedAt: Instant? = null,
): at.torch.compose.database.model.traits.TimestampedEntity,
at.torch.compose.database.model.traits.LocalStoreEntity,
at.torch.compose.database.model.traits.UserViewableEntity,
at.torch.compose.database.model.traits.SoftDeletableEntity
): TimestampedEntity, LocalStoreEntity, UserViewableEntity, SoftDeletableEntity
{
companion object {
const val TAG = "ChatRoom"

View File

@@ -38,6 +38,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.IO
import kotlinx.coroutines.launch
import kotlin.math.log
import kotlin.time.Instant
class ChatRoomListViewModel(
initialChatRoomListUIState: at.torch.compose.ui.view.state.ChatRoomListUIState,
@@ -83,7 +84,7 @@ class ChatRoomListViewModel(
limit = 50
)
nostrRepository.queueNegentropySynchronizeRequest(
at.torch.compose.nostr.Relays.DefaultDMRelayList.shuffled().map { normalizedRelayUrl ->
Relays.DefaultDMRelayList.shuffled().map { normalizedRelayUrl ->
NegentropySynchronizeRequest(
id = NegentropySynchronizeRequest.computeId(
relayURL = normalizedRelayUrl.url,
@@ -101,27 +102,10 @@ class ChatRoomListViewModel(
val chatRooms = chatRepository.getChatRoomListByPublicKey(publicKey)
val relayChatRoomMaps = Relays.DefaultDMRelayList.map { dmRelay ->
dmRelay.url to chatRooms.map { localChatRoom ->
// TODO: Just return localChatRoom.chatRoom.id once we have nostrGroupId stored as the chatRoom primary id
if (localChatRoom.chatRoom.mlsGroupState != null) {
if (localChatRoom.chatRoom.id.length == 64) {
localChatRoom.chatRoom.id
} else {
val group = MlsGroup.restore(
MlsGroupState.decodeTls(
localChatRoom.chatRoom.mlsGroupState.hexToByteArray()
)
)
logger.d("chatRoomId: ${localChatRoom.chatRoom.id} vs nostrGroupId (${group.currentMarmotData()?.nostrGroupId})")
group.currentMarmotData()?.nostrGroupId ?: localChatRoom.chatRoom.id
}
} else {
localChatRoom.chatRoom.id
}
localChatRoom.chatRoom.id
}
}
// TODO: Get relay with chatGroups...
val negentropySyncRequests = relayChatRoomMaps.map { relayChatRoomMap ->
val mlsGroupMessageFilter = SynchronizationFilter(
kinds = arrayOf(GroupEvent.KIND),

View File

@@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.initializer
import androidx.lifecycle.viewmodel.viewModelFactory
import at.torch.compose.network.dto.toRelayDTO
import at.torch.compose.network.sockets.NostrIncomingMessage
import co.touchlab.kermit.Logger
import com.vitorpamplona.negentropy.Negentropy
import com.vitorpamplona.negentropy.storage.StorageVector
@@ -266,7 +267,7 @@ class SynchronizationViewModel(
)
}
}
is at.torch.compose.network.sockets.NostrIncomingMessage.EoseMessage -> {
is NostrIncomingMessage.EoseMessage -> {
logger.d("Sync request has been successfully processed (${negentropySynchronizeRequest.relayURL}): $nostrIncomingMessage")
relaysSocketManager.closeNegentropySync(
@@ -276,7 +277,7 @@ class SynchronizationViewModel(
return@collect
}
is at.torch.compose.network.sockets.NostrIncomingMessage.NegentropyError -> {
is NostrIncomingMessage.NegentropyError -> {
logger.d("Negentropy Error (need to synchronize like normal): ${nostrIncomingMessage.negentropyReason}")
// TODO: Don't schedule a sync when on mobile internet.
@@ -287,7 +288,7 @@ class SynchronizationViewModel(
)
return@collect
}
is at.torch.compose.network.sockets.NostrIncomingMessage.NegentropyMessage -> {
is NostrIncomingMessage.NegentropyMessage -> {
logger.d("NegentropyMessage: ${nostrIncomingMessage.negentropyMessage}")
val result = negentropy.reconcile(
@@ -336,7 +337,7 @@ class SynchronizationViewModel(
return@collect
}
is at.torch.compose.network.sockets.NostrIncomingMessage.NoticeMessage -> {
is NostrIncomingMessage.NoticeMessage -> {
logger.d("Notice message ${negentropySynchronizeRequest.relayURL}: $nostrIncomingMessage")
if (nostrIncomingMessage.subscriptionId?.contains("negentropy disabled") == true) {
nostrRepository.queueSynchronizeNostrEvent(