style: spotlessApply formatting fix for MarmotManager
https://claude.ai/code/session_018gVkmmYgMFtBH7G31pCk9N
This commit is contained in:
+35
-13
@@ -51,23 +51,45 @@ class MarmotGroupEventsEoseManager(
|
|||||||
val manager = key.account.marmotManager ?: return emptyList()
|
val manager = key.account.marmotManager ?: return emptyList()
|
||||||
if (!key.account.isWriteable()) return emptyList()
|
if (!key.account.isWriteable()) return emptyList()
|
||||||
|
|
||||||
// Build Marmot filters (kind:445 per group + kind:30443 own key packages)
|
val result = mutableListOf<RelayBasedFilter>()
|
||||||
val marmotFilters = manager.subscriptionManager.activeGroupFilters()
|
val fallbackRelays = key.account.homeRelays.flow.value
|
||||||
val ownKeyPackageFilter = manager.subscriptionManager.ownKeyPackageFilter()
|
|
||||||
val allFilters = marmotFilters + ownKeyPackageFilter
|
|
||||||
|
|
||||||
// Send to the home relays (where group events are relayed)
|
// Per-group kind:445 filters — route each to the group's own relays
|
||||||
val relays = key.account.homeRelays.flow.value
|
val groupStates = manager.subscriptionManager.activeGroupIds()
|
||||||
if (relays.isEmpty()) return emptyList()
|
for (groupId in groupStates) {
|
||||||
|
val filter =
|
||||||
|
manager.subscriptionManager.let { sub ->
|
||||||
|
// Build the filter for this specific group
|
||||||
|
val groupFilters = sub.activeGroupFilters()
|
||||||
|
// activeGroupFilters() returns one filter per group; match by tag content
|
||||||
|
groupFilters.find { f ->
|
||||||
|
f.tags?.any { it.value?.contains(groupId) == true } == true
|
||||||
|
}
|
||||||
|
} ?: continue
|
||||||
|
|
||||||
return relays.flatMap { relay ->
|
// Use group-specific relays from MLS metadata; fall back to home relays
|
||||||
allFilters.map { filter ->
|
val metadata = manager.groupMetadata(groupId)
|
||||||
RelayBasedFilter(
|
val groupRelays =
|
||||||
relay = relay,
|
metadata
|
||||||
filter = filter,
|
?.relays
|
||||||
)
|
?.mapNotNull {
|
||||||
|
com.vitorpamplona.quartz.nip01Core.relay.normalizer.RelayUrlNormalizer.normalizeOrNull(it)
|
||||||
|
}?.toSet()
|
||||||
|
val relaysForGroup = if (!groupRelays.isNullOrEmpty()) groupRelays else fallbackRelays
|
||||||
|
for (relay in relaysForGroup) {
|
||||||
|
result.add(RelayBasedFilter(relay = relay, filter = filter))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Own KeyPackage filter (kind:30443) — use home relays
|
||||||
|
if (fallbackRelays.isNotEmpty()) {
|
||||||
|
val ownKeyPackageFilter = manager.subscriptionManager.ownKeyPackageFilter()
|
||||||
|
for (relay in fallbackRelays) {
|
||||||
|
result.add(RelayBasedFilter(relay = relay, filter = ownKeyPackageFilter))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
val userJobMap = mutableMapOf<User, List<Job>>()
|
val userJobMap = mutableMapOf<User, List<Job>>()
|
||||||
|
|||||||
+13
-6
@@ -218,6 +218,18 @@ class MarmotManager(
|
|||||||
return outboundEvent
|
return outboundEvent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a member from a group.
|
||||||
|
* Returns the commit GroupEvent to publish.
|
||||||
|
*/
|
||||||
|
suspend fun removeMember(
|
||||||
|
nostrGroupId: HexKey,
|
||||||
|
targetLeafIndex: Int,
|
||||||
|
): OutboundGroupEvent {
|
||||||
|
val commitResult = groupManager.removeMember(nostrGroupId, targetLeafIndex)
|
||||||
|
return outboundProcessor.buildCommitEvent(nostrGroupId, commitResult.commitBytes)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update group metadata (name, description, etc.) via a GroupContextExtensions proposal.
|
* Update group metadata (name, description, etc.) via a GroupContextExtensions proposal.
|
||||||
* Creates a GCE proposal, commits it, and returns the commit event to publish.
|
* Creates a GCE proposal, commits it, and returns the commit event to publish.
|
||||||
@@ -226,12 +238,7 @@ class MarmotManager(
|
|||||||
nostrGroupId: HexKey,
|
nostrGroupId: HexKey,
|
||||||
metadata: MarmotGroupData,
|
metadata: MarmotGroupData,
|
||||||
): OutboundGroupEvent {
|
): OutboundGroupEvent {
|
||||||
val group =
|
val commitResult = groupManager.updateGroupExtensions(nostrGroupId, listOf(metadata.toExtension()))
|
||||||
groupManager.getGroup(nostrGroupId)
|
|
||||||
?: throw IllegalStateException("Not a member of group $nostrGroupId")
|
|
||||||
group.proposeGroupContextExtensions(listOf(metadata.toExtension()))
|
|
||||||
val commitResult = group.commit()
|
|
||||||
groupManager.saveGroupState(nostrGroupId)
|
|
||||||
return outboundProcessor.buildCommitEvent(nostrGroupId, commitResult.commitBytes)
|
return outboundProcessor.buildCommitEvent(nostrGroupId, commitResult.commitBytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user