@maplibre/maplibre-react-native 11.0.0-alpha.18 → 11.0.0-alpha.19

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.
Files changed (21) hide show
  1. package/android/src/main/java/org/maplibre/reactnative/modules/MLRNLocationModule.kt +5 -0
  2. package/ios/modules/location/MLRNLocationManager.h +2 -2
  3. package/ios/modules/location/MLRNLocationManager.m +38 -25
  4. package/ios/modules/location/MLRNLocationModule.mm +11 -0
  5. package/lib/commonjs/modules/location/LocationManager.js +22 -4
  6. package/lib/commonjs/modules/location/LocationManager.js.map +1 -1
  7. package/lib/commonjs/modules/location/NativeLocationModule.js.map +1 -1
  8. package/lib/module/modules/location/LocationManager.js +23 -5
  9. package/lib/module/modules/location/LocationManager.js.map +1 -1
  10. package/lib/module/modules/location/NativeLocationModule.js.map +1 -1
  11. package/lib/typescript/commonjs/src/modules/location/LocationManager.d.ts +10 -1
  12. package/lib/typescript/commonjs/src/modules/location/LocationManager.d.ts.map +1 -1
  13. package/lib/typescript/commonjs/src/modules/location/NativeLocationModule.d.ts +1 -0
  14. package/lib/typescript/commonjs/src/modules/location/NativeLocationModule.d.ts.map +1 -1
  15. package/lib/typescript/module/src/modules/location/LocationManager.d.ts +10 -1
  16. package/lib/typescript/module/src/modules/location/LocationManager.d.ts.map +1 -1
  17. package/lib/typescript/module/src/modules/location/NativeLocationModule.d.ts +1 -0
  18. package/lib/typescript/module/src/modules/location/NativeLocationModule.d.ts.map +1 -1
  19. package/package.json +1 -1
  20. package/src/modules/location/LocationManager.ts +23 -4
  21. package/src/modules/location/NativeLocationModule.ts +2 -0
@@ -101,6 +101,11 @@ class MLRNLocationModule(reactContext: ReactApplicationContext) :
101
101
  })
102
102
  }
103
103
 
104
+ override fun requestPermissions(promise: Promise) {
105
+ // On Android, permissions are handled at the JS level using PermissionsAndroid
106
+ promise.resolve(null)
107
+ }
108
+
104
109
  @RequiresPermission(allOf = [Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION])
105
110
  private fun startLocationManager() {
106
111
  locationManager.addLocationListener(onUserLocationChangeCallback)
@@ -2,6 +2,7 @@
2
2
  #import "MLRNLocationManagerDelegate.h"
3
3
 
4
4
  typedef void (^MLRNLocationBlock)(MLRNLocation *location);
5
+ typedef void (^MLRNPermissionsBlock)(BOOL granted);
5
6
 
6
7
  @interface MLRNLocationManager : NSObject
7
8
 
@@ -14,7 +15,6 @@ typedef void (^MLRNLocationBlock)(MLRNLocation *location);
14
15
  - (void)setMinDisplacement:(CLLocationDistance)minDisplacement;
15
16
  - (BOOL)isEnabled;
16
17
  - (MLRNLocation *)getLastKnownLocation;
17
- - (void)addListener:(MLRNLocationBlock)listener;
18
- - (void)removeListener:(MLRNLocationBlock)listener;
18
+ - (void)requestPermissions:(MLRNPermissionsBlock)completion;
19
19
 
20
20
  @end
@@ -9,8 +9,8 @@
9
9
  CLLocation *lastKnownLocation;
10
10
  CLHeading *lastKnownHeading;
11
11
  CLLocationDistance displacement;
12
- NSMutableArray<MLRNLocationBlock> *listeners;
13
12
  BOOL isListening;
13
+ MLRNPermissionsBlock permissionsCompletionBlock;
14
14
  }
15
15
 
16
16
  + (id)sharedInstance {
@@ -25,7 +25,6 @@
25
25
  - (instancetype)init {
26
26
  if (self = [super init]) {
27
27
  [self _setupLocationManager];
28
- listeners = [[NSMutableArray alloc] init];
29
28
  displacement = 0.0;
30
29
  }
31
30
  return self;
@@ -49,6 +48,32 @@
49
48
  });
