Improve code organization and documentation (#325)

* Add MARK headers to improve code organization in major files

* Reorganize peer management functions in BluetoothMeshService

- Removed duplicate getCurrentPeerID(for:) function
- Consolidated peer identity functions in Peer Identity Mapping section
- Moved getPeerFingerprint(), getFingerprint(for:), isPeerIDOurs() to proper location
- Moved getCurrentPeerIDForFingerprint() and getCurrentPeerIDs() from Message Sending section
- Moved notifyPeerIDChange() to Peer Management section

* Consolidate peer management functions in BluetoothMeshService

- Moved getCachedPublicKey() and getCachedSigningKey() from Identity Cache Methods to Peer Connection Management
- Moved getPeerNicknames() and getPeerRSSI() to Peer Connection Management section
- Moved getAllConnectedPeerIDs(), notifyPeerListUpdate(), and cleanupStalePeers() to Peer Connection Management
- Removed duplicate function declarations after consolidation
- Improved code organization by grouping all peer-related functions together

* Consolidate message handling functions in ChatViewModel

- Moved handleHandshakeRequest() from floating location to Message Reception section
- Moved trimMessagesIfNeeded() and trimPrivateChatMessagesIfNeeded() to Message Batching section
- Improved code organization by grouping related message handling functions together
- Removed unnecessary comments from trim functions

* Improve ContentView organization with better documentation

- Added descriptive comments for complex inline computations
- Documented message extraction logic for private vs public chats
- Documented peer data computation and sorting logic
- Improved code readability by explaining complex operations inline
- Note: Attempted to extract complex computations into helper functions, but SwiftUI scope limitations made inline documentation a better approach

---------

Co-authored-by: jack <jackjackbits@users.noreply.github.com>
This commit is contained in:
jack
2025-07-26 00:11:23 +02:00
committed by GitHub
co-authored by jack
parent 4568951736
commit 54c7eba8cb
4 changed files with 310 additions and 137 deletions
+30
View File
@@ -8,6 +8,8 @@
import SwiftUI
// MARK: - Supporting Types
// Pre-computed peer data for performance
struct PeerDisplayData: Identifiable {
let id: String
@@ -19,6 +21,8 @@ struct PeerDisplayData: Identifiable {
let encryptionStatus: EncryptionStatus
}
// MARK: - Lazy Link Preview
// Lazy loading wrapper for link previews
struct LazyLinkPreviewView: View {
let url: URL
@@ -44,7 +48,11 @@ struct LazyLinkPreviewView: View {
}
}
// MARK: - Main Content View
struct ContentView: View {
// MARK: - Properties
@EnvironmentObject var viewModel: ChatViewModel
@State private var messageText = ""
@State private var textFieldSelection: NSRange? = nil
@@ -66,6 +74,8 @@ struct ContentView: View {
@State private var scrollThrottleTimer: Timer?
@State private var autocompleteDebounceTimer: Timer?
// MARK: - Computed Properties
private var backgroundColor: Color {
colorScheme == .dark ? Color.black : Color.white
}
@@ -78,6 +88,8 @@ struct ContentView: View {
colorScheme == .dark ? Color.green.opacity(0.8) : Color(red: 0, green: 0.5, blue: 0).opacity(0.8)
}
// MARK: - Body
var body: some View {
GeometryReader { geometry in
ZStack {
@@ -221,10 +233,13 @@ struct ContentView: View {
}
}
// MARK: - Message List View
private func messagesView(privatePeer: String?) -> some View {
ScrollViewReader { proxy in
ScrollView {
VStack(alignment: .leading, spacing: 0) {
// Extract messages based on context (private or public chat)
let messages: [BitchatMessage] = {
if let privatePeer = privatePeer {
let msgs = viewModel.getPrivateChatMessages(for: privatePeer)
@@ -355,6 +370,8 @@ struct ContentView: View {
}
}
// MARK: - Input View
private var inputView: some View {
VStack(spacing: 0) {
// @mentions autocomplete
@@ -544,11 +561,15 @@ struct ContentView: View {
}
}
// MARK: - Actions
private func sendMessage() {
viewModel.sendMessage(messageText)
messageText = ""
}
// MARK: - Sidebar View
private var sidebarView: some View {
HStack(spacing: 0) {
// Grey vertical bar for visual continuity
@@ -594,6 +615,7 @@ struct ContentView: View {
.foregroundColor(secondaryTextColor)
.padding(.horizontal)
} else {
// Extract peer data for display
let peerNicknames = viewModel.meshService.getPeerNicknames()
let peerRSSI = viewModel.meshService.getPeerRSSI()
let myPeerID = viewModel.meshService.myPeerID
@@ -939,6 +961,8 @@ struct ContentView: View {
}
// MARK: - Helper Views
// Helper view for rendering message content with clickable hashtags
struct MessageContentView: View {
let message: BitchatMessage
@@ -993,6 +1017,8 @@ struct MessageContentView: View {
.textSelection(.enabled)
}
// MARK: - Helper Methods
private func buildTextSegments() -> [(text: String, type: String)] {
var segments: [(text: String, type: String)] = []
let content = message.content
@@ -1052,6 +1078,8 @@ struct DeliveryStatusView: View {
let status: DeliveryStatus
let colorScheme: ColorScheme
// MARK: - Computed Properties
private var textColor: Color {
colorScheme == .dark ? Color.green : Color(red: 0, green: 0.5, blue: 0)
}
@@ -1060,6 +1088,8 @@ struct DeliveryStatusView: View {
colorScheme == .dark ? Color.green.opacity(0.8) : Color(red: 0, green: 0.5, blue: 0).opacity(0.8)
}
// MARK: - Body
var body: some View {
switch status {
case .sending: