@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.
- package/LICENSE +21 -0
- package/README.md +656 -0
- package/ReactNativeSitumPlugin.podspec +22 -0
- package/SECURITY-POLICY.md +9 -0
- package/android/.gradle/5.6.4/fileChanges/last-build.bin +0 -0
- package/android/.gradle/5.6.4/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/5.6.4/gc.properties +0 -0
- package/android/.idea/.name +1 -0
- package/android/.idea/codeStyles/Project.xml +116 -0
- package/android/.idea/encodings.xml +6 -0
- package/android/.idea/misc.xml +31 -0
- package/android/.idea/sonarlint/issuestore/index.pb +15 -0
- package/android/.project +34 -0
- package/android/build.gradle +45 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/android/gradlew +172 -0
- package/android/gradlew.bat +84 -0
- package/android/src/main/AndroidManifest.xml +6 -0
- package/android/src/main/java/com/situm/plugin/PluginHelper.java +989 -0
- package/android/src/main/java/com/situm/plugin/SitumMapper.java +1206 -0
- package/android/src/main/java/com/situm/plugin/SitumPackage.java +29 -0
- package/android/src/main/java/com/situm/plugin/SitumPlugin.java +84 -0
- package/android/src/main/java/com/situm/plugin/SitumPluginImpl.java +344 -0
- package/android/src/main/java/com/situm/plugin/utils/ReactNativeJson.java +122 -0
- package/android/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/android/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/android/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/android/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/android/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/android/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/android/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/android/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/android/src/main/res/values/strings.xml +3 -0
- package/android/src/main/res/values/styles.xml +9 -0
- package/ios/Constants.h +14 -0
- package/ios/Constants.m +14 -0
- package/ios/RNSitumReactNativePlugin.xcodeproj/project.pbxproj +272 -0
- package/ios/SitumLocationWrapper.h +112 -0
- package/ios/SitumLocationWrapper.m +1132 -0
- package/ios/SitumPlugin.h +15 -0
- package/ios/SitumPlugin.m +911 -0
- package/lib/commonjs/index.js +25 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/sdk/index.js +399 -0
- package/lib/commonjs/sdk/index.js.map +1 -0
- package/lib/commonjs/sdk/nativeInterface.js +20 -0
- package/lib/commonjs/sdk/nativeInterface.js.map +1 -0
- package/lib/commonjs/sdk/types/index.d.js +6 -0
- package/lib/commonjs/sdk/types/index.d.js.map +1 -0
- package/lib/commonjs/sdk/utils.js +22 -0
- package/lib/commonjs/sdk/utils.js.map +1 -0
- package/lib/commonjs/utils/requestPermission.js +73 -0
- package/lib/commonjs/utils/requestPermission.js.map +1 -0
- package/lib/commonjs/wayfinding/components/MapView.js +220 -0
- package/lib/commonjs/wayfinding/components/MapView.js.map +1 -0
- package/lib/commonjs/wayfinding/hooks/index.js +401 -0
- package/lib/commonjs/wayfinding/hooks/index.js.map +1 -0
- package/lib/commonjs/wayfinding/index.js +45 -0
- package/lib/commonjs/wayfinding/index.js.map +1 -0
- package/lib/commonjs/wayfinding/store/index.js +237 -0
- package/lib/commonjs/wayfinding/store/index.js.map +1 -0
- package/lib/commonjs/wayfinding/store/utils.js +44 -0
- package/lib/commonjs/wayfinding/store/utils.js.map +1 -0
- package/lib/commonjs/wayfinding/styles/colors.js +18 -0
- package/lib/commonjs/wayfinding/styles/colors.js.map +1 -0
- package/lib/commonjs/wayfinding/types/index.d.js +6 -0
- package/lib/commonjs/wayfinding/types/index.d.js.map +1 -0
- package/lib/commonjs/wayfinding/utils/index.js +11 -0
- package/lib/commonjs/wayfinding/utils/index.js.map +1 -0
- package/lib/commonjs/wayfinding/utils/mapper.js +106 -0
- package/lib/commonjs/wayfinding/utils/mapper.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/sdk/index.js +390 -0
- package/lib/module/sdk/index.js.map +1 -0
- package/lib/module/sdk/nativeInterface.js +18 -0
- package/lib/module/sdk/nativeInterface.js.map +1 -0
- package/lib/module/sdk/types/index.d.js +2 -0
- package/lib/module/sdk/types/index.d.js.map +1 -0
- package/lib/module/sdk/utils.js +15 -0
- package/lib/module/sdk/utils.js.map +1 -0
- package/lib/module/utils/requestPermission.js +67 -0
- package/lib/module/utils/requestPermission.js.map +1 -0
- package/lib/module/wayfinding/components/MapView.js +207 -0
- package/lib/module/wayfinding/components/MapView.js.map +1 -0
- package/lib/module/wayfinding/hooks/index.js +392 -0
- package/lib/module/wayfinding/hooks/index.js.map +1 -0
- package/lib/module/wayfinding/index.js +12 -0
- package/lib/module/wayfinding/index.js.map +1 -0
- package/lib/module/wayfinding/store/index.js +202 -0
- package/lib/module/wayfinding/store/index.js.map +1 -0
- package/lib/module/wayfinding/store/utils.js +34 -0
- package/lib/module/wayfinding/store/utils.js.map +1 -0
- package/lib/module/wayfinding/styles/colors.js +11 -0
- package/lib/module/wayfinding/styles/colors.js.map +1 -0
- package/lib/module/wayfinding/types/index.d.js +2 -0
- package/lib/module/wayfinding/types/index.d.js.map +1 -0
- package/lib/module/wayfinding/utils/index.js +4 -0
- package/lib/module/wayfinding/utils/index.js.map +1 -0
- package/lib/module/wayfinding/utils/mapper.js +100 -0
- package/lib/module/wayfinding/utils/mapper.js.map +1 -0
- package/lib/typescript/src/index.d.ts +4 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/sdk/index.d.ts +269 -0
- package/lib/typescript/src/sdk/index.d.ts.map +1 -0
- package/lib/typescript/src/sdk/nativeInterface.d.ts +2 -0
- package/lib/typescript/src/sdk/nativeInterface.d.ts.map +1 -0
- package/lib/typescript/src/sdk/utils.d.ts +7 -0
- package/lib/typescript/src/sdk/utils.d.ts.map +1 -0
- package/lib/typescript/src/utils/requestPermission.d.ts +3 -0
- package/lib/typescript/src/utils/requestPermission.d.ts.map +1 -0
- package/lib/typescript/src/wayfinding/components/MapView.d.ts +36 -0
- package/lib/typescript/src/wayfinding/components/MapView.d.ts.map +1 -0
- package/lib/typescript/src/wayfinding/hooks/index.d.ts +53 -0
- package/lib/typescript/src/wayfinding/hooks/index.d.ts.map +1 -0
- package/lib/typescript/src/wayfinding/index.d.ts +5 -0
- package/lib/typescript/src/wayfinding/index.d.ts.map +1 -0
- package/lib/typescript/src/wayfinding/store/index.d.ts +103 -0
- package/lib/typescript/src/wayfinding/store/index.d.ts.map +1 -0
- package/lib/typescript/src/wayfinding/store/utils.d.ts +9 -0
- package/lib/typescript/src/wayfinding/store/utils.d.ts.map +1 -0
- package/lib/typescript/src/wayfinding/styles/colors.d.ts +8 -0
- package/lib/typescript/src/wayfinding/styles/colors.d.ts.map +1 -0
- package/lib/typescript/src/wayfinding/utils/index.d.ts +3 -0
- package/lib/typescript/src/wayfinding/utils/index.d.ts.map +1 -0
- package/lib/typescript/src/wayfinding/utils/mapper.d.ts +17 -0
- package/lib/typescript/src/wayfinding/utils/mapper.d.ts.map +1 -0
- package/package.json +130 -0
- package/security.txt +4 -0
- package/src/index.ts +6 -0
- package/src/sdk/index.ts +656 -0
- package/src/sdk/nativeInterface.ts +18 -0
- package/src/sdk/types/index.d.ts +718 -0
- package/src/sdk/utils.ts +16 -0
- package/src/utils/requestPermission.ts +94 -0
- package/src/wayfinding/components/MapView.tsx +312 -0
- package/src/wayfinding/hooks/index.ts +539 -0
- package/src/wayfinding/index.tsx +11 -0
- package/src/wayfinding/store/index.tsx +254 -0
- package/src/wayfinding/store/utils.ts +40 -0
- package/src/wayfinding/styles/colors.tsx +6 -0
- package/src/wayfinding/types/index.d.ts +56 -0
- package/src/wayfinding/utils/index.ts +5 -0
- 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
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/ios/Constants.h
ADDED
|
@@ -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
|
package/ios/Constants.m
ADDED