react-native-nitro-location-tracking 0.1.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 +20 -0
- package/NitroLocationTracking.podspec +29 -0
- package/README.md +39 -0
- package/android/CMakeLists.txt +24 -0
- package/android/build.gradle +122 -0
- package/android/src/main/AndroidManifest.xml +18 -0
- package/android/src/main/cpp/cpp-adapter.cpp +6 -0
- package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/ConnectionManager.kt +137 -0
- package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/LocationEngine.kt +93 -0
- package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/LocationForegroundService.kt +65 -0
- package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/NativeDBWriter.kt +80 -0
- package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/NitroLocationTracking.kt +180 -0
- package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/NitroLocationTrackingPackage.kt +22 -0
- package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/NotificationService.kt +75 -0
- package/ios/ConnectionManager.swift +144 -0
- package/ios/LocationEngine.swift +146 -0
- package/ios/NativeDBWriter.swift +121 -0
- package/ios/NitroLocationTracking.swift +127 -0
- package/ios/NotificationService.swift +31 -0
- package/lib/module/LocationSmoother.js +33 -0
- package/lib/module/LocationSmoother.js.map +1 -0
- package/lib/module/NitroLocationTracking.nitro.js +4 -0
- package/lib/module/NitroLocationTracking.nitro.js.map +1 -0
- package/lib/module/bearing.js +19 -0
- package/lib/module/bearing.js.map +1 -0
- package/lib/module/db.js +234 -0
- package/lib/module/db.js.map +1 -0
- package/lib/module/index.js +68 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/LocationSmoother.d.ts +19 -0
- package/lib/typescript/src/LocationSmoother.d.ts.map +1 -0
- package/lib/typescript/src/NitroLocationTracking.nitro.d.ts +59 -0
- package/lib/typescript/src/NitroLocationTracking.nitro.d.ts.map +1 -0
- package/lib/typescript/src/bearing.d.ts +9 -0
- package/lib/typescript/src/bearing.d.ts.map +1 -0
- package/lib/typescript/src/db.d.ts +1 -0
- package/lib/typescript/src/db.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +21 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/nitro.json +17 -0
- package/nitrogen/generated/android/c++/JAccuracyLevel.hpp +61 -0
- package/nitrogen/generated/android/c++/JConnectionConfig.hpp +81 -0
- package/nitrogen/generated/android/c++/JConnectionState.hpp +61 -0
- package/nitrogen/generated/android/c++/JFunc_void_ConnectionState.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_LocationData.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
- package/nitrogen/generated/android/c++/JHybridNitroLocationTrackingSpec.cpp +179 -0
- package/nitrogen/generated/android/c++/JHybridNitroLocationTrackingSpec.hpp +83 -0
- package/nitrogen/generated/android/c++/JLocationConfig.hpp +91 -0
- package/nitrogen/generated/android/c++/JLocationData.hpp +81 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/AccuracyLevel.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/ConnectionConfig.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/ConnectionState.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/Func_void_ConnectionState.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/Func_void_LocationData.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/Func_void_bool.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/Func_void_std__string.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/HybridNitroLocationTrackingSpec.kt +146 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/LocationConfig.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/LocationData.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/nitrolocationtrackingOnLoad.kt +35 -0
- package/nitrogen/generated/android/nitrolocationtracking+autolinking.cmake +81 -0
- package/nitrogen/generated/android/nitrolocationtracking+autolinking.gradle +27 -0
- package/nitrogen/generated/android/nitrolocationtrackingOnLoad.cpp +52 -0
- package/nitrogen/generated/android/nitrolocationtrackingOnLoad.hpp +25 -0
- package/nitrogen/generated/ios/NitroLocationTracking+autolinking.rb +60 -0
- package/nitrogen/generated/ios/NitroLocationTracking-Swift-Cxx-Bridge.cpp +73 -0
- package/nitrogen/generated/ios/NitroLocationTracking-Swift-Cxx-Bridge.hpp +231 -0
- package/nitrogen/generated/ios/NitroLocationTracking-Swift-Cxx-Umbrella.hpp +61 -0
- package/nitrogen/generated/ios/NitroLocationTrackingAutolinking.mm +33 -0
- package/nitrogen/generated/ios/NitroLocationTrackingAutolinking.swift +26 -0
- package/nitrogen/generated/ios/c++/HybridNitroLocationTrackingSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridNitroLocationTrackingSpecSwift.hpp +206 -0
- package/nitrogen/generated/ios/swift/AccuracyLevel.swift +44 -0
- package/nitrogen/generated/ios/swift/ConnectionConfig.swift +59 -0
- package/nitrogen/generated/ios/swift/ConnectionState.swift +44 -0
- package/nitrogen/generated/ios/swift/Func_void_ConnectionState.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_LocationData.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridNitroLocationTrackingSpec.swift +72 -0
- package/nitrogen/generated/ios/swift/HybridNitroLocationTrackingSpec_cxx.swift +362 -0
- package/nitrogen/generated/ios/swift/LocationConfig.swift +69 -0
- package/nitrogen/generated/ios/swift/LocationData.swift +59 -0
- package/nitrogen/generated/shared/c++/AccuracyLevel.hpp +80 -0
- package/nitrogen/generated/shared/c++/ConnectionConfig.hpp +107 -0
- package/nitrogen/generated/shared/c++/ConnectionState.hpp +80 -0
- package/nitrogen/generated/shared/c++/HybridNitroLocationTrackingSpec.cpp +38 -0
- package/nitrogen/generated/shared/c++/HybridNitroLocationTrackingSpec.hpp +92 -0
- package/nitrogen/generated/shared/c++/LocationConfig.hpp +117 -0
- package/nitrogen/generated/shared/c++/LocationData.hpp +107 -0
- package/package.json +174 -0
- package/src/LocationSmoother.ts +46 -0
- package/src/NitroLocationTracking.nitro.ts +79 -0
- package/src/bearing.ts +22 -0
- package/src/db.ts +232 -0
- package/src/index.tsx +92 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JHybridNitroLocationTrackingSpec.cpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#include "JHybridNitroLocationTrackingSpec.hpp"
|
|
9
|
+
|
|
10
|
+
// Forward declaration of `LocationData` to properly resolve imports.
|
|
11
|
+
namespace margelo::nitro::nitrolocationtracking { struct LocationData; }
|
|
12
|
+
// Forward declaration of `ConnectionState` to properly resolve imports.
|
|
13
|
+
namespace margelo::nitro::nitrolocationtracking { enum class ConnectionState; }
|
|
14
|
+
// Forward declaration of `LocationConfig` to properly resolve imports.
|
|
15
|
+
namespace margelo::nitro::nitrolocationtracking { struct LocationConfig; }
|
|
16
|
+
// Forward declaration of `AccuracyLevel` to properly resolve imports.
|
|
17
|
+
namespace margelo::nitro::nitrolocationtracking { enum class AccuracyLevel; }
|
|
18
|
+
// Forward declaration of `ConnectionConfig` to properly resolve imports.
|
|
19
|
+
namespace margelo::nitro::nitrolocationtracking { struct ConnectionConfig; }
|
|
20
|
+
|
|
21
|
+
#include "LocationData.hpp"
|
|
22
|
+
#include <NitroModules/Promise.hpp>
|
|
23
|
+
#include <NitroModules/JPromise.hpp>
|
|
24
|
+
#include "JLocationData.hpp"
|
|
25
|
+
#include "ConnectionState.hpp"
|
|
26
|
+
#include "JConnectionState.hpp"
|
|
27
|
+
#include "LocationConfig.hpp"
|
|
28
|
+
#include "JLocationConfig.hpp"
|
|
29
|
+
#include "AccuracyLevel.hpp"
|
|
30
|
+
#include "JAccuracyLevel.hpp"
|
|
31
|
+
#include <string>
|
|
32
|
+
#include <functional>
|
|
33
|
+
#include "JFunc_void_LocationData.hpp"
|
|
34
|
+
#include <NitroModules/JNICallable.hpp>
|
|
35
|
+
#include "JFunc_void_bool.hpp"
|
|
36
|
+
#include "ConnectionConfig.hpp"
|
|
37
|
+
#include "JConnectionConfig.hpp"
|
|
38
|
+
#include "JFunc_void_ConnectionState.hpp"
|
|
39
|
+
#include "JFunc_void_std__string.hpp"
|
|
40
|
+
|
|
41
|
+
namespace margelo::nitro::nitrolocationtracking {
|
|
42
|
+
|
|
43
|
+
jni::local_ref<JHybridNitroLocationTrackingSpec::jhybriddata> JHybridNitroLocationTrackingSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
|
|
44
|
+
return makeCxxInstance(jThis);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
void JHybridNitroLocationTrackingSpec::registerNatives() {
|
|
48
|
+
registerHybrid({
|
|
49
|
+
makeNativeMethod("initHybrid", JHybridNitroLocationTrackingSpec::initHybrid),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
size_t JHybridNitroLocationTrackingSpec::getExternalMemorySize() noexcept {
|
|
54
|
+
static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
|
|
55
|
+
return method(_javaPart);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
bool JHybridNitroLocationTrackingSpec::equals(const std::shared_ptr<HybridObject>& other) {
|
|
59
|
+
if (auto otherCast = std::dynamic_pointer_cast<JHybridNitroLocationTrackingSpec>(other)) {
|
|
60
|
+
return _javaPart == otherCast->_javaPart;
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
void JHybridNitroLocationTrackingSpec::dispose() noexcept {
|
|
66
|
+
static const auto method = javaClassStatic()->getMethod<void()>("dispose");
|
|
67
|
+
method(_javaPart);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
std::string JHybridNitroLocationTrackingSpec::toString() {
|
|
71
|
+
static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
|
|
72
|
+
auto javaString = method(_javaPart);
|
|
73
|
+
return javaString->toStdString();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Properties
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
// Methods
|
|
80
|
+
void JHybridNitroLocationTrackingSpec::configure(const LocationConfig& config) {
|
|
81
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JLocationConfig> /* config */)>("configure");
|
|
82
|
+
method(_javaPart, JLocationConfig::fromCpp(config));
|
|
83
|
+
}
|
|
84
|
+
void JHybridNitroLocationTrackingSpec::startTracking() {
|
|
85
|
+
static const auto method = javaClassStatic()->getMethod<void()>("startTracking");
|
|
86
|
+
method(_javaPart);
|
|
87
|
+
}
|
|
88
|
+
void JHybridNitroLocationTrackingSpec::stopTracking() {
|
|
89
|
+
static const auto method = javaClassStatic()->getMethod<void()>("stopTracking");
|
|
90
|
+
method(_javaPart);
|
|
91
|
+
}
|
|
92
|
+
std::shared_ptr<Promise<LocationData>> JHybridNitroLocationTrackingSpec::getCurrentLocation() {
|
|
93
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getCurrentLocation");
|
|
94
|
+
auto __result = method(_javaPart);
|
|
95
|
+
return [&]() {
|
|
96
|
+
auto __promise = Promise<LocationData>::create();
|
|
97
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
98
|
+
auto __result = jni::static_ref_cast<JLocationData>(__boxedResult);
|
|
99
|
+
__promise->resolve(__result->toCpp());
|
|
100
|
+
});
|
|
101
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
102
|
+
jni::JniException __jniError(__throwable);
|
|
103
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
104
|
+
});
|
|
105
|
+
return __promise;
|
|
106
|
+
}();
|
|
107
|
+
}
|
|
108
|
+
bool JHybridNitroLocationTrackingSpec::isTracking() {
|
|
109
|
+
static const auto method = javaClassStatic()->getMethod<jboolean()>("isTracking");
|
|
110
|
+
auto __result = method(_javaPart);
|
|
111
|
+
return static_cast<bool>(__result);
|
|
112
|
+
}
|
|
113
|
+
void JHybridNitroLocationTrackingSpec::onLocation(const std::function<void(const LocationData& /* location */)>& callback) {
|
|
114
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_LocationData::javaobject> /* callback */)>("onLocation_cxx");
|
|
115
|
+
method(_javaPart, JFunc_void_LocationData_cxx::fromCpp(callback));
|
|
116
|
+
}
|
|
117
|
+
void JHybridNitroLocationTrackingSpec::onMotionChange(const std::function<void(bool /* isMoving */)>& callback) {
|
|
118
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_bool::javaobject> /* callback */)>("onMotionChange_cxx");
|
|
119
|
+
method(_javaPart, JFunc_void_bool_cxx::fromCpp(callback));
|
|
120
|
+
}
|
|
121
|
+
void JHybridNitroLocationTrackingSpec::configureConnection(const ConnectionConfig& config) {
|
|
122
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JConnectionConfig> /* config */)>("configureConnection");
|
|
123
|
+
method(_javaPart, JConnectionConfig::fromCpp(config));
|
|
124
|
+
}
|
|
125
|
+
void JHybridNitroLocationTrackingSpec::connectWebSocket() {
|
|
126
|
+
static const auto method = javaClassStatic()->getMethod<void()>("connectWebSocket");
|
|
127
|
+
method(_javaPart);
|
|
128
|
+
}
|
|
129
|
+
void JHybridNitroLocationTrackingSpec::disconnectWebSocket() {
|
|
130
|
+
static const auto method = javaClassStatic()->getMethod<void()>("disconnectWebSocket");
|
|
131
|
+
method(_javaPart);
|
|
132
|
+
}
|
|
133
|
+
void JHybridNitroLocationTrackingSpec::sendMessage(const std::string& message) {
|
|
134
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* message */)>("sendMessage");
|
|
135
|
+
method(_javaPart, jni::make_jstring(message));
|
|
136
|
+
}
|
|
137
|
+
ConnectionState JHybridNitroLocationTrackingSpec::getConnectionState() {
|
|
138
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JConnectionState>()>("getConnectionState");
|
|
139
|
+
auto __result = method(_javaPart);
|
|
140
|
+
return __result->toCpp();
|
|
141
|
+
}
|
|
142
|
+
void JHybridNitroLocationTrackingSpec::onConnectionStateChange(const std::function<void(ConnectionState /* state */)>& callback) {
|
|
143
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_ConnectionState::javaobject> /* callback */)>("onConnectionStateChange_cxx");
|
|
144
|
+
method(_javaPart, JFunc_void_ConnectionState_cxx::fromCpp(callback));
|
|
145
|
+
}
|
|
146
|
+
void JHybridNitroLocationTrackingSpec::onMessage(const std::function<void(const std::string& /* message */)>& callback) {
|
|
147
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__string::javaobject> /* callback */)>("onMessage_cxx");
|
|
148
|
+
method(_javaPart, JFunc_void_std__string_cxx::fromCpp(callback));
|
|
149
|
+
}
|
|
150
|
+
std::shared_ptr<Promise<bool>> JHybridNitroLocationTrackingSpec::forceSync() {
|
|
151
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("forceSync");
|
|
152
|
+
auto __result = method(_javaPart);
|
|
153
|
+
return [&]() {
|
|
154
|
+
auto __promise = Promise<bool>::create();
|
|
155
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
156
|
+
auto __result = jni::static_ref_cast<jni::JBoolean>(__boxedResult);
|
|
157
|
+
__promise->resolve(static_cast<bool>(__result->value()));
|
|
158
|
+
});
|
|
159
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
160
|
+
jni::JniException __jniError(__throwable);
|
|
161
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
162
|
+
});
|
|
163
|
+
return __promise;
|
|
164
|
+
}();
|
|
165
|
+
}
|
|
166
|
+
void JHybridNitroLocationTrackingSpec::showLocalNotification(const std::string& title, const std::string& body) {
|
|
167
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* title */, jni::alias_ref<jni::JString> /* body */)>("showLocalNotification");
|
|
168
|
+
method(_javaPart, jni::make_jstring(title), jni::make_jstring(body));
|
|
169
|
+
}
|
|
170
|
+
void JHybridNitroLocationTrackingSpec::updateForegroundNotification(const std::string& title, const std::string& body) {
|
|
171
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* title */, jni::alias_ref<jni::JString> /* body */)>("updateForegroundNotification");
|
|
172
|
+
method(_javaPart, jni::make_jstring(title), jni::make_jstring(body));
|
|
173
|
+
}
|
|
174
|
+
void JHybridNitroLocationTrackingSpec::destroy() {
|
|
175
|
+
static const auto method = javaClassStatic()->getMethod<void()>("destroy");
|
|
176
|
+
method(_javaPart);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
} // namespace margelo::nitro::nitrolocationtracking
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridNitroLocationTrackingSpec.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <NitroModules/JHybridObject.hpp>
|
|
11
|
+
#include <fbjni/fbjni.h>
|
|
12
|
+
#include "HybridNitroLocationTrackingSpec.hpp"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
namespace margelo::nitro::nitrolocationtracking {
|
|
18
|
+
|
|
19
|
+
using namespace facebook;
|
|
20
|
+
|
|
21
|
+
class JHybridNitroLocationTrackingSpec: public jni::HybridClass<JHybridNitroLocationTrackingSpec, JHybridObject>,
|
|
22
|
+
public virtual HybridNitroLocationTrackingSpec {
|
|
23
|
+
public:
|
|
24
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrolocationtracking/HybridNitroLocationTrackingSpec;";
|
|
25
|
+
static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
|
|
26
|
+
static void registerNatives();
|
|
27
|
+
|
|
28
|
+
protected:
|
|
29
|
+
// C++ constructor (called from Java via `initHybrid()`)
|
|
30
|
+
explicit JHybridNitroLocationTrackingSpec(jni::alias_ref<jhybridobject> jThis) :
|
|
31
|
+
HybridObject(HybridNitroLocationTrackingSpec::TAG),
|
|
32
|
+
HybridBase(jThis),
|
|
33
|
+
_javaPart(jni::make_global(jThis)) {}
|
|
34
|
+
|
|
35
|
+
public:
|
|
36
|
+
~JHybridNitroLocationTrackingSpec() override {
|
|
37
|
+
// Hermes GC can destroy JS objects on a non-JNI Thread.
|
|
38
|
+
jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public:
|
|
42
|
+
size_t getExternalMemorySize() noexcept override;
|
|
43
|
+
bool equals(const std::shared_ptr<HybridObject>& other) override;
|
|
44
|
+
void dispose() noexcept override;
|
|
45
|
+
std::string toString() override;
|
|
46
|
+
|
|
47
|
+
public:
|
|
48
|
+
inline const jni::global_ref<JHybridNitroLocationTrackingSpec::javaobject>& getJavaPart() const noexcept {
|
|
49
|
+
return _javaPart;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public:
|
|
53
|
+
// Properties
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
public:
|
|
57
|
+
// Methods
|
|
58
|
+
void configure(const LocationConfig& config) override;
|
|
59
|
+
void startTracking() override;
|
|
60
|
+
void stopTracking() override;
|
|
61
|
+
std::shared_ptr<Promise<LocationData>> getCurrentLocation() override;
|
|
62
|
+
bool isTracking() override;
|
|
63
|
+
void onLocation(const std::function<void(const LocationData& /* location */)>& callback) override;
|
|
64
|
+
void onMotionChange(const std::function<void(bool /* isMoving */)>& callback) override;
|
|
65
|
+
void configureConnection(const ConnectionConfig& config) override;
|
|
66
|
+
void connectWebSocket() override;
|
|
67
|
+
void disconnectWebSocket() override;
|
|
68
|
+
void sendMessage(const std::string& message) override;
|
|
69
|
+
ConnectionState getConnectionState() override;
|
|
70
|
+
void onConnectionStateChange(const std::function<void(ConnectionState /* state */)>& callback) override;
|
|
71
|
+
void onMessage(const std::function<void(const std::string& /* message */)>& callback) override;
|
|
72
|
+
std::shared_ptr<Promise<bool>> forceSync() override;
|
|
73
|
+
void showLocalNotification(const std::string& title, const std::string& body) override;
|
|
74
|
+
void updateForegroundNotification(const std::string& title, const std::string& body) override;
|
|
75
|
+
void destroy() override;
|
|
76
|
+
|
|
77
|
+
private:
|
|
78
|
+
friend HybridBase;
|
|
79
|
+
using HybridBase::HybridBase;
|
|
80
|
+
jni::global_ref<JHybridNitroLocationTrackingSpec::javaobject> _javaPart;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
} // namespace margelo::nitro::nitrolocationtracking
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JLocationConfig.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include "LocationConfig.hpp"
|
|
12
|
+
|
|
13
|
+
#include "AccuracyLevel.hpp"
|
|
14
|
+
#include "JAccuracyLevel.hpp"
|
|
15
|
+
#include <string>
|
|
16
|
+
|
|
17
|
+
namespace margelo::nitro::nitrolocationtracking {
|
|
18
|
+
|
|
19
|
+
using namespace facebook;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The C++ JNI bridge between the C++ struct "LocationConfig" and the the Kotlin data class "LocationConfig".
|
|
23
|
+
*/
|
|
24
|
+
struct JLocationConfig final: public jni::JavaClass<JLocationConfig> {
|
|
25
|
+
public:
|
|
26
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrolocationtracking/LocationConfig;";
|
|
27
|
+
|
|
28
|
+
public:
|
|
29
|
+
/**
|
|
30
|
+
* Convert this Java/Kotlin-based struct to the C++ struct LocationConfig by copying all values to C++.
|
|
31
|
+
*/
|
|
32
|
+
[[maybe_unused]]
|
|
33
|
+
[[nodiscard]]
|
|
34
|
+
LocationConfig toCpp() const {
|
|
35
|
+
static const auto clazz = javaClassStatic();
|
|
36
|
+
static const auto fieldDesiredAccuracy = clazz->getField<JAccuracyLevel>("desiredAccuracy");
|
|
37
|
+
jni::local_ref<JAccuracyLevel> desiredAccuracy = this->getFieldValue(fieldDesiredAccuracy);
|
|
38
|
+
static const auto fieldDistanceFilter = clazz->getField<double>("distanceFilter");
|
|
39
|
+
double distanceFilter = this->getFieldValue(fieldDistanceFilter);
|
|
40
|
+
static const auto fieldIntervalMs = clazz->getField<double>("intervalMs");
|
|
41
|
+
double intervalMs = this->getFieldValue(fieldIntervalMs);
|
|
42
|
+
static const auto fieldFastestIntervalMs = clazz->getField<double>("fastestIntervalMs");
|
|
43
|
+
double fastestIntervalMs = this->getFieldValue(fieldFastestIntervalMs);
|
|
44
|
+
static const auto fieldStopTimeout = clazz->getField<double>("stopTimeout");
|
|
45
|
+
double stopTimeout = this->getFieldValue(fieldStopTimeout);
|
|
46
|
+
static const auto fieldStopOnTerminate = clazz->getField<jboolean>("stopOnTerminate");
|
|
47
|
+
jboolean stopOnTerminate = this->getFieldValue(fieldStopOnTerminate);
|
|
48
|
+
static const auto fieldStartOnBoot = clazz->getField<jboolean>("startOnBoot");
|
|
49
|
+
jboolean startOnBoot = this->getFieldValue(fieldStartOnBoot);
|
|
50
|
+
static const auto fieldForegroundNotificationTitle = clazz->getField<jni::JString>("foregroundNotificationTitle");
|
|
51
|
+
jni::local_ref<jni::JString> foregroundNotificationTitle = this->getFieldValue(fieldForegroundNotificationTitle);
|
|
52
|
+
static const auto fieldForegroundNotificationText = clazz->getField<jni::JString>("foregroundNotificationText");
|
|
53
|
+
jni::local_ref<jni::JString> foregroundNotificationText = this->getFieldValue(fieldForegroundNotificationText);
|
|
54
|
+
return LocationConfig(
|
|
55
|
+
desiredAccuracy->toCpp(),
|
|
56
|
+
distanceFilter,
|
|
57
|
+
intervalMs,
|
|
58
|
+
fastestIntervalMs,
|
|
59
|
+
stopTimeout,
|
|
60
|
+
static_cast<bool>(stopOnTerminate),
|
|
61
|
+
static_cast<bool>(startOnBoot),
|
|
62
|
+
foregroundNotificationTitle->toStdString(),
|
|
63
|
+
foregroundNotificationText->toStdString()
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
public:
|
|
68
|
+
/**
|
|
69
|
+
* Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
|
|
70
|
+
*/
|
|
71
|
+
[[maybe_unused]]
|
|
72
|
+
static jni::local_ref<JLocationConfig::javaobject> fromCpp(const LocationConfig& value) {
|
|
73
|
+
using JSignature = JLocationConfig(jni::alias_ref<JAccuracyLevel>, double, double, double, double, jboolean, jboolean, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>);
|
|
74
|
+
static const auto clazz = javaClassStatic();
|
|
75
|
+
static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
|
|
76
|
+
return create(
|
|
77
|
+
clazz,
|
|
78
|
+
JAccuracyLevel::fromCpp(value.desiredAccuracy),
|
|
79
|
+
value.distanceFilter,
|
|
80
|
+
value.intervalMs,
|
|
81
|
+
value.fastestIntervalMs,
|
|
82
|
+
value.stopTimeout,
|
|
83
|
+
value.stopOnTerminate,
|
|
84
|
+
value.startOnBoot,
|
|
85
|
+
jni::make_jstring(value.foregroundNotificationTitle),
|
|
86
|
+
jni::make_jstring(value.foregroundNotificationText)
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
} // namespace margelo::nitro::nitrolocationtracking
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JLocationData.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include "LocationData.hpp"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
namespace margelo::nitro::nitrolocationtracking {
|
|
16
|
+
|
|
17
|
+
using namespace facebook;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The C++ JNI bridge between the C++ struct "LocationData" and the the Kotlin data class "LocationData".
|
|
21
|
+
*/
|
|
22
|
+
struct JLocationData final: public jni::JavaClass<JLocationData> {
|
|
23
|
+
public:
|
|
24
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrolocationtracking/LocationData;";
|
|
25
|
+
|
|
26
|
+
public:
|
|
27
|
+
/**
|
|
28
|
+
* Convert this Java/Kotlin-based struct to the C++ struct LocationData by copying all values to C++.
|
|
29
|
+
*/
|
|
30
|
+
[[maybe_unused]]
|
|
31
|
+
[[nodiscard]]
|
|
32
|
+
LocationData toCpp() const {
|
|
33
|
+
static const auto clazz = javaClassStatic();
|
|
34
|
+
static const auto fieldLatitude = clazz->getField<double>("latitude");
|
|
35
|
+
double latitude = this->getFieldValue(fieldLatitude);
|
|
36
|
+
static const auto fieldLongitude = clazz->getField<double>("longitude");
|
|
37
|
+
double longitude = this->getFieldValue(fieldLongitude);
|
|
38
|
+
static const auto fieldAltitude = clazz->getField<double>("altitude");
|
|
39
|
+
double altitude = this->getFieldValue(fieldAltitude);
|
|
40
|
+
static const auto fieldSpeed = clazz->getField<double>("speed");
|
|
41
|
+
double speed = this->getFieldValue(fieldSpeed);
|
|
42
|
+
static const auto fieldBearing = clazz->getField<double>("bearing");
|
|
43
|
+
double bearing = this->getFieldValue(fieldBearing);
|
|
44
|
+
static const auto fieldAccuracy = clazz->getField<double>("accuracy");
|
|
45
|
+
double accuracy = this->getFieldValue(fieldAccuracy);
|
|
46
|
+
static const auto fieldTimestamp = clazz->getField<double>("timestamp");
|
|
47
|
+
double timestamp = this->getFieldValue(fieldTimestamp);
|
|
48
|
+
return LocationData(
|
|
49
|
+
latitude,
|
|
50
|
+
longitude,
|
|
51
|
+
altitude,
|
|
52
|
+
speed,
|
|
53
|
+
bearing,
|
|
54
|
+
accuracy,
|
|
55
|
+
timestamp
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public:
|
|
60
|
+
/**
|
|
61
|
+
* Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
|
|
62
|
+
*/
|
|
63
|
+
[[maybe_unused]]
|
|
64
|
+
static jni::local_ref<JLocationData::javaobject> fromCpp(const LocationData& value) {
|
|
65
|
+
using JSignature = JLocationData(double, double, double, double, double, double, double);
|
|
66
|
+
static const auto clazz = javaClassStatic();
|
|
67
|
+
static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
|
|
68
|
+
return create(
|
|
69
|
+
clazz,
|
|
70
|
+
value.latitude,
|
|
71
|
+
value.longitude,
|
|
72
|
+
value.altitude,
|
|
73
|
+
value.speed,
|
|
74
|
+
value.bearing,
|
|
75
|
+
value.accuracy,
|
|
76
|
+
value.timestamp
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
} // namespace margelo::nitro::nitrolocationtracking
|
package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/AccuracyLevel.kt
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// AccuracyLevel.kt
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
package com.margelo.nitro.nitrolocationtracking
|
|
9
|
+
|
|
10
|
+
import androidx.annotation.Keep
|
|
11
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Represents the JavaScript enum/union "AccuracyLevel".
|
|
15
|
+
*/
|
|
16
|
+
@DoNotStrip
|
|
17
|
+
@Keep
|
|
18
|
+
enum class AccuracyLevel(@DoNotStrip @Keep val value: Int) {
|
|
19
|
+
HIGH(0),
|
|
20
|
+
BALANCED(1),
|
|
21
|
+
LOW(2);
|
|
22
|
+
|
|
23
|
+
companion object
|
|
24
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// ConnectionConfig.kt
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
package com.margelo.nitro.nitrolocationtracking
|
|
9
|
+
|
|
10
|
+
import androidx.annotation.Keep
|
|
11
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Represents the JavaScript object/struct "ConnectionConfig".
|
|
16
|
+
*/
|
|
17
|
+
@DoNotStrip
|
|
18
|
+
@Keep
|
|
19
|
+
data class ConnectionConfig(
|
|
20
|
+
@DoNotStrip
|
|
21
|
+
@Keep
|
|
22
|
+
val wsUrl: String,
|
|
23
|
+
@DoNotStrip
|
|
24
|
+
@Keep
|
|
25
|
+
val restUrl: String,
|
|
26
|
+
@DoNotStrip
|
|
27
|
+
@Keep
|
|
28
|
+
val authToken: String,
|
|
29
|
+
@DoNotStrip
|
|
30
|
+
@Keep
|
|
31
|
+
val reconnectIntervalMs: Double,
|
|
32
|
+
@DoNotStrip
|
|
33
|
+
@Keep
|
|
34
|
+
val maxReconnectAttempts: Double,
|
|
35
|
+
@DoNotStrip
|
|
36
|
+
@Keep
|
|
37
|
+
val batchSize: Double,
|
|
38
|
+
@DoNotStrip
|
|
39
|
+
@Keep
|
|
40
|
+
val syncIntervalMs: Double
|
|
41
|
+
) {
|
|
42
|
+
/* primary constructor */
|
|
43
|
+
|
|
44
|
+
companion object {
|
|
45
|
+
/**
|
|
46
|
+
* Constructor called from C++
|
|
47
|
+
*/
|
|
48
|
+
@DoNotStrip
|
|
49
|
+
@Keep
|
|
50
|
+
@Suppress("unused")
|
|
51
|
+
@JvmStatic
|
|
52
|
+
private fun fromCpp(wsUrl: String, restUrl: String, authToken: String, reconnectIntervalMs: Double, maxReconnectAttempts: Double, batchSize: Double, syncIntervalMs: Double): ConnectionConfig {
|
|
53
|
+
return ConnectionConfig(wsUrl, restUrl, authToken, reconnectIntervalMs, maxReconnectAttempts, batchSize, syncIntervalMs)
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/ConnectionState.kt
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// ConnectionState.kt
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
package com.margelo.nitro.nitrolocationtracking
|
|
9
|
+
|
|
10
|
+
import androidx.annotation.Keep
|
|
11
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Represents the JavaScript enum/union "ConnectionState".
|
|
15
|
+
*/
|
|
16
|
+
@DoNotStrip
|
|
17
|
+
@Keep
|
|
18
|
+
enum class ConnectionState(@DoNotStrip @Keep val value: Int) {
|
|
19
|
+
CONNECTED(0),
|
|
20
|
+
DISCONNECTED(1),
|
|
21
|
+
RECONNECTING(2);
|
|
22
|
+
|
|
23
|
+
companion object
|
|
24
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// Func_void_ConnectionState.kt
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
package com.margelo.nitro.nitrolocationtracking
|
|
9
|
+
|
|
10
|
+
import androidx.annotation.Keep
|
|
11
|
+
import com.facebook.jni.HybridData
|
|
12
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
13
|
+
import dalvik.annotation.optimization.FastNative
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Represents the JavaScript callback `(state: enum) => void`.
|
|
18
|
+
* This can be either implemented in C++ (in which case it might be a callback coming from JS),
|
|
19
|
+
* or in Kotlin/Java (in which case it is a native callback).
|
|
20
|
+
*/
|
|
21
|
+
@DoNotStrip
|
|
22
|
+
@Keep
|
|
23
|
+
@Suppress("ClassName", "RedundantUnitReturnType")
|
|
24
|
+
fun interface Func_void_ConnectionState: (ConnectionState) -> Unit {
|
|
25
|
+
/**
|
|
26
|
+
* Call the given JS callback.
|
|
27
|
+
* @throws Throwable if the JS function itself throws an error, or if the JS function/runtime has already been deleted.
|
|
28
|
+
*/
|
|
29
|
+
@DoNotStrip
|
|
30
|
+
@Keep
|
|
31
|
+
override fun invoke(state: ConnectionState): Unit
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Represents the JavaScript callback `(state: enum) => void`.
|
|
36
|
+
* This is implemented in C++, via a `std::function<...>`.
|
|
37
|
+
* The callback might be coming from JS.
|
|
38
|
+
*/
|
|
39
|
+
@DoNotStrip
|
|
40
|
+
@Keep
|
|
41
|
+
@Suppress(
|
|
42
|
+
"KotlinJniMissingFunction", "unused",
|
|
43
|
+
"RedundantSuppression", "RedundantUnitReturnType", "FunctionName",
|
|
44
|
+
"ConvertSecondaryConstructorToPrimary", "ClassName", "LocalVariableName",
|
|
45
|
+
)
|
|
46
|
+
class Func_void_ConnectionState_cxx: Func_void_ConnectionState {
|
|
47
|
+
@DoNotStrip
|
|
48
|
+
@Keep
|
|
49
|
+
private val mHybridData: HybridData
|
|
50
|
+
|
|
51
|
+
@DoNotStrip
|
|
52
|
+
@Keep
|
|
53
|
+
private constructor(hybridData: HybridData) {
|
|
54
|
+
mHybridData = hybridData
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@DoNotStrip
|
|
58
|
+
@Keep
|
|
59
|
+
override fun invoke(state: ConnectionState): Unit
|
|
60
|
+
= invoke_cxx(state)
|
|
61
|
+
|
|
62
|
+
@FastNative
|
|
63
|
+
private external fun invoke_cxx(state: ConnectionState): Unit
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Represents the JavaScript callback `(state: enum) => void`.
|
|
68
|
+
* This is implemented in Java/Kotlin, via a `(ConnectionState) -> Unit`.
|
|
69
|
+
* The callback is always coming from native.
|
|
70
|
+
*/
|
|
71
|
+
@DoNotStrip
|
|
72
|
+
@Keep
|
|
73
|
+
@Suppress("ClassName", "RedundantUnitReturnType", "unused")
|
|
74
|
+
class Func_void_ConnectionState_java(private val function: (ConnectionState) -> Unit): Func_void_ConnectionState {
|
|
75
|
+
@DoNotStrip
|
|
76
|
+
@Keep
|
|
77
|
+
override fun invoke(state: ConnectionState): Unit {
|
|
78
|
+
return this.function(state)
|
|
79
|
+
}
|
|
80
|
+
}
|