Clean up code and don't sync mlsMessages when not negentropy.

This commit is contained in:
Kgothatso Ngako
2026-07-05 17:25:04 +02:00
parent d44193bdab
commit 010e3084b3
2 changed files with 24 additions and 18 deletions

View File

@@ -118,7 +118,7 @@ class ChatRoomListViewModel(
relayURL = relayChatRoomMap.first,
synchronizationFilter = mlsGroupMessageFilter
),
purpose = "messages",
purpose = "mlsMessages",
synchronizationFilter = mlsGroupMessageFilter,
relayURL = relayChatRoomMap.first,
level = 0

View File

@@ -4,6 +4,8 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.initializer
import androidx.lifecycle.viewmodel.viewModelFactory
import at.torch.compose.database.model.SynchronizeNostrEventRequest
import at.torch.compose.database.model.types.SynchronizationFilter
import at.torch.compose.network.dto.toRelayDTO
import at.torch.compose.network.sockets.NostrIncomingMessage
import co.touchlab.kermit.Logger
@@ -39,7 +41,7 @@ class SynchronizationViewModel(
val scope: CoroutineScope,
): ViewModel() {
val relaysSocketManager = _root_ide_package_.at.torch.compose.network.relays.RelaysSocketManager(
val relaysSocketManager = at.torch.compose.network.relays.RelaysSocketManager(
activeWalletStateFlow = activeWalletStateFlow,
nostrSocketClientFactory = at.torch.compose.network.sockets.NostrSocketClientFactory,
cachingImportRepository = at.torch.compose.repository.CachingImportRepository.NO_OP_CACHING_IMPORT_REPOSITORY,
@@ -125,7 +127,7 @@ class SynchronizationViewModel(
synchronizeNostrEventRequest.relayURL
).collect { nostrIncomingMessage ->
when (nostrIncomingMessage) {
is at.torch.compose.network.sockets.NostrIncomingMessage.EventMessage -> {
is NostrIncomingMessage.EventMessage -> {
scope.launch(Dispatchers.IO) {
logger.d("Import message: $nostrIncomingMessage")
nostrIncomingMessage.nostrEvent?.let {
@@ -139,7 +141,7 @@ class SynchronizationViewModel(
}
}
}
is at.torch.compose.network.sockets.NostrIncomingMessage.EventsMessage -> {
is NostrIncomingMessage.EventsMessage -> {
logger.d("Import messages: $nostrIncomingMessage")
nostrIncomingMessage.nostrEvents.forEach { nostrEvent ->
@@ -152,7 +154,7 @@ class SynchronizationViewModel(
)
}
}
is at.torch.compose.network.sockets.NostrIncomingMessage.EoseMessage -> {
is NostrIncomingMessage.EoseMessage -> {
logger.d("Sync request has been successfully processed (${synchronizeNostrEventRequest.relayURL}): $nostrIncomingMessage")
val closeCommand = CloseCmd(
subId = synchronizeNostrEventRequest.id,
@@ -240,7 +242,7 @@ class SynchronizationViewModel(
negentropySynchronizeRequest.relayURL
).collect { nostrIncomingMessage ->
when (nostrIncomingMessage) {
is at.torch.compose.network.sockets.NostrIncomingMessage.EventMessage -> {
is NostrIncomingMessage.EventMessage -> {
scope.launch(Dispatchers.IO) {
logger.d("Import message: $nostrIncomingMessage")
nostrIncomingMessage.nostrEvent?.let {
@@ -254,7 +256,7 @@ class SynchronizationViewModel(
}
}
}
is at.torch.compose.network.sockets.NostrIncomingMessage.EventsMessage -> {
is NostrIncomingMessage.EventsMessage -> {
logger.d("Import messages: $nostrIncomingMessage")
nostrIncomingMessage.nostrEvents.forEach { nostrEvent ->
@@ -281,11 +283,13 @@ class SynchronizationViewModel(
logger.d("Negentropy Error (need to synchronize like normal): ${nostrIncomingMessage.negentropyReason}")
// TODO: Don't schedule a sync when on mobile internet.
nostrRepository.queueSynchronizeNostrEvent(
listOf(
negentropySynchronizeRequest.toSynchronizeNostrEventRequest()
if (negentropySynchronizeRequest.purpose == "mlsMessages") {
nostrRepository.queueSynchronizeNostrEvent(
listOf(
negentropySynchronizeRequest.toSynchronizeNostrEventRequest()
)
)
)
}
return@collect
}
is NostrIncomingMessage.NegentropyMessage -> {
@@ -303,10 +307,10 @@ class SynchronizationViewModel(
// Schedule a sync from this relay...
nostrRepository.queueSynchronizeNostrEvent(
listOf(
_root_ide_package_.at.torch.compose.database.model.SynchronizeNostrEventRequest(
SynchronizeNostrEventRequest(
purpose = negentropySynchronizeRequest.purpose,
synchronizationFilters = arrayOf(
_root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter(
SynchronizationFilter(
ids = result.needIds.map { it.toHexString() }
.toTypedArray()
)
@@ -319,7 +323,7 @@ class SynchronizationViewModel(
}
val eventIds = events.map { it.id }
val broadcastNostrEventRequests = result.sendIds.filter { it.toHexString() in eventIds }.map { sendId ->
_root_ide_package_.at.torch.compose.database.model.BroadcastNostrEventRequest(
at.torch.compose.database.model.BroadcastNostrEventRequest(
nostrEventId = sendId.toHexString(),
relayURL = negentropySynchronizeRequest.relayURL
)
@@ -340,11 +344,13 @@ class SynchronizationViewModel(
is NostrIncomingMessage.NoticeMessage -> {
logger.d("Notice message ${negentropySynchronizeRequest.relayURL}: $nostrIncomingMessage")
if (nostrIncomingMessage.subscriptionId?.contains("negentropy disabled") == true) {
nostrRepository.queueSynchronizeNostrEvent(
listOf(
negentropySynchronizeRequest.toSynchronizeNostrEventRequest()
if (negentropySynchronizeRequest.purpose == "mlsMessages") {
nostrRepository.queueSynchronizeNostrEvent(
listOf(
negentropySynchronizeRequest.toSynchronizeNostrEventRequest()
)
)
)
}
}
}
else -> {