nvrsion: Add: Global Icon For Remote Projects to display globe icon next to remote projects in sidebar, matching local projects in appearance, Fix: Chat: Remove Face ID Permission Text, Refactor: Chat: Live Activity Content Density to open app directly into waiting sessions when tapped, Refactor: Chat: Live Activity Content Density to refresh live activity info significantly faster, Refactor: Chat: Live Activity Content Density to refresh live activity info significantly faster, Fix: Chat: Live Activity Content Density to refresh live activity info significantly faster, Fix: Chat: Network Type Transition Optimization to reduce delay during network type switches, Feature Enhancement Planning: All devices in a mesh group should see and be aware of each other; “pair” reframed into “join”; scanning
Nucleic-Promote: 1 Co-authored-by: Nucleic <[email protected]>
This commit is contained in:
@@ -112,6 +112,26 @@ enum IdentityStore {
|
||||
savePairedHosts(pairedHosts().filter { $0.fingerprint != hostID })
|
||||
}
|
||||
|
||||
/// Merge a Mac learned via mesh roster gossip (mesh "join"): append it if new, else refresh its
|
||||
/// hints **in place** — unlike `upsertPairedHost`, this must NOT reorder (which would hijack the
|
||||
/// active host) and must not clobber a relay token or our established device id with the
|
||||
/// gossiped nils.
|
||||
static func mergePairedHost(_ host: PairedHost) {
|
||||
var hosts = pairedHosts()
|
||||
if let index = hosts.firstIndex(where: { $0.fingerprint == host.fingerprint }) {
|
||||
var merged = host
|
||||
let existing = hosts[index]
|
||||
merged.deviceID = existing.deviceID // keep our established id for this host
|
||||
merged.relayMembershipToken = host.relayMembershipToken ?? existing.relayMembershipToken
|
||||
merged.relayRoomID = host.relayRoomID ?? existing.relayRoomID
|
||||
merged.relayURL = host.relayURL ?? existing.relayURL
|
||||
hosts[index] = merged
|
||||
} else {
|
||||
hosts.append(host)
|
||||
}
|
||||
savePairedHosts(hosts)
|
||||
}
|
||||
|
||||
/// Mutate one host's record **in place**, preserving registry order — unlike
|
||||
/// `upsertPairedHost`, this must not make the host active (it backs background
|
||||
/// refreshes like the relay-membership push, which can arrive from a non-active Mac).
|
||||
|
||||
Reference in New Issue
Block a user