Skip to content

Commit eca2b71

Browse files
committed
chore(rnmbxcodegen): add codegen to generate rn boilerplate
1 parent 54ae81d commit eca2b71

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+1535
-260
lines changed

android/src/main/java/com/rnmapbox/rnmbx/RNMBXPackage.kt

Lines changed: 42 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.rnmapbox.rnmbx.components.images.RNMBXImageManager
2121
import com.rnmapbox.rnmbx.components.images.RNMBXImageModule
2222
import com.rnmapbox.rnmbx.components.images.RNMBXImagesManager
2323
import com.rnmapbox.rnmbx.components.location.RNMBXCustomLocationProviderManager
24+
import com.rnmapbox.rnmbx.components.location.RNMBXLocationManager
2425
import com.rnmapbox.rnmbx.components.location.RNMBXNativeUserLocationManager
2526
import com.rnmapbox.rnmbx.components.mapview.NativeMapViewModule
2627
import com.rnmapbox.rnmbx.components.mapview.RNMBXMapViewManager
@@ -60,7 +61,7 @@ import com.rnmapbox.rnmbx.utils.ViewTagResolver
6061
class RNMBXPackage : TurboReactPackage() {
6162

6263
var viewTagResolver: ViewTagResolver? = null
63-
fun getViewTagResolver(context: ReactApplicationContext, module: String) : ViewTagResolver {
64+
fun getViewTagResolver(context: ReactApplicationContext, @Suppress("UNUSED_PARAMETER") module: String) : ViewTagResolver {
6465
val viewTagResolver = viewTagResolver
6566
if (viewTagResolver == null) {
6667
val result = ViewTagResolver(context)
@@ -71,7 +72,7 @@ class RNMBXPackage : TurboReactPackage() {
7172
}
7273

7374
var shapeAnimators: ShapeAnimatorManager? = null
74-
fun getShapeAnimators(module: String): ShapeAnimatorManager {
75+
fun getShapeAnimators(@Suppress("UNUSED_PARAMETER") module: String): ShapeAnimatorManager {
7576
val shapeAnimators = shapeAnimators
7677
if (shapeAnimators == null) {
7778
val result = ShapeAnimatorManager()
@@ -123,6 +124,7 @@ class RNMBXPackage : TurboReactPackage() {
123124
managers.add(RNMBXMapViewManager(reactApplicationContext, getViewTagResolver(reactApplicationContext, "RNMBXMapViewManager")))
124125
managers.add(RNMBXStyleImportManager(reactApplicationContext))
125126
managers.add(RNMBXModelsManager(reactApplicationContext))
127+
managers.add(RNMBXLocationManager(reactApplicationContext, getViewTagResolver(reactApplicationContext, "RNMBXLocationManager")))
126128

127129
// annotations
128130
managers.add(RNMBXMarkerViewManager(reactApplicationContext))
@@ -163,145 +165,64 @@ class RNMBXPackage : TurboReactPackage() {
163165
return managers
164166
}
165167

168+
fun reactModuleInfo(
169+
name: String,
170+
isTurboModule: Boolean = false
171+
): ReactModuleInfo {
172+
return ReactModuleInfo(
173+
/*name=*/name,
174+
/*className=*/name,
175+
/*canOverrideExistingModule=*/false,
176+
/*needsEagerInit=*/false,
177+
/*hasConstants=*/true,
178+
/*isCxxModule=*/false,
179+
/*isTurboModule=*/isTurboModule
180+
)
181+
}
182+
166183
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
167184
resetViewTagResolver()
168185
return ReactModuleInfoProvider {
169186
val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
170187
val isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
171-
moduleInfos[RNMBXModule.REACT_CLASS] = ReactModuleInfo(
172-
RNMBXModule.REACT_CLASS,
173-
RNMBXModule.REACT_CLASS,
174-
false, // canOverrideExistingModule
175-
false, // needsEagerInit
176-
true, // hasConstants
177-
false, // isCxxModule
178-
false // isTurboModule
179-
)
180-
moduleInfos[RNMBXLocationModule.REACT_CLASS] = ReactModuleInfo(
181-
RNMBXLocationModule.REACT_CLASS,
182-
RNMBXLocationModule.REACT_CLASS,
183-
false, // canOverrideExistingModule
184-
false, // needsEagerInit
185-
true, // hasConstants
186-
false, // isCxxModule
187-
false // isTurboModule
188-
)
189-
moduleInfos[RNMBXOfflineModule.REACT_CLASS] = ReactModuleInfo(
190-
RNMBXOfflineModule.REACT_CLASS,
191-
RNMBXOfflineModule.REACT_CLASS,
192-
false, // canOverrideExistingModule
193-
false, // needsEagerInit
194-
true, // hasConstants
195-
false, // isCxxModule
196-
false // isTurboModule
197-
)
198-
moduleInfos[RNMBXTileStoreModule.REACT_CLASS] = ReactModuleInfo(
199-
RNMBXTileStoreModule.REACT_CLASS,
200-
RNMBXTileStoreModule.REACT_CLASS,
201-
false, // canOverrideExistingModule
202-
false, // needsEagerInit
203-
true, // hasConstants
204-
false, // isCxxModule
205-
false // isTurboModule
206-
)
207-
moduleInfos[RNMBXOfflineModuleLegacy.REACT_CLASS] = ReactModuleInfo(
208-
RNMBXOfflineModuleLegacy.REACT_CLASS,
209-
RNMBXOfflineModuleLegacy.REACT_CLASS,
210-
false, // canOverrideExistingModule
211-
false, // needsEagerInit
212-
true, // hasConstants
213-
false, // isCxxModule
214-
false // isTurboModule
215-
)
216-
moduleInfos[RNMBXSnapshotModule.REACT_CLASS] = ReactModuleInfo(
217-
RNMBXSnapshotModule.REACT_CLASS,
218-
RNMBXSnapshotModule.REACT_CLASS,
219-
false, // canOverrideExistingModule
220-
false, // needsEagerInit
221-
true, // hasConstants
222-
false, // isCxxModule
223-
false // isTurboModule
224-
)
225-
moduleInfos[RNMBXLogging.REACT_CLASS] = ReactModuleInfo(
226-
RNMBXLogging.REACT_CLASS,
227-
RNMBXLogging.REACT_CLASS,
228-
false, // canOverrideExistingModule
229-
false, // needsEagerInit
230-
true, // hasConstants
231-
false, // isCxxModule
232-
false // isTurboModule
233-
)
234-
moduleInfos[NativeMapViewModule.NAME] = ReactModuleInfo(
188+
moduleInfos[RNMBXModule.REACT_CLASS] = reactModuleInfo(RNMBXModule.REACT_CLASS)
189+
moduleInfos[RNMBXLocationModule.REACT_CLASS] = reactModuleInfo(RNMBXLocationModule.REACT_CLASS)
190+
moduleInfos[RNMBXOfflineModule.REACT_CLASS] = reactModuleInfo(RNMBXOfflineModule.REACT_CLASS)
191+
moduleInfos[RNMBXTileStoreModule.REACT_CLASS] = reactModuleInfo(RNMBXTileStoreModule.REACT_CLASS)
192+
moduleInfos[RNMBXOfflineModuleLegacy.REACT_CLASS] = reactModuleInfo(RNMBXOfflineModuleLegacy.REACT_CLASS)
193+
moduleInfos[RNMBXSnapshotModule.REACT_CLASS] = reactModuleInfo(RNMBXSnapshotModule.REACT_CLASS)
194+
moduleInfos[RNMBXLogging.REACT_CLASS] = reactModuleInfo(RNMBXLogging.REACT_CLASS)
195+
moduleInfos[NativeMapViewModule.NAME] = reactModuleInfo(
235196
NativeMapViewModule.NAME,
236-
NativeMapViewModule.NAME,
237-
false, // canOverrideExistingModule
238-
false, // needsEagerInit
239-
false, // hasConstants
240-
false, // isCxxModule
241-
isTurboModule // isTurboModule
197+
isTurboModule=isTurboModule
242198
)
243-
moduleInfos[RNMBXViewportModule.NAME] = ReactModuleInfo(
244-
RNMBXViewportModule.NAME,
199+
moduleInfos[RNMBXViewportModule.NAME] = reactModuleInfo(
245200
RNMBXViewportModule.NAME,
246-
false, // canOverrideExistingModule
247-
false, // needsEagerInit
248-
false, // hasConstants
249-
false, // isCxxModule
250-
isTurboModule // isTurboModule
201+
isTurboModule= isTurboModule
251202
)
252-
moduleInfos[RNMBXCameraModule.NAME] = ReactModuleInfo(
203+
moduleInfos[RNMBXCameraModule.NAME] = reactModuleInfo(
253204
RNMBXCameraModule.NAME,
254-
RNMBXCameraModule.NAME,
255-
false, // canOverrideExistingModule
256-
false, // needsEagerInit
257-
false, // hasConstants
258-
false, // isCxxModule
259-
isTurboModule // isTurboModule
205+
isTurboModule= isTurboModule
260206
)
261-
moduleInfos[RNMBXShapeSourceModule.NAME] = ReactModuleInfo(
262-
RNMBXShapeSourceModule.NAME,
207+
moduleInfos[RNMBXShapeSourceModule.NAME] = reactModuleInfo(
263208
RNMBXShapeSourceModule.NAME,
264-
false, // canOverrideExistingModule
265-
false, // needsEagerInit
266-
false, // hasConstants
267-
false, // isCxxModule
268-
isTurboModule // isTurboModule
209+
isTurboModule= isTurboModule
269210
)
270-
moduleInfos[RNMBXImageModule.NAME] = ReactModuleInfo(
211+
moduleInfos[RNMBXImageModule.NAME] = reactModuleInfo(
271212
RNMBXImageModule.NAME,
272-
RNMBXImageModule.NAME,
273-
false, // canOverrideExistingModule
274-
false, // needsEagerInit
275-
false, // hasConstants
276-
false, // isCxxModule
277-
isTurboModule // isTurboModule
213+
isTurboModule= isTurboModule
278214
)
279-
moduleInfos[RNMBXPointAnnotationModule.NAME] = ReactModuleInfo(
280-
RNMBXPointAnnotationModule.NAME,
215+
moduleInfos[RNMBXPointAnnotationModule.NAME] = reactModuleInfo(
281216
RNMBXPointAnnotationModule.NAME,
282-
false, // canOverrideExistingModule
283-
false, // needsEagerInit
284-
false, // hasConstants
285-
false, // isCxxModule
286-
isTurboModule // isTurboModule
217+
isTurboModule= isTurboModule
287218
)
288-
moduleInfos[RNMBXMovePointShapeAnimatorModule.NAME] = ReactModuleInfo(
219+
moduleInfos[RNMBXMovePointShapeAnimatorModule.NAME] = reactModuleInfo(
289220
RNMBXMovePointShapeAnimatorModule.NAME,
290-
RNMBXMovePointShapeAnimatorModule.NAME,
291-
false,
292-
false,
293-
false,
294-
false,
295-
isTurboModule
221+
isTurboModule= isTurboModule
296222
)
297-
moduleInfos[RNMBXChangeLineOffsetsShapeAnimatorModule.NAME] = ReactModuleInfo(
298-
RNMBXChangeLineOffsetsShapeAnimatorModule.NAME,
223+
moduleInfos[RNMBXChangeLineOffsetsShapeAnimatorModule.NAME] = reactModuleInfo(
299224
RNMBXChangeLineOffsetsShapeAnimatorModule.NAME,
300-
false,
301-
false,
302-
false,
303-
false,
304-
isTurboModule
225+
isTurboModule= isTurboModule
305226
)
306227
moduleInfos
307228
}

android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXViewport.kt

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -37,28 +37,9 @@ import com.mapbox.maps.EdgeInsets
3737
import com.mapbox.maps.plugin.viewport.data.FollowPuckViewportStateBearing
3838
import com.mapbox.maps.plugin.viewport.data.FollowPuckViewportStateOptions
3939
import com.mapbox.maps.plugin.viewport.data.OverviewViewportStateOptions
40+
import com.rnmapbox.rnmbx.events.BaseEvent
4041
import com.rnmapbox.rnmbx.events.constants.EventKeys
4142

42-
class BaseEvent(
43-
private val surfaceId: Int,
44-
private val viewTag: Int,
45-
private val eventName: String,
46-
private val eventData: WritableMap,
47-
private val canCoalesce: Boolean = false
48-
): Event<BaseEvent>(surfaceId, viewTag) {
49-
override fun getEventName(): String {
50-
return eventName
51-
}
52-
53-
override fun canCoalesce(): Boolean {
54-
return canCoalesce
55-
}
56-
57-
override fun getEventData(): WritableMap? {
58-
return eventData
59-
}
60-
}
61-
6243
class RNMBXViewport(private val mContext: Context, private val mManager: RNMBXViewportManager) :
6344
AbstractMapFeature(
6445
mContext
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package com.rnmapbox.rnmbx.components.location
2+
3+
import com.rnmapbox.rnmbx.v11compat.Cancelable
4+
import com.mapbox.maps.MapView
5+
import com.mapbox.maps.plugin.locationcomponent.DefaultLocationProvider
6+
import com.mapbox.maps.plugin.locationcomponent.LocationProvider
7+
import com.mapbox.maps.plugin.locationcomponent.location
8+
import com.rnmapbox.rnmbx.components.mapview.RNMBXMapView
9+
import java.lang.ref.WeakReference
10+
11+
typealias CallbackType = (old: LocationProvider, new: LocationProvider) -> Unit;
12+
13+
14+
class CallbackList<T> {
15+
class Entry<T>(val callback: T, val list: WeakReference<CallbackList<T>>): Cancelable {
16+
17+
override fun cancel() {
18+
list.get()?.remove(this)
19+
}
20+
}
21+
private val callbacks = mutableListOf<Entry<T>>()
22+
23+
fun add(callback: T): Cancelable {
24+
val result = Entry<T>(callback, WeakReference(this));
25+
callbacks.add(result)
26+
return result;
27+
}
28+
29+
internal fun remove(entry: Entry<T>) {
30+
callbacks.remove(entry)
31+
}
32+
33+
fun forEach(callback: (it: T) -> Unit) {
34+
callbacks.map { it.callback }.forEach(callback)
35+
}
36+
}
37+
38+
39+
class LocationProviderManager(val mapView: RNMBXMapView) {
40+
var callbacks = CallbackList<CallbackType>()
41+
42+
fun getLocationProvider(mapView: MapView): LocationProvider {
43+
val location = mapView.location
44+
val result = location.getLocationProvider()
45+
46+
if (result != null) {
47+
return result
48+
} else {
49+
val result = DefaultLocationProvider(mapView.context)
50+
location.setLocationProvider(result)
51+
return result
52+
}
53+
}
54+
55+
fun update(provider: LocationProvider) {
56+
mapView.withMapView { mapView: MapView ->
57+
val location = mapView.location
58+
val oldProvider = location.getLocationProvider()
59+
location.setLocationProvider(provider)
60+
61+
if (oldProvider != null) {
62+
apply(oldProvider, provider)
63+
}
64+
}
65+
}
66+
67+
fun onChange(callback: CallbackType): Cancelable =
68+
callbacks.add(callback)
69+
70+
fun apply(old: LocationProvider, new: LocationProvider) {
71+
callbacks.forEach { it(old, new) }
72+
}
73+
}

0 commit comments

Comments
 (0)