mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-24 23:45:18 +00:00
Periphery 3.7.4 audit of both schemes (macOS + iOS, intersected so platform-specific code is never touched), with test targets indexed and the share extension built. 277 dead declarations removed or demoted: dead forwarding wrappers (ChatViewModel+Nostr/+PrivateChat), removed- feature remnants (autocomplete command suggestions, back-swipe tuning, MediaSendError, GeohashParticipantTracker), unused Tor dormancy bindings, assign-only properties, unused parameters (renamed to _), and redundant public accessibility. 13 orphaned localization keys deleted across all 29 locales (old pre-#1392 location-notes UI, app_info warnings). Two real tests were flagged as unused because they never ran: Swift Testing methods missing @Test (NostrProtocolTests. testAckRoundTripNIP44V2_Delivered, NotificationStreamAssemblerTests. testAssemblesCompressedLargeFrame). Re-armed both; they pass. Deliberately kept, now recorded in .periphery.baseline.json: iOS-only code invisible to the CI macOS scan, C FFI signatures, keep-alive NWPathMonitor reference, InboundEventKey.eventID (dedup semantics), wifiBulk capability bit (reserved for Wi-Fi bulk work, used by BitFoundation package tests), and the String secureClear cluster (exercised by package tests). New: .periphery.yml config and an advisory Dead Code CI job (mirrors the SwiftLint precedent from #1361) that fails on findings not in the committed baseline. Verified: full macOS app suite, BitFoundation (119) and BitLogger (13) package tests green; periphery scan --strict exits clean. Co-authored-by: jack <jackjackbits@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
58 lines
1.6 KiB
Swift
58 lines
1.6 KiB
Swift
//
|
|
// MockBLEBus.swift
|
|
// bitchatTests
|
|
//
|
|
// This is free and unencumbered software released into the public domain.
|
|
// For more information, see <https://unlicense.org>
|
|
//
|
|
|
|
import Foundation
|
|
import BitFoundation
|
|
|
|
final class MockBLEBus {
|
|
private var registry: [PeerID: MockBLEService] = [:]
|
|
private var adjacency: [PeerID: Set<PeerID>] = [:]
|
|
|
|
// Enable automatic flooding for public messages in integration tests only
|
|
let autoFloodEnabled: Bool
|
|
|
|
init(autoFloodEnabled: Bool = false) {
|
|
self.autoFloodEnabled = autoFloodEnabled
|
|
}
|
|
|
|
func register(_ service: MockBLEService, for peerID: PeerID) {
|
|
registry[peerID] = service
|
|
if adjacency[peerID] == nil { adjacency[peerID] = [] }
|
|
}
|
|
|
|
func connect(_ a: PeerID, _ b: PeerID) {
|
|
var setA = adjacency[a] ?? []
|
|
setA.insert(b)
|
|
adjacency[a] = setA
|
|
var setB = adjacency[b] ?? []
|
|
setB.insert(a)
|
|
adjacency[b] = setB
|
|
}
|
|
|
|
func disconnect(_ a: PeerID, _ b: PeerID) {
|
|
if var setA = adjacency[a] { setA.remove(b); adjacency[a] = setA }
|
|
if var setB = adjacency[b] { setB.remove(a); adjacency[b] = setB }
|
|
}
|
|
|
|
func neighbors(of peerID: PeerID) -> [MockBLEService] {
|
|
let ids = adjacency[peerID] ?? []
|
|
let result = ids.compactMap { registry[$0] }
|
|
return result
|
|
}
|
|
|
|
func isDirectNeighbor(_ a: PeerID, _ b: PeerID) -> Bool {
|
|
let res = adjacency[a]?.contains(b) ?? false
|
|
return res
|
|
}
|
|
|
|
func service(for peerID: PeerID) -> MockBLEService? {
|
|
let svc = registry[peerID]
|
|
return svc
|
|
}
|
|
}
|