-
-
Notifications
You must be signed in to change notification settings - Fork 862
/
Copy pathRNMBXModule.swift
143 lines (129 loc) · 4.34 KB
/
RNMBXModule.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
import Foundation
import MapboxMaps
#if canImport(MapboxMobileEvents)
import MapboxMobileEvents
#endif
let DEFAULT_SOURCE_ID = "composite";
@objc(RNMBXModule)
public
class RNMBXModule : NSObject {
public static var accessToken : String? {
didSet {
#if RNMBX_11
if let token = accessToken {
MapboxOptions.accessToken = token
}
#else
if let token = accessToken {
ResourceOptionsManager.default.resourceOptions.accessToken = token
}
#endif
}
}
@objc
func constantsToExport() -> [AnyHashable: Any]! {
return [
"MapboxV10":true,
"StyleURL":
[
"Street": StyleURI.streets.rawValue,
"Outdoors": StyleURI.outdoors.rawValue,
"Light": StyleURI.light.rawValue,
"Dark": StyleURI.dark.rawValue,
"Satellite": StyleURI.satellite.rawValue,
"SatelliteStreet": StyleURI.satelliteStreets.rawValue,
],
"OfflinePackDownloadState":
[
"Inactive": RNMBXOfflineModule.State.inactive.rawValue,
"Active": RNMBXOfflineModule.State.active.rawValue,
"Complete": RNMBXOfflineModule.State.complete.rawValue,
"Unknown": RNMBXOfflineModule.State.unknown.rawValue,
],
"StyleSource":
["DefaultSourceID": DEFAULT_SOURCE_ID],
"LineJoin":
[
"Bevel": LineJoin.bevel.rawValue,
"Round": LineJoin.round.rawValue,
"Miter": LineJoin.miter.rawValue,
],
"LocationCallbackName":
["Update": RCT_MAPBOX_USER_LOCATION_UPDATE],
"CameraModes":
[
"Flight": CameraMode.flight.rawValue,
"Ease": CameraMode.ease.rawValue,
"Linear": CameraMode.linear.rawValue,
"Move": CameraMode.none.rawValue
],
"EventTypes":
[
"RegionIsChanging" : RNMBXEvent.EventType.regionIsChanging.rawValue,
"RegionDidChange" : RNMBXEvent.EventType.regionDidChange.rawValue,
"CameraChanged" : RNMBXEvent.EventType.cameraChanged.rawValue,
"MapIdle" : RNMBXEvent.EventType.mapIdle.rawValue,
"WillStartLoadingMap": RNMBXEvent.EventType.willStartLoadingMap.rawValue,
"DidFinishLoadingStyle": RNMBXEvent.EventType.didFinishLoadingStyle.rawValue,
"DidFinishLoadingMap": RNMBXEvent.EventType.didFinishLoadingMap.rawValue,
"MapLoadingError": RNMBXEvent.EventType.mapLoadingError.rawValue,
"DidFinishRenderingFrameFully": RNMBXEvent.EventType.didFinishRenderingFully.rawValue,
"DidFinishRenderingFrame": RNMBXEvent.EventType.didFinishRendering.rawValue,
],
"OfflineCallbackName":
[
"Error": RNMBXOfflineModule.Callbacks.error.rawValue,
"Progress": RNMBXOfflineModule.Callbacks.progress.rawValue
],
"TileServers":
["Mapbox": "mapbox"]
];
}
@objc
static func requiresMainQueueSetup() -> Bool {
return true
}
@objc func setAccessToken(
_ token: String,
resolver: RCTPromiseResolveBlock,
rejecter: RCTPromiseRejectBlock) {
RNMBXModule.accessToken = token
resolver(token)
}
@objc func addCustomHeader(_ headerName: String, forHeaderValue headerValue: String ) {
CustomHttpHeaders.shared.customHeaders[headerName] = headerValue
}
@objc func removeCustomHeader(_ headerName: String) {
CustomHttpHeaders.shared.customHeaders[headerName] = nil
}
@objc func setTelemetryEnabled(_ telemetryEnabled: Bool) {
UserDefaults.standard.set(telemetryEnabled, forKey: "MGLMapboxMetricsEnabled")
}
@objc func setWellKnownTileServer(_ tileServer: String) {
if tileServer != "mapbox" {
Logger.error("setWellKnownTileServer: \(tileServer) should be mapbox")
}
}
@objc func clearData(_ resolver: @escaping RCTPromiseResolveBlock,
rejecter: @escaping RCTPromiseRejectBlock) {
DispatchQueue.main.async {
#if RNMBX_11
MapboxMap.clearData { error in
if let error = error {
rejecter("error", error.localizedDescription, error)
} else {
resolver(nil)
}
}
#else
MapboxMap.clearData(for: ResourceOptions(accessToken: RNMBXModule.accessToken ?? "")) { error in
if let error = error {
rejecter("error", error.localizedDescription, error)
} else {
resolver(nil)
}
}
#endif
}
}
}