@situm/react-native 3.0.0-beta.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.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +656 -0
  3. package/ReactNativeSitumPlugin.podspec +22 -0
  4. package/SECURITY-POLICY.md +9 -0
  5. package/android/.gradle/5.6.4/fileChanges/last-build.bin +0 -0
  6. package/android/.gradle/5.6.4/fileHashes/fileHashes.lock +0 -0
  7. package/android/.gradle/5.6.4/gc.properties +0 -0
  8. package/android/.idea/.name +1 -0
  9. package/android/.idea/codeStyles/Project.xml +116 -0
  10. package/android/.idea/encodings.xml +6 -0
  11. package/android/.idea/misc.xml +31 -0
  12. package/android/.idea/sonarlint/issuestore/index.pb +15 -0
  13. package/android/.project +34 -0
  14. package/android/build.gradle +45 -0
  15. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  16. package/android/gradle/wrapper/gradle-wrapper.properties +6 -0
  17. package/android/gradlew +172 -0
  18. package/android/gradlew.bat +84 -0
  19. package/android/src/main/AndroidManifest.xml +6 -0
  20. package/android/src/main/java/com/situm/plugin/PluginHelper.java +989 -0
  21. package/android/src/main/java/com/situm/plugin/SitumMapper.java +1206 -0
  22. package/android/src/main/java/com/situm/plugin/SitumPackage.java +29 -0
  23. package/android/src/main/java/com/situm/plugin/SitumPlugin.java +84 -0
  24. package/android/src/main/java/com/situm/plugin/SitumPluginImpl.java +344 -0
  25. package/android/src/main/java/com/situm/plugin/utils/ReactNativeJson.java +122 -0
  26. package/android/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  27. package/android/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  28. package/android/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  29. package/android/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  30. package/android/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  31. package/android/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  32. package/android/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  33. package/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  34. package/android/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  35. package/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  36. package/android/src/main/res/values/strings.xml +3 -0
  37. package/android/src/main/res/values/styles.xml +9 -0
  38. package/ios/Constants.h +14 -0
  39. package/ios/Constants.m +14 -0
  40. package/ios/RNSitumReactNativePlugin.xcodeproj/project.pbxproj +272 -0
  41. package/ios/SitumLocationWrapper.h +112 -0
  42. package/ios/SitumLocationWrapper.m +1132 -0
  43. package/ios/SitumPlugin.h +15 -0
  44. package/ios/SitumPlugin.m +911 -0
  45. package/lib/commonjs/index.js +25 -0
  46. package/lib/commonjs/index.js.map +1 -0
  47. package/lib/commonjs/sdk/index.js +399 -0
  48. package/lib/commonjs/sdk/index.js.map +1 -0
  49. package/lib/commonjs/sdk/nativeInterface.js +20 -0
  50. package/lib/commonjs/sdk/nativeInterface.js.map +1 -0
  51. package/lib/commonjs/sdk/types/index.d.js +6 -0
  52. package/lib/commonjs/sdk/types/index.d.js.map +1 -0
  53. package/lib/commonjs/sdk/utils.js +22 -0
  54. package/lib/commonjs/sdk/utils.js.map +1 -0
  55. package/lib/commonjs/utils/requestPermission.js +73 -0
  56. package/lib/commonjs/utils/requestPermission.js.map +1 -0
  57. package/lib/commonjs/wayfinding/components/MapView.js +220 -0
  58. package/lib/commonjs/wayfinding/components/MapView.js.map +1 -0
  59. package/lib/commonjs/wayfinding/hooks/index.js +401 -0
  60. package/lib/commonjs/wayfinding/hooks/index.js.map +1 -0
  61. package/lib/commonjs/wayfinding/index.js +45 -0
  62. package/lib/commonjs/wayfinding/index.js.map +1 -0
  63. package/lib/commonjs/wayfinding/store/index.js +237 -0
  64. package/lib/commonjs/wayfinding/store/index.js.map +1 -0
  65. package/lib/commonjs/wayfinding/store/utils.js +44 -0
  66. package/lib/commonjs/wayfinding/store/utils.js.map +1 -0
  67. package/lib/commonjs/wayfinding/styles/colors.js +18 -0
  68. package/lib/commonjs/wayfinding/styles/colors.js.map +1 -0
  69. package/lib/commonjs/wayfinding/types/index.d.js +6 -0
  70. package/lib/commonjs/wayfinding/types/index.d.js.map +1 -0
  71. package/lib/commonjs/wayfinding/utils/index.js +11 -0
  72. package/lib/commonjs/wayfinding/utils/index.js.map +1 -0
  73. package/lib/commonjs/wayfinding/utils/mapper.js +106 -0
  74. package/lib/commonjs/wayfinding/utils/mapper.js.map +1 -0
  75. package/lib/module/index.js +6 -0
  76. package/lib/module/index.js.map +1 -0
  77. package/lib/module/sdk/index.js +390 -0
  78. package/lib/module/sdk/index.js.map +1 -0
  79. package/lib/module/sdk/nativeInterface.js +18 -0
  80. package/lib/module/sdk/nativeInterface.js.map +1 -0
  81. package/lib/module/sdk/types/index.d.js +2 -0
  82. package/lib/module/sdk/types/index.d.js.map +1 -0
  83. package/lib/module/sdk/utils.js +15 -0
  84. package/lib/module/sdk/utils.js.map +1 -0
  85. package/lib/module/utils/requestPermission.js +67 -0
  86. package/lib/module/utils/requestPermission.js.map +1 -0
  87. package/lib/module/wayfinding/components/MapView.js +207 -0
  88. package/lib/module/wayfinding/components/MapView.js.map +1 -0
  89. package/lib/module/wayfinding/hooks/index.js +392 -0
  90. package/lib/module/wayfinding/hooks/index.js.map +1 -0
  91. package/lib/module/wayfinding/index.js +12 -0
  92. package/lib/module/wayfinding/index.js.map +1 -0
  93. package/lib/module/wayfinding/store/index.js +202 -0
  94. package/lib/module/wayfinding/store/index.js.map +1 -0
  95. package/lib/module/wayfinding/store/utils.js +34 -0
  96. package/lib/module/wayfinding/store/utils.js.map +1 -0
  97. package/lib/module/wayfinding/styles/colors.js +11 -0
  98. package/lib/module/wayfinding/styles/colors.js.map +1 -0
  99. package/lib/module/wayfinding/types/index.d.js +2 -0
  100. package/lib/module/wayfinding/types/index.d.js.map +1 -0
  101. package/lib/module/wayfinding/utils/index.js +4 -0
  102. package/lib/module/wayfinding/utils/index.js.map +1 -0
  103. package/lib/module/wayfinding/utils/mapper.js +100 -0
  104. package/lib/module/wayfinding/utils/mapper.js.map +1 -0
  105. package/lib/typescript/src/index.d.ts +4 -0
  106. package/lib/typescript/src/index.d.ts.map +1 -0
  107. package/lib/typescript/src/sdk/index.d.ts +269 -0
  108. package/lib/typescript/src/sdk/index.d.ts.map +1 -0
  109. package/lib/typescript/src/sdk/nativeInterface.d.ts +2 -0
  110. package/lib/typescript/src/sdk/nativeInterface.d.ts.map +1 -0
  111. package/lib/typescript/src/sdk/utils.d.ts +7 -0
  112. package/lib/typescript/src/sdk/utils.d.ts.map +1 -0
  113. package/lib/typescript/src/utils/requestPermission.d.ts +3 -0
  114. package/lib/typescript/src/utils/requestPermission.d.ts.map +1 -0
  115. package/lib/typescript/src/wayfinding/components/MapView.d.ts +36 -0
  116. package/lib/typescript/src/wayfinding/components/MapView.d.ts.map +1 -0
  117. package/lib/typescript/src/wayfinding/hooks/index.d.ts +53 -0
  118. package/lib/typescript/src/wayfinding/hooks/index.d.ts.map +1 -0
  119. package/lib/typescript/src/wayfinding/index.d.ts +5 -0
  120. package/lib/typescript/src/wayfinding/index.d.ts.map +1 -0
  121. package/lib/typescript/src/wayfinding/store/index.d.ts +103 -0
  122. package/lib/typescript/src/wayfinding/store/index.d.ts.map +1 -0
  123. package/lib/typescript/src/wayfinding/store/utils.d.ts +9 -0
  124. package/lib/typescript/src/wayfinding/store/utils.d.ts.map +1 -0
  125. package/lib/typescript/src/wayfinding/styles/colors.d.ts +8 -0
  126. package/lib/typescript/src/wayfinding/styles/colors.d.ts.map +1 -0
  127. package/lib/typescript/src/wayfinding/utils/index.d.ts +3 -0
  128. package/lib/typescript/src/wayfinding/utils/index.d.ts.map +1 -0
  129. package/lib/typescript/src/wayfinding/utils/mapper.d.ts +17 -0
  130. package/lib/typescript/src/wayfinding/utils/mapper.d.ts.map +1 -0
  131. package/package.json +130 -0
  132. package/security.txt +4 -0
  133. package/src/index.ts +6 -0
  134. package/src/sdk/index.ts +656 -0
  135. package/src/sdk/nativeInterface.ts +18 -0
  136. package/src/sdk/types/index.d.ts +718 -0
  137. package/src/sdk/utils.ts +16 -0
  138. package/src/utils/requestPermission.ts +94 -0
  139. package/src/wayfinding/components/MapView.tsx +312 -0
  140. package/src/wayfinding/hooks/index.ts +539 -0
  141. package/src/wayfinding/index.tsx +11 -0
  142. package/src/wayfinding/store/index.tsx +254 -0
  143. package/src/wayfinding/store/utils.ts +40 -0
  144. package/src/wayfinding/styles/colors.tsx +6 -0
  145. package/src/wayfinding/types/index.d.ts +56 -0
  146. package/src/wayfinding/utils/index.ts +5 -0
  147. package/src/wayfinding/utils/mapper.ts +129 -0
