mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 12:45:20 +00:00
Add Bluetooth status alerts (#385)
- Add alert UI to notify users when Bluetooth is off/unauthorized - Monitor Bluetooth state changes in BluetoothMeshService - Show appropriate messages for different Bluetooth states - Add Settings button to open system settings on iOS - Check initial Bluetooth state on app startup Co-authored-by: jack <jackjackbits@users.noreply.github.com>
This commit is contained in:
@@ -82,6 +82,7 @@ import SwiftUI
|
||||
import Combine
|
||||
import CryptoKit
|
||||
import CommonCrypto
|
||||
import CoreBluetooth
|
||||
#if os(iOS)
|
||||
import UIKit
|
||||
#endif
|
||||
@@ -155,6 +156,11 @@ class ChatViewModel: ObservableObject, BitchatDelegate {
|
||||
@Published var verifiedFingerprints: Set<String> = [] // Set of verified fingerprints
|
||||
@Published var showingFingerprintFor: String? = nil // Currently showing fingerprint sheet for peer
|
||||
|
||||
// Bluetooth state management
|
||||
@Published var showBluetoothAlert = false
|
||||
@Published var bluetoothAlertMessage = ""
|
||||
@Published var bluetoothState: CBManagerState = .unknown
|
||||
|
||||
// Messages are naturally ephemeral - no persistent storage
|
||||
|
||||
// MARK: - Message Delivery Tracking
|
||||
@@ -819,6 +825,36 @@ class ChatViewModel: ObservableObject, BitchatDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Bluetooth State Management
|
||||
|
||||
/// Updates the Bluetooth state and shows appropriate alerts
|
||||
/// - Parameter state: The current Bluetooth manager state
|
||||
@MainActor
|
||||
func updateBluetoothState(_ state: CBManagerState) {
|
||||
bluetoothState = state
|
||||
|
||||
switch state {
|
||||
case .poweredOff:
|
||||
bluetoothAlertMessage = "Bluetooth is turned off. Please turn on Bluetooth in Settings to use BitChat."
|
||||
showBluetoothAlert = true
|
||||
case .unauthorized:
|
||||
bluetoothAlertMessage = "BitChat needs Bluetooth permission to connect with nearby devices. Please enable Bluetooth access in Settings."
|
||||
showBluetoothAlert = true
|
||||
case .unsupported:
|
||||
bluetoothAlertMessage = "This device does not support Bluetooth. BitChat requires Bluetooth to function."
|
||||
showBluetoothAlert = true
|
||||
case .poweredOn:
|
||||
// Hide alert when Bluetooth is powered on
|
||||
showBluetoothAlert = false
|
||||
bluetoothAlertMessage = ""
|
||||
case .unknown, .resetting:
|
||||
// Don't show alerts for transient states
|
||||
showBluetoothAlert = false
|
||||
@unknown default:
|
||||
showBluetoothAlert = false
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Private Chat Management
|
||||
|
||||
/// Initiates a private chat session with a peer.
|
||||
|
||||
Reference in New Issue
Block a user