mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 12:45:20 +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>
98 lines
2.6 KiB
Swift
98 lines
2.6 KiB
Swift
//
|
|
// ChatViewModel+Nostr.swift
|
|
// bitchat
|
|
//
|
|
// Geohash and Nostr logic for ChatViewModel
|
|
//
|
|
|
|
import BitFoundation
|
|
import Foundation
|
|
|
|
extension ChatViewModel {
|
|
|
|
@MainActor
|
|
func resubscribeCurrentGeohash() {
|
|
nostrCoordinator.subscriptions.resubscribeCurrentGeohash()
|
|
}
|
|
|
|
@MainActor
|
|
func subscribeNostrEvent(_ event: NostrEvent) {
|
|
nostrCoordinator.inbound.subscribeNostrEvent(event)
|
|
}
|
|
|
|
@MainActor
|
|
func subscribeGiftWrap(_ giftWrap: NostrEvent, id: NostrIdentity) {
|
|
nostrCoordinator.inbound.subscribeGiftWrap(giftWrap, id: id)
|
|
}
|
|
|
|
@MainActor
|
|
func switchLocationChannel(to channel: ChannelID) {
|
|
nostrCoordinator.subscriptions.switchLocationChannel(to: channel)
|
|
}
|
|
|
|
@MainActor
|
|
func handleNostrEvent(_ event: NostrEvent) {
|
|
nostrCoordinator.inbound.handleNostrEvent(event)
|
|
}
|
|
|
|
@MainActor
|
|
func handleGiftWrap(_ giftWrap: NostrEvent, id: NostrIdentity) {
|
|
nostrCoordinator.inbound.handleGiftWrap(giftWrap, id: id)
|
|
}
|
|
|
|
@MainActor
|
|
func sendGeohash(context: GeoOutgoingContext) {
|
|
nostrCoordinator.subscriptions.sendGeohash(context: context)
|
|
}
|
|
|
|
@MainActor
|
|
func beginGeohashSampling(for geohashes: [String]) {
|
|
nostrCoordinator.subscriptions.beginGeohashSampling(for: geohashes)
|
|
}
|
|
|
|
@MainActor
|
|
func subscribeNostrEvent(_ event: NostrEvent, gh: String) {
|
|
nostrCoordinator.presence.subscribeNostrEvent(event, gh: gh)
|
|
}
|
|
|
|
@MainActor
|
|
func endGeohashSampling() {
|
|
nostrCoordinator.subscriptions.endGeohashSampling()
|
|
}
|
|
|
|
@MainActor
|
|
func setupNostrMessageHandling() {
|
|
nostrCoordinator.subscriptions.setupNostrMessageHandling()
|
|
}
|
|
|
|
@MainActor
|
|
func findNoiseKey(for nostrPubkey: String) -> Data? {
|
|
nostrCoordinator.inbound.findNoiseKey(for: nostrPubkey)
|
|
}
|
|
|
|
@MainActor
|
|
func sendFavoriteNotificationViaNostr(noisePublicKey: Data, isFavorite: Bool) {
|
|
nostrCoordinator.sendFavoriteNotificationViaNostr(noisePublicKey: noisePublicKey, isFavorite: isFavorite)
|
|
}
|
|
|
|
@MainActor
|
|
func nostrPubkeyForDisplayName(_ name: String) -> String? {
|
|
nostrCoordinator.nostrPubkeyForDisplayName(name)
|
|
}
|
|
|
|
@MainActor
|
|
func startGeohashDM(withPubkeyHex hex: String) {
|
|
nostrCoordinator.startGeohashDM(withPubkeyHex: hex)
|
|
}
|
|
|
|
@MainActor
|
|
func fullNostrHex(forSenderPeerID senderID: PeerID) -> String? {
|
|
nostrCoordinator.fullNostrHex(forSenderPeerID: senderID)
|
|
}
|
|
|
|
@MainActor
|
|
func geohashDisplayName(for convKey: PeerID) -> String {
|
|
nostrCoordinator.geohashDisplayName(for: convKey)
|
|
}
|
|
}
|