@@ -0,0 +1,29 @@
1
+ package com.situm.plugin;
2
+
3
+ import com.facebook.react.ReactPackage;
4
+ import com.facebook.react.bridge.NativeModule;
5
+ import com.facebook.react.bridge.ReactApplicationContext;
6
+ import com.facebook.react.uimanager.ViewManager;
7
+
8
+ import java.util.ArrayList;
9
+ import java.util.Collections;
10
+ import java.util.List;
11
+
12
+ public class SitumPackage implements ReactPackage {
13
+
14
+ @Override
15
+ public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
16
+ return Collections.emptyList();
17
+ }
18
+
19
+ @Override
20
+ public List<NativeModule> createNativeModules(
21
+ ReactApplicationContext reactContext) {
22
+ List<NativeModule> modules = new ArrayList<>();
23
+
24
+ modules.add(new SitumPluginImpl(reactContext));
25
+
26
+ return modules;
27
+ }
28
+
29
+ }
@@ -0,0 +1,84 @@
1
+ package com.situm.plugin;
2
+
3
+ import com.facebook.react.bridge.Callback;
4
+ import com.facebook.react.bridge.ReadableArray;
5
+ import com.facebook.react.bridge.ReadableMap;
6
+
7
+ public interface SitumPlugin {
8
+ String EVENT_LOCATION_CHANGED = "locationChanged";
9
+ String EVENT_LOCATION_ERROR = "locationError";
10
+ String EVENT_LOCATION_STATUS_CHANGED = "statusChanged";
11
+
12
+ String EVENT_NAVIGATION_UPDATE = "navigationUpdated";
13
+ String EVENT_NAVIGATION_ERROR = "navigationError";
14
+
15
+ String EVENT_REALTIME_ERROR = "realtimeError";
16
+ String EVENT_REALTIME_UPDATE = "realtimeUpdated";
17
+
18
+ String EVENT_ENTER_GEOFENCES = "onEnterGeofences";
19
+ String EVENT_EXIT_GEOFENCES = "onExitGeofences";
20
+
21
+ void initSitumSDK();
22
+
23
+ void setUseRemoteConfig(String useRemoteConfig, Callback callback);
24
+
25
+ void setApiKey(String email, String apiKey, Callback callback);
26
+
27
+ void setUserPass(String email, String password, Callback callback);
28
+
29
+ void setDashboardURL(String url, Callback callback);
30
+
31
+ void setCacheMaxAge(int cacheAge, Callback callback);
32
+
33
+ void fetchBuildings(Callback success, Callback error);
34
+
35
+ void fetchBuildingInfo(ReadableMap map, Callback success, Callback error);
36
+
37
+ void fetchTilesFromBuilding(ReadableMap map, Callback success, Callback error);
38
+
39
+ void fetchFloorsFromBuilding(ReadableMap map, Callback success, Callback error);
40
+
41
+ void fetchMapFromFloor(ReadableMap map, Callback success, Callback error);
42
+
43
+ void fetchGeofencesFromBuilding(ReadableMap map, Callback success, Callback error);
44
+
45
+ void startPositioning(ReadableMap map);
46
+
47
+ void stopPositioning(Callback callback);
48
+
49
+ void requestDirections(ReadableArray requestArray, Callback success, Callback error);
50
+
51
+ void fetchPoiCategories(Callback success, Callback error);
52
+
53
+ void fetchPoiCategoryIconNormal(ReadableMap map, Callback success, Callback error);
54
+
55
+ void fetchPoiCategoryIconSelected(ReadableMap map, Callback success, Callback error);
56
+
57
+ void fetchIndoorPOIsFromBuilding(ReadableMap map, Callback success, Callback error);
58
+
59
+ void fetchOutdoorPOIsFromBuilding(ReadableMap map, Callback success, Callback error);
60
+
61
+ void fetchEventsFromBuilding(ReadableMap map, Callback success, Callback error);
62
+
63
+ void requestNavigationUpdates(ReadableMap map);
64
+
65
+ void updateNavigationWithLocation(ReadableMap map, Callback success, Callback error);
66
+
67
+ void removeNavigationUpdates(Callback callback);
68
+
69
+ void requestRealTimeUpdates(ReadableMap map);
70
+
71
+ void removeRealTimeUpdates();
72
+
73
+ void checkIfPointInsideGeofence(ReadableMap map, Callback callback);
74
+
75
+ void invalidateCache();
76
+
77
+ void requestAuthorization();
78
+
79
+ void getDeviceId(Callback callback);
80
+
81
+ void onEnterGeofences();
82
+
83
+ void onExitGeofences();
84
+ }
@@ -0,0 +1,344 @@
1
+ package com.situm.plugin;
2
+
3
+ import android.Manifest;
4
+ import android.os.Build;
5
+ import android.telecom.Call;
6
+ import android.util.Log;
7
+
8
+ import com.facebook.react.bridge.Arguments;
9
+ import com.facebook.react.bridge.Callback;
10
+ import com.facebook.react.bridge.PromiseImpl;
11
+ import com.facebook.react.bridge.ReactApplicationContext;
12
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
13
+ import com.facebook.react.bridge.ReactMethod;
14
+ import com.facebook.react.bridge.ReadableArray;
15
+ import com.facebook.react.bridge.ReadableMap;
16
+ import com.facebook.react.bridge.WritableMap;
17
+ import com.facebook.react.modules.core.DeviceEventManagerModule;
18
+ import com.facebook.react.modules.permissions.PermissionsModule;
19
+
20
+ import java.util.concurrent.TimeUnit;
21
+
22
+ import androidx.annotation.NonNull;
23
+ import es.situm.sdk.SitumSdk;
24
+
25
+ public class SitumPluginImpl extends ReactContextBaseJavaModule implements SitumPlugin {
26
+ private static final String TAG = "SitumPlugin";
27
+ private static final String PLUGIN_NAME = "RNCSitumPlugin";
28
+ private static ReactApplicationContext reactContext;
29
+ private static volatile PluginHelper pluginInstance;
30
+
31
+ SitumPluginImpl(ReactApplicationContext context) {
32
+ super(context);
33
+ reactContext = context;
34
+ }
35
+
36
+ private static PluginHelper getPluginInstance() {
37
+ if (pluginInstance == null) { // Check for the first time
38
+ synchronized (PluginHelper.class) { // Check for the second time.
39
+ // if there is no instance available... create new one
40
+ if (pluginInstance == null)
41
+ pluginInstance = new PluginHelper();
42
+ }
43
+ }
44
+ return pluginInstance;
45
+ }
46
+
47
+ @NonNull
48
+ @Override
49
+ public String getName() {
50
+ return PLUGIN_NAME;
51
+ }
52
+
53
+ @ReactMethod
54
+ public void initSitumSDK() {
55
+ SitumSdk.init(reactContext);
56
+ }
57
+
58
+ // Required for rn built in EventEmitter Calls.
59
+ @ReactMethod
60
+ public void addListener(String eventName) {
61
+
62
+ }
63
+
64
+ @ReactMethod
65
+ public void removeListeners(Integer count) {
66
+
67
+ }
68
+
69
+ @Override
70
+ @ReactMethod
71
+ public void setApiKey(String email, String apiKey, Callback callback) {
72
+ if (email.isEmpty() || apiKey.isEmpty())
73
+ return;
74
+
75
+ boolean isSuccess = SitumSdk.configuration().setApiKey(email, apiKey);
76
+
77
+ WritableMap response = Arguments.createMap();
78
+ response.putBoolean("success", isSuccess);
79
+
80
+ callback.invoke(response);
81
+ }
82
+
83
+ @Override
84
+ @ReactMethod
85
+ public void setUseRemoteConfig(String useRemoteConfig, Callback callback) {
86
+ SitumSdk.configuration().setUseRemoteConfig(useRemoteConfig.equalsIgnoreCase("true") ? true : false);
87
+ if (callback != null) {
88
+ WritableMap response = Arguments.createMap();
89
+ response.putBoolean("success", true);
90
+
91
+ callback.invoke(response);
92
+ }
93
+ }
94
+
95
+ @Override
96
+ @ReactMethod
97
+ public void setUserPass(String email, String password, Callback callback) {
98
+ if (email.isEmpty() || password.isEmpty())
99
+ return;
100
+
101
+ boolean isSuccess = SitumSdk.configuration().setUserPass(email, password);
102
+
103
+ WritableMap response = Arguments.createMap();
104
+ response.putBoolean("success", isSuccess);
105
+
106
+ callback.invoke(response);
107
+ }
108
+
109
+ @Override
110
+ @ReactMethod
111
+ public void setDashboardURL(String url, Callback callback) {
112
+ boolean success = false;
113
+
114
+ if (!url.isEmpty()) {
115
+ success = true;
116
+ SitumSdk.configuration().setDashboardURL(url);
117
+ }
118
+
119
+ if (callback != null) {
120
+ WritableMap response = Arguments.createMap();
121
+ response.putBoolean("success", success);
122
+ callback.invoke(response);
123
+ }
124
+ }
125
+
126
+ @Override
127
+ @ReactMethod
128
+ public void setCacheMaxAge(int cacheAge, Callback callback) {
129
+ boolean isSuccess = SitumSdk.configuration().setCacheMaxAge(cacheAge, TimeUnit.SECONDS);
130
+
131
+ WritableMap response = Arguments.createMap();
132
+ response.putBoolean("success", isSuccess);
133
+
134
+ callback.invoke(response);
135
+
136
+ }
137
+
138
+ @Override
139
+ @ReactMethod
140
+ public void fetchBuildings(Callback success, Callback error) {
141
+ getPluginInstance().fetchBuildings(success, error);
142
+ }
143
+
144
+ @Override
145
+ @ReactMethod
146
+ public void fetchBuildingInfo(ReadableMap map, Callback success, Callback error) {
147
+ getPluginInstance().fetchBuildingInfo(map, success, error);
148
+ }
149
+
150
+ @Override
151
+ @ReactMethod
152
+ public void fetchTilesFromBuilding(ReadableMap map, Callback success, Callback error) {
153
+ getPluginInstance().fetchTilesFromBuilding(map, success, error);
154
+ }
155
+
156
+ @Override
157
+ @ReactMethod
158
+ public void fetchFloorsFromBuilding(ReadableMap map, Callback success, Callback error) {
159
+ getPluginInstance().fetchFloorsFromBuilding(map, success, error);
160
+ }
161
+
162
+ @Override
163
+ @ReactMethod
164
+ public void fetchMapFromFloor(ReadableMap map, Callback success, Callback error) {
165
+ getPluginInstance().fetchMapFromFloor(map, success, error);
166
+ }
167
+
168
+ @Override
169
+ @ReactMethod
170
+ public void fetchGeofencesFromBuilding(ReadableMap map, Callback success, Callback error) {
171
+ getPluginInstance().fetchGeofencesFromBuilding(map, success, error);
172
+ }
173
+
174
+ @Override
175
+ @ReactMethod
176
+ public void startPositioning(ReadableMap map) {
177
+ getPluginInstance().startPositioning(map,
178
+ getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class));
179
+ }
180
+
181
+ @Override
182
+ @ReactMethod
183
+ public void stopPositioning(Callback callback) {
184
+ getPluginInstance().stopPositioning(callback);
185
+ }
186
+
187
+ @Override
188
+ @ReactMethod
189
+ public void requestDirections(ReadableArray requestArray, Callback success, Callback error) {
190
+ getPluginInstance().requestDirections(requestArray, success, error, getReactApplicationContext());
191
+ }
192
+
193
+ @Override
194
+ @ReactMethod
195
+ public void fetchPoiCategories(Callback success, Callback error) {
196
+ getPluginInstance().fetchPoiCategories(success, error);
197
+ }
198
+
199
+ @Override
200
+ @ReactMethod
201
+ public void fetchPoiCategoryIconNormal(ReadableMap map, Callback success, Callback error) {
202
+ getPluginInstance().fetchPoiCategoryIconNormal(map, success, error);
203
+ }
204
+
205
+ @Override
206
+ @ReactMethod
207
+ public void fetchPoiCategoryIconSelected(ReadableMap map, Callback success, Callback error) {
208
+ getPluginInstance().fetchPoiCategoryIconSelected(map, success, error);
209
+ }
210
+
211
+ @Override
212
+ @ReactMethod
213
+ public void fetchIndoorPOIsFromBuilding(ReadableMap map, Callback success, Callback error) {
214
+ getPluginInstance().fetchIndoorPOIsFromBuilding(map, success, error);
215
+ }
216
+
217
+ @Override
218
+ @ReactMethod
219
+ public void fetchOutdoorPOIsFromBuilding(ReadableMap map, Callback success, Callback error) {
220
+ getPluginInstance().fetchOutdoorPOIsFromBuilding(map, success, error);
221
+ }
222
+
223
+ @Override
224
+ @ReactMethod
225
+ public void fetchEventsFromBuilding(ReadableMap map, Callback success, Callback error) {
226
+ getPluginInstance().fetchEventsFromBuilding(map, success, error);
227
+ }
228
+
229
+ @Override
230
+ @ReactMethod
231
+ public void requestNavigationUpdates(ReadableMap options) {
232
+ getPluginInstance().requestNavigationUpdates(options,
233
+ getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class),
234
+ getReactApplicationContext());
235
+ }
236
+
237
+ @Override
238
+ @ReactMethod
239
+ public void updateNavigationWithLocation(ReadableMap map, Callback success, Callback error) {
240
+ getPluginInstance().updateNavigationWithLocation(map, success, error);
241
+ }
242
+
243
+ @Override
244
+ @ReactMethod
245
+ public void removeNavigationUpdates(Callback callback) {
246
+ getPluginInstance().removeNavigationUpdates(callback);
247
+ }
248
+
249
+ @Override
250
+ @ReactMethod
251
+ public void requestRealTimeUpdates(ReadableMap map) {
252
+ getPluginInstance().requestRealTimeUpdates(map,
253
+ getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class));
254
+ }
255
+
256
+ @Override
257
+ @ReactMethod
258
+ public void removeRealTimeUpdates() {
259
+ getPluginInstance().removeRealTimeUpdates();
260
+ }
261
+
262
+ @Override
263
+ @ReactMethod
264
+ public void checkIfPointInsideGeofence(ReadableMap map, Callback callback) {
265
+ getPluginInstance().checkIfPointIsInsideGeoFence(map, callback);
266
+ }
267
+
268
+ @Override
269
+ @ReactMethod
270
+ public void invalidateCache() {
271
+ getPluginInstance().invalidateCache();
272
+ }
273
+
274
+ @Override
275
+ @ReactMethod
276
+ public void getDeviceId(Callback callback) {
277
+ WritableMap response = Arguments.createMap();
278
+ response.putDouble("deviceId", SitumSdk.getDeviceID());
279
+
280
+ callback.invoke(response);
281
+ }
282
+
283
+ @Override
284
+ @ReactMethod
285
+ public void requestAuthorization() {
286
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
287
+ final PermissionsModule perms = getReactApplicationContext().getNativeModule(PermissionsModule.class);
288
+
289
+ final Callback onPermissionGranted = new Callback() {
290
+ @Override
291
+ public void invoke(Object... args) {
292
+ String result = (String) args[0];
293
+ if (!result.equals("granted")) {
294
+ Log.e(TAG, "Location permission was not granted.");
295
+ }
296
+ }
297
+ };
298
+
299
+ final Callback onPermissionDenied = new Callback() {
300
+ @Override
301
+ public void invoke(Object... args) {
302
+ Log.e(TAG, "Failed to request location permission.");
303
+ }
304
+ };
305
+
306
+ Callback onPermissionCheckFailed = new Callback() {
307
+ @Override
308
+ public void invoke(Object... args) {
309
+
310
+ Log.e(TAG, "Failed to check location permission.");
311
+ }
312
+ };
313
+
314
+ Callback onPermissionChecked = new Callback() {
315
+ @Override
316
+ public void invoke(Object... args) {
317
+ boolean hasPermission = (boolean) args[0];
318
+
319
+ if (!hasPermission) {
320
+ perms.requestPermission(Manifest.permission.ACCESS_FINE_LOCATION,
321
+ new PromiseImpl(onPermissionGranted, onPermissionDenied));
322
+ }
323
+ }
324
+ };
325
+
326
+ perms.checkPermission(Manifest.permission.ACCESS_FINE_LOCATION,
327
+ new PromiseImpl(onPermissionChecked, onPermissionCheckFailed));
328
+ }
329
+ }
330
+
331
+ @Override
332
+ @ReactMethod
333
+ public void onEnterGeofences() {
334
+ getPluginInstance().onEnterGeofences(
335
+ getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class));
336
+ }
337
+
338
+ @Override
339
+ @ReactMethod
340
+ public void onExitGeofences() {
341
+ getPluginInstance().onExitGeofences(
342
+ getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class));
343
+ }
344
+ }
@@ -0,0 +1,122 @@
1
+ package com.situm.plugin.utils;
2
+
3
+ import com.facebook.react.bridge.ReadableArray;
4
+ import com.facebook.react.bridge.ReadableMap;
5
+ import com.facebook.react.bridge.ReadableMapKeySetIterator;
6
+ import com.facebook.react.bridge.WritableArray;
7
+ import com.facebook.react.bridge.WritableMap;
8
+ import com.facebook.react.bridge.WritableNativeArray;
9
+ import com.facebook.react.bridge.WritableNativeMap;
10
+
11
+ import org.json.JSONArray;
12
+ import org.json.JSONException;
13
+ import org.json.JSONObject;
14
+
15
+ import java.util.Iterator;
16
+
17
+ public class ReactNativeJson {
18
+ public static WritableMap convertJsonToMap(JSONObject jsonObject) throws JSONException {
19
+ WritableMap map = new WritableNativeMap();
20
+
21
+ Iterator<String> iterator = jsonObject.keys();
22
+ while (iterator.hasNext()) {
23
+ String key = iterator.next();
24
+ Object value = jsonObject.get(key);
25
+ if (value instanceof JSONObject) {
26
+ map.putMap(key, convertJsonToMap((JSONObject) value));
27
+ } else if (value instanceof JSONArray) {
28
+ map.putArray(key, convertJsonToArray((JSONArray) value));
29
+ } else if (value instanceof Boolean) {
30
+ map.putBoolean(key, (Boolean) value);
31
+ } else if (value instanceof Integer) {
32
+ map.putInt(key, (Integer) value);
33
+ } else if (value instanceof Double) {
34
+ map.putDouble(key, (Double) value);
35
+ } else if (value instanceof String) {
36
+ map.putString(key, (String) value);
37
+ } else {
38
+ map.putString(key, value.toString());
39
+ }
40
+ }
41
+ return map;
42
+ }
43
+
44
+ public static WritableArray convertJsonToArray(JSONArray jsonArray) throws JSONException {
45
+ WritableArray array = new WritableNativeArray();
46
+
47
+ for (int i = 0; i < jsonArray.length(); i++) {
48
+ Object value = jsonArray.get(i);
49
+ if (value instanceof JSONObject) {
50
+ array.pushMap(convertJsonToMap((JSONObject) value));
51
+ } else if (value instanceof JSONArray) {
52
+ array.pushArray(convertJsonToArray((JSONArray) value));
53
+ } else if (value instanceof Boolean) {
54
+ array.pushBoolean((Boolean) value);
55
+ } else if (value instanceof Integer) {
56
+ array.pushInt((Integer) value);
57
+ } else if (value instanceof Double) {
58
+ array.pushDouble((Double) value);
59
+ } else if (value instanceof String) {
60
+ array.pushString((String) value);
61
+ } else {
62
+ array.pushString(value.toString());
63
+ }
64
+ }
65
+ return array;
66
+ }
67
+
68
+ public static JSONObject convertMapToJson(ReadableMap readableMap) throws JSONException {
69
+ JSONObject object = new JSONObject();
70
+ ReadableMapKeySetIterator iterator = readableMap.keySetIterator();
71
+ while (iterator.hasNextKey()) {
72
+ String key = iterator.nextKey();
73
+ switch (readableMap.getType(key)) {
74
+ case Null:
75
+ object.put(key, JSONObject.NULL);
76
+ break;
77
+ case Boolean:
78
+ object.put(key, readableMap.getBoolean(key));
79
+ break;
80
+ case Number:
81
+ object.put(key, readableMap.getDouble(key));
82
+ break;
83
+ case String:
84
+ object.put(key, readableMap.getString(key));
85
+ break;
86
+ case Map:
87
+ object.put(key, convertMapToJson(readableMap.getMap(key)));
88
+ break;
89
+ case Array:
90
+ object.put(key, convertArrayToJson(readableMap.getArray(key)));
91
+ break;
92
+ }
93
+ }
94
+ return object;
95
+ }
96
+
97
+ public static JSONArray convertArrayToJson(ReadableArray readableArray) throws JSONException {
98
+ JSONArray array = new JSONArray();
99
+ for (int i = 0; i < readableArray.size(); i++) {
100
+ switch (readableArray.getType(i)) {
101
+ case Null:
102
+ break;
103
+ case Boolean:
104
+ array.put(readableArray.getBoolean(i));
105
+ break;
106
+ case Number:
107
+ array.put(readableArray.getDouble(i));
108
+ break;
109
+ case String:
110
+ array.put(readableArray.getString(i));
111
+ break;
112
+ case Map:
113
+ array.put(convertMapToJson(readableArray.getMap(i)));
114
+ break;
115
+ case Array:
116
+ array.put(convertArrayToJson(readableArray.getArray(i)));
117
+ break;
118
+ }
119
+ }
120
+ return array;
121
+ }
122
+ }
@@ -0,0 +1,3 @@
1
+ <resources>
2
+ <string name="app_name">SitumReactNativePlugin</string>
3
+ </resources>
@@ -0,0 +1,9 @@
1
+ <resources>
2
+
3
+ <!-- Base application theme. -->
4
+ <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
5
+ <!-- Customize your theme here. -->
6
+ <item name="android:textColor">#000000</item>
7
+ </style>
8
+
9
+ </resources>
@@ -0,0 +1,14 @@
1
+ //
2
+ // Constants.h
3
+ // SitumCordovaPlugin
4
+ //
5
+ // Created by Cristina Sánchez Barreiro on 17/09/2018.
6
+ //
7
+
8
+ #import <Foundation/Foundation.h>
9
+
10
+ @interface SitumConstants : NSObject
11
+
12
+ FOUNDATION_EXPORT NSString *const kDateFormat;
13
+
14
+ @end
@@ -0,0 +1,14 @@
1
+ //
2
+ // Constants.m
3
+ // SitumCordovaPlugin
4
+ //
5
+ // Created by Cristina Sánchez Barreiro on 17/09/2018.
6
+ //
7
+
8
+ #import "Constants.h"
9
+
10
+ @implementation SitumConstants
11
+
12
+ NSString *const kDateFormat = @"E MMM dd HH:mm:ss Z yyyy";
13
+
14
+ @end