50
49
  }
51
50
 
51
+ - (void)requestPermissions:(MLRNPermissionsBlock)completion {
52
+ dispatch_async(dispatch_get_main_queue(), ^{
53
+ CLAuthorizationStatus status = self->locationManager.authorizationStatus;
54
+
55
+ if (status == kCLAuthorizationStatusAuthorizedWhenInUse ||
56
+ status == kCLAuthorizationStatusAuthorizedAlways) {
57
+ if (completion) {
58
+ completion(YES);
59
+ }
60
+
61
+ return;
62
+ }
63
+
64
+ if (status == kCLAuthorizationStatusDenied || status == kCLAuthorizationStatusRestricted) {
65
+ if (completion) {
66
+ completion(NO);
67
+ }
68
+
69
+ return;
70
+ }
71
+
72
+ self->permissionsCompletionBlock = completion;
73
+ [self->locationManager requestWhenInUseAuthorization];
74
+ });
75
+ }
76
+
52
77
  - (void)setMinDisplacement:(CLLocationDistance)minDisplacement {
53
78
  displacement = minDisplacement;
54
79
 
@@ -82,22 +107,6 @@
82
107
  return location;
83
108
  }
84
109
 
85
- - (void)addListener:(MLRNLocationBlock)listener {
86
- if (![listeners containsObject:listener]) {
87
- [listeners addObject:listener];
88
- }
89
- }
90
-
91
- - (void)removeListener:(MLRNLocationBlock)listener {
92
- NSUInteger indexOf = [listeners indexOfObject:listener];
93
-
94
- if (indexOf == NSNotFound) {
95
- return;
96
- }
97
-
98
- [listeners removeObjectAtIndex:indexOf];
99
- }
100
-
101
110
  - (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)heading {
102
111
  lastKnownHeading = heading;
103
112
 
@@ -114,6 +123,17 @@
114
123
  [self _updateDelegate];
115
124
  }
116
125
 
126
+ - (void)locationManagerDidChangeAuthorization:(CLLocationManager *)manager {
127
+ if (permissionsCompletionBlock) {
128
+ CLAuthorizationStatus status = manager.authorizationStatus;
129
+
130
+ BOOL granted = (status == kCLAuthorizationStatusAuthorizedWhenInUse ||
131
+ status == kCLAuthorizationStatusAuthorizedAlways);
132
+ permissionsCompletionBlock(granted);
133
+ permissionsCompletionBlock = nil;
134
+ }
135
+ }
136
+
117
137
  - (void)_setupLocationManager {
118
138
  __weak MLRNLocationManager *weakSelf = self;
119
139
 
@@ -130,13 +150,6 @@
130
150
 
131
151
  MLRNLocation *userLocation = [self _convertToMLRNLocation:lastKnownLocation];
132
152
 
133
- if (listeners.count > 0) {
134
- for (int i = 0; i < listeners.count; i++) {
135
- MLRNLocationBlock listener = listeners[i];
136
- listener(userLocation);
137
- }
138
- }
139
-
140
153
  [_delegate locationManager:self didUpdateLocation:userLocation];
141
154
  }
142
155
 
@@ -48,6 +48,17 @@
48
48
  resolve(lastKnownLocation);
49
49
  }
50
50
 
51
+ - (void)requestPermissions:(nonnull RCTPromiseResolveBlock)resolve
52
+ reject:(nonnull RCTPromiseRejectBlock)reject {
53
+ [locationManager requestPermissions:^(BOOL granted) {
54
+ if (granted) {
55
+ resolve(nil);
56
+ } else {
57
+ reject(@"requestPermissions", @"Request denied", nil);
58
+ }
59
+ }];
60
+ }
61
+
51
62
  - (void)locationManager:(MLRNLocationManager *)locationManager
