A little clean up
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user