@pulseboard/react-native 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,84 +0,0 @@
1
- import Foundation
2
- import Network
3
- import CoreTelephony
4
- import SystemConfiguration
5
-
6
- @objc(PulseBoardNetwork)
7
- class PulseBoardNetwork: NSObject {
8
-
9
- @objc func getNetworkInfo(
10
- _ resolve: @escaping (Any?) -> Void,
11
- rejecter reject: @escaping (String?, String?, Error?) -> Void
12
- ) {
13
- let monitor = NWPathMonitor()
14
- let queue = DispatchQueue(label: "com.pulseboard.network")
15
-
16
- monitor.pathUpdateHandler = { path in
17
- monitor.cancel()
18
-
19
- let isConnected = path.status == .satisfied
20
- let isWifi = path.usesInterfaceType(.wifi)
21
- let isCellular = path.usesInterfaceType(.cellular)
22
-
23
- var carrier = "unknown"
24
- if #available(iOS 16.0, *) {
25
- carrier = "unknown"
26
- } else {
27
- let networkInfo = CTTelephonyNetworkInfo()
28
- if let providers = networkInfo.serviceSubscriberCellularProviders {
29
- carrier = providers.values.first?.carrierName ?? "unknown"
30
- }
31
- }
32
-
33
- let result: [String: Any] = [
34
- "type": isWifi ? "wifi" : isCellular ? "cellular" : isConnected ? "unknown" : "offline",
35
- "isConnected": isConnected,
36
- "isWifiEnabled": isWifi,
37
- "carrier": carrier,
38
- "ipAddress": self.getIPAddress() ?? "unknown",
39
- ]
40
-
41
- resolve(result)
42
- }
43
-
44
- monitor.start(queue: queue)
45
- }
46
-
47
- private func getIPAddress() -> String? {
48
- var address: String?
49
- var ifaddr: UnsafeMutablePointer<ifaddrs>?
50
-
51
- guard getifaddrs(&ifaddr) == 0 else { return nil }
52
- defer { freeifaddrs(ifaddr) }
53
-
54
- var ptr = ifaddr
55
- while ptr != nil {
56
- defer { ptr = ptr?.pointee.ifa_next }
57
- let interface = ptr?.pointee
58
- let addrFamily = interface?.ifa_addr.pointee.sa_family
59
-
60
- if addrFamily == UInt8(AF_INET) {
61
- let name = String(cString: (interface?.ifa_name)!)
62
- if name == "en0" {
63
- var hostname = [CChar](repeating: 0, count: Int(NI_MAXHOST))
64
- getnameinfo(
65
- interface?.ifa_addr,
66
- socklen_t((interface?.ifa_addr.pointee.sa_len)!),
67
- &hostname,
68
- socklen_t(hostname.count),
69
- nil,
70
- socklen_t(0),
71
- NI_NUMERICHOST
72
- )
73
- address = String(cString: hostname)
74
- }
75
- }
76
- }
77
-
78
- return address
79
- }
80
-
81
- @objc static func requiresMainQueueSetup() -> Bool {
82
- return false
83
- }
84
- }