52
63
  didUpdateLocation:(MLRNLocation *)location {
53
64
  [self emitOnUpdate:[location toJSON]];
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.LocationManager = void 0;
7
7
  var _reactNative = require("react-native");
8
8
  var _NativeLocationModule = _interopRequireDefault(require("./NativeLocationModule.js"));
9
- var _index = require("../../utils/index.js");
10
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
10
  class LocationManager {
12
11
  listeners = [];
@@ -68,12 +67,31 @@ class LocationManager {
68
67
  this.currentPosition = location;
69
68
  this.listeners.forEach(listener => listener(location));
70
69
  }
71
- async requestAndroidPermissions() {
72
- if ((0, _index.isAndroid)()) {
70
+
71
+ /**
72
+ * Request location permissions
73
+ *
74
+ * Requests the following:
75
+ * - Android: `ACCESS_FINE_LOCATION`, `ACCESS_COARSE_LOCATION`
76
+ * - iOS: `requestWhenInUseAuthorization`
77
+ *
78
+ * @returns Promise resolves to true if permissions were granted, false otherwise
79
+ */
80
+ async requestPermissions() {
81
+ if (_reactNative.Platform.OS === "android") {
73
82
  const res = await _reactNative.PermissionsAndroid.requestMultiple([_reactNative.PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, _reactNative.PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION]);
74
83
  return Object.values(res).every(permission => permission === _reactNative.PermissionsAndroid.RESULTS.GRANTED);
75
84
  }
76
- throw new Error("This method should only be called on Android");
85
+ if (_reactNative.Platform.OS === "ios") {
86
+ try {
87
+ await _NativeLocationModule.default.requestPermissions();
88
+ return true;
89
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
90
+ } catch (_error) {
91
+ return false;
92
+ }
93
+ }
94
+ return false;
77
95
  }
78
96
  }
79
97
  const locationManager = exports.LocationManager = new LocationManager();
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_NativeLocationModule","_interopRequireDefault","_index","e","__esModule","default","LocationManager","listeners","currentPosition","undefined","isListening","subscription","constructor","handleUpdate","bind","getCurrentPosition","NativeLocationModule","error","console","log","addListener","newListener","start","includes","push","removeListener","oldListener","filter","listener","length","stop","removeAllListeners","onUpdate","remove","setMinDisplacement","minDisplacement","location","forEach","requestAndroidPermissions","isAndroid","res","PermissionsAndroid","requestMultiple","PERMISSIONS","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","Object","values","every","permission","RESULTS","GRANTED","Error","locationManager","exports"],"sourceRoot":"../../../../src","sources":["modules/location/LocationManager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_NativeLocationModule","_interopRequireDefault","e","__esModule","default","LocationManager","listeners","currentPosition","undefined","isListening","subscription","constructor","handleUpdate","bind","getCurrentPosition","NativeLocationModule","error","console","log","addListener","newListener","start","includes","push","removeListener","oldListener","filter","listener","length","stop","removeAllListeners","onUpdate","remove","setMinDisplacement","minDisplacement","location","forEach","requestPermissions","Platform","OS","res","PermissionsAndroid","requestMultiple","PERMISSIONS","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","Object","values","every","permission","RESULTS","GRANTED","_error","locationManager","exports"],"sourceRoot":"../../../../src","sources":["modules/location/LocationManager.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../../src","sources":["modules/location/NativeLocationModule.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GA6BpCC,gCAAmB,CAACC,YAAY,CAAO,oBAAoB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../../src","sources":["modules/location/NativeLocationModule.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GA+BpCC,gCAAmB,CAACC,YAAY,CAAO,oBAAoB,CAAC","ignoreList":[]}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import { PermissionsAndroid } from "react-native";
3
+ import { PermissionsAndroid, Platform } from "react-native";
4
4
  import NativeLocationModule from "./NativeLocationModule.js";
5
- import { isAndroid } from "../../utils/index.js";
6
5
  class LocationManager {
7
6
  listeners = [];
8
7
  currentPosition = undefined;
@@ -63,12 +62,31 @@ class LocationManager {
63
62
  this.currentPosition = location;
64
63
  this.listeners.forEach(listener => listener(location));
65
64
  }
66
- async requestAndroidPermissions() {
67
- if (isAndroid()) {
65
+
66
+ /**
67
+ * Request location permissions
68
+ *
69
+ * Requests the following:
70
+ * - Android: `ACCESS_FINE_LOCATION`, `ACCESS_COARSE_LOCATION`
71
+ * - iOS: `requestWhenInUseAuthorization`
72
+ *
73
+ * @returns Promise resolves to true if permissions were granted, false otherwise
74
+ */
75
+ async requestPermissions() {
76
+ if (Platform.OS === "android") {
68
77
  const res = await PermissionsAndroid.requestMultiple([PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION]);
69
78
  return Object.values(res).every(permission => permission === PermissionsAndroid.RESULTS.GRANTED);
70
79
  }
71
- throw new Error("This method should only be called on Android");
80
+ if (Platform.OS === "ios") {
81
+ try {
82
+ await NativeLocationModule.requestPermissions();
83
+ return true;
84
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
85
+ } catch (_error) {
86
+ return false;
87
+ }
88
+ }
89
+ return false;
72
90
  }
73
91
  }
74
92
  const locationManager = new LocationManager();
@@ -1 +1 @@
1
- {"version":3,"names":["PermissionsAndroid","NativeLocationModule","isAndroid","LocationManager","listeners","currentPosition","undefined","isListening","subscription","constructor","handleUpdate","bind","getCurrentPosition","error","console","log","addListener","newListener","start","includes","push","removeListener","oldListener","filter","listener","length","stop","removeAllListeners","onUpdate","remove","setMinDisplacement","minDisplacement","location","forEach","requestAndroidPermissions","res","requestMultiple","PERMISSIONS","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","Object","values","every","permission","RESULTS","GRANTED","Error","locationManager"],"sourceRoot":"../../../../src","sources":["modules/location/LocationManager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["PermissionsAndroid","Platform","NativeLocationModule","LocationManager","listeners","currentPosition","undefined","isListening","subscription","constructor","handleUpdate","bind","getCurrentPosition","error","console","log","addListener","newListener","start","includes","push","removeListener","oldListener","filter","listener","length","stop","removeAllListeners","onUpdate","remove","setMinDisplacement","minDisplacement","location","forEach","requestPermissions","OS","res","requestMultiple","PERMISSIONS","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","Object","values","every","permission","RESULTS","GRANTED","_error","locationManager"],"sourceRoot":"../../../../src","sources":["modules/location/LocationManager.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../../src","sources":["modules/location/NativeLocationModule.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AA6BlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,oBAAoB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../../src","sources":["modules/location/NativeLocationModule.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AA+BlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,oBAAoB,CAAC","ignoreList":[]}
@@ -46,7 +46,16 @@ declare class LocationManager {
46
46
  stop(): void;
47
47
  setMinDisplacement(minDisplacement: number): void;
48
48
  private handleUpdate;
49
- requestAndroidPermissions(): Promise<boolean>;
49
+ /**
50
+ * Request location permissions
51
+ *
52
+ * Requests the following:
53
+ * - Android: `ACCESS_FINE_LOCATION`, `ACCESS_COARSE_LOCATION`
54
+ * - iOS: `requestWhenInUseAuthorization`
55
+ *
56
+ * @returns Promise resolves to true if permissions were granted, false otherwise
57
+ */
58
+ requestPermissions(): Promise<boolean>;
50
59
  }
51
60
  declare const locationManager: LocationManager;
52
61
  export { locationManager as LocationManager };
@@ -1 +1 @@
1
- {"version":3,"file":"LocationManager.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/location/LocationManager.ts"],"names":[],"mappings":"AASA,UAAU,sBAAsB;IAC9B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;OAEG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,sBAAsB,CAAC;IAE/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,cAAM,eAAe;IACnB,OAAO,CAAC,SAAS,CAAmD;IACpE,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,YAAY,CAA4C;;IAM1D,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAcpE,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAcvE,cAAc,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAU1E,kBAAkB,IAAI,IAAI;IAM1B,KAAK,IAAI,IAAI;IAUb,IAAI,IAAI,IAAI;IAUZ,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI;IAIjD,OAAO,CAAC,YAAY;IAMd,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC;CAcpD;AAED,QAAA,MAAM,eAAe,iBAAwB,CAAC;AAC9C,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"LocationManager.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/location/LocationManager.ts"],"names":[],"mappings":"AASA,UAAU,sBAAsB;IAC9B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;OAEG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,sBAAsB,CAAC;IAE/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,cAAM,eAAe;IACnB,OAAO,CAAC,SAAS,CAAmD;IACpE,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,YAAY,CAA4C;;IAM1D,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAcpE,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAcvE,cAAc,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAU1E,kBAAkB,IAAI,IAAI;IAM1B,KAAK,IAAI,IAAI;IAUb,IAAI,IAAI,IAAI;IAUZ,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI;IAIjD,OAAO,CAAC,YAAY;IAMpB;;;;;;;;OAQG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;CAwB7C;AAED,QAAA,MAAM,eAAe,iBAAwB,CAAC;AAC9C,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,CAAC"}
@@ -17,6 +17,7 @@ export interface Spec extends TurboModule {
17
17
  stop(): void;
18
18
  getCurrentPosition(): Promise<NativeGeolocationPosition>;
19
19
  setMinDisplacement(minDisplacement: number): void;
20
+ requestPermissions(): Promise<void>;
20
21
  readonly onUpdate: CodegenTypes.EventEmitter<NativeGeolocationPosition>;
21
22
  }
22
23
  declare const _default: Spec;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeLocationModule.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/location/NativeLocationModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG9D,KAAK,4BAA4B,GAAG;IAClC,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IACrC,gBAAgB,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IAC7C,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,MAAM,EAAE,4BAA4B,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,KAAK,IAAI,IAAI,CAAC;IAEd,IAAI,IAAI,IAAI,CAAC;IAEb,kBAAkB,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAEzD,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAElD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;CACzE;;AAED,wBAA4E"}
1
+ {"version":3,"file":"NativeLocationModule.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/location/NativeLocationModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG9D,KAAK,4BAA4B,GAAG;IAClC,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IACrC,gBAAgB,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IAC7C,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,MAAM,EAAE,4BAA4B,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,KAAK,IAAI,IAAI,CAAC;IAEd,IAAI,IAAI,IAAI,CAAC;IAEb,kBAAkB,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAEzD,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAElD,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;CACzE;;AAED,wBAA4E"}
@@ -46,7 +46,16 @@ declare class LocationManager {
46
46
  stop(): void;
47
47
  setMinDisplacement(minDisplacement: number): void;
48
48
  private handleUpdate;
49
- requestAndroidPermissions(): Promise<boolean>;
49
+ /**
50
+ * Request location permissions
51
+ *
52
+ * Requests the following:
53
+ * - Android: `ACCESS_FINE_LOCATION`, `ACCESS_COARSE_LOCATION`
54
+ * - iOS: `requestWhenInUseAuthorization`
55
+ *
56
+ * @returns Promise resolves to true if permissions were granted, false otherwise
57
+ */
58
+ requestPermissions(): Promise<boolean>;
50
59
  }
51
60
  declare const locationManager: LocationManager;
52
61
  export { locationManager as LocationManager };
@@ -1 +1 @@
1
- {"version":3,"file":"LocationManager.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/location/LocationManager.ts"],"names":[],"mappings":"AASA,UAAU,sBAAsB;IAC9B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;OAEG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,sBAAsB,CAAC;IAE/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,cAAM,eAAe;IACnB,OAAO,CAAC,SAAS,CAAmD;IACpE,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,YAAY,CAA4C;;IAM1D,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAcpE,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAcvE,cAAc,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAU1E,kBAAkB,IAAI,IAAI;IAM1B,KAAK,IAAI,IAAI;IAUb,IAAI,IAAI,IAAI;IAUZ,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI;IAIjD,OAAO,CAAC,YAAY;IAMd,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC;CAcpD;AAED,QAAA,MAAM,eAAe,iBAAwB,CAAC;AAC9C,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"LocationManager.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/location/LocationManager.ts"],"names":[],"mappings":"AASA,UAAU,sBAAsB;IAC9B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;OAEG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,sBAAsB,CAAC;IAE/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,cAAM,eAAe;IACnB,OAAO,CAAC,SAAS,CAAmD;IACpE,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,YAAY,CAA4C;;IAM1D,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAcpE,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAcvE,cAAc,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAU1E,kBAAkB,IAAI,IAAI;IAM1B,KAAK,IAAI,IAAI;IAUb,IAAI,IAAI,IAAI;IAUZ,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI;IAIjD,OAAO,CAAC,YAAY;IAMpB;;;;;;;;OAQG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;CAwB7C;AAED,QAAA,MAAM,eAAe,iBAAwB,CAAC;AAC9C,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,CAAC"}
@@ -17,6 +17,7 @@ export interface Spec extends TurboModule {
17
17
  stop(): void;
18
18
  getCurrentPosition(): Promise<NativeGeolocationPosition>;
19
19
  setMinDisplacement(minDisplacement: number): void;
20
+ requestPermissions(): Promise<void>;
20
21
  readonly onUpdate: CodegenTypes.EventEmitter<NativeGeolocationPosition>;
21
22
  }
22
23
  declare const _default: Spec;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeLocationModule.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/location/NativeLocationModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG9D,KAAK,4BAA4B,GAAG;IAClC,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IACrC,gBAAgB,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IAC7C,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,MAAM,EAAE,4BAA4B,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,KAAK,IAAI,IAAI,CAAC;IAEd,IAAI,IAAI,IAAI,CAAC;IAEb,kBAAkB,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAEzD,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAElD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;CACzE;;AAED,wBAA4E"}
1
+ {"version":3,"file":"NativeLocationModule.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/location/NativeLocationModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG9D,KAAK,4BAA4B,GAAG;IAClC,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IACrC,gBAAgB,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IAC7C,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,MAAM,EAAE,4BAA4B,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,KAAK,IAAI,IAAI,CAAC;IAEd,IAAI,IAAI,IAAI,CAAC;IAEb,kBAAkB,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAEzD,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAElD,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;CACzE;;AAED,wBAA4E"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@maplibre/maplibre-react-native",
3
3
  "description": "React Native library for creating maps with MapLibre Native for Android & iOS",
4
- "version": "11.0.0-alpha.18",
4
+ "version": "11.0.0-alpha.19",
5
5
  "publishConfig": {
6
6
  "access": "public",
7
7
  "provenance": true
@@ -2,10 +2,10 @@ import {
2
2
  type EventSubscription,
3
3
  type Permission,
4
4
  PermissionsAndroid,
5
+ Platform,
5
6
  } from "react-native";
6
7
 
7
8
  import NativeLocationModule from "./NativeLocationModule";
8
- import { isAndroid } from "../../utils";
9
9
 
10
10
  interface GeolocationCoordinates {
11
11
  /**
@@ -135,8 +135,17 @@ class LocationManager {
135
135
  this.listeners.forEach((listener) => listener(location));
136
136
  }
137
137
 
138
- async requestAndroidPermissions(): Promise<boolean> {
139
- if (isAndroid()) {
138
+ /**
139
+ * Request location permissions
140
+ *
141
+ * Requests the following:
142
+ * - Android: `ACCESS_FINE_LOCATION`, `ACCESS_COARSE_LOCATION`
143
+ * - iOS: `requestWhenInUseAuthorization`
144
+ *
145
+ * @returns Promise resolves to true if permissions were granted, false otherwise
146
+ */
147
+ async requestPermissions(): Promise<boolean> {
148
+ if (Platform.OS === "android") {
140
149
  const res = await PermissionsAndroid.requestMultiple([
141
150
  PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION as Permission,
142
151
  PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION as Permission,
@@ -147,7 +156,17 @@ class LocationManager {
147
156
  );
148
157
  }
149
158
 
150
- throw new Error("This method should only be called on Android");
159
+ if (Platform.OS === "ios") {
160
+ try {
161
+ await NativeLocationModule.requestPermissions();
162
+ return true;
163
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
164
+ } catch (_error) {
165
+ return false;
166
+ }
167
+ }
168
+
169
+ return false;
151
170
  }
152
171
  }
153
172
 
@@ -25,6 +25,8 @@ export interface Spec extends TurboModule {
25
25
 
26
26
  setMinDisplacement(minDisplacement: number): void;
27
27
 
28
+ requestPermissions(): Promise<void>;
29
+
28
30
  readonly onUpdate: CodegenTypes.EventEmitter<NativeGeolocationPosition>;
29
31
  }
30
32