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.
Files changed (101) hide show
  1. package/LICENSE +20 -0
  2. package/NitroLocationTracking.podspec +29 -0
  3. package/README.md +39 -0
  4. package/android/CMakeLists.txt +24 -0
  5. package/android/build.gradle +122 -0
  6. package/android/src/main/AndroidManifest.xml +18 -0
  7. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  8. package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/ConnectionManager.kt +137 -0
  9. package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/LocationEngine.kt +93 -0
  10. package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/LocationForegroundService.kt +65 -0
  11. package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/NativeDBWriter.kt +80 -0
  12. package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/NitroLocationTracking.kt +180 -0
  13. package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/NitroLocationTrackingPackage.kt +22 -0
  14. package/android/src/main/java/com/margelo/nitro/nitrolocationtracking/NotificationService.kt +75 -0
  15. package/ios/ConnectionManager.swift +144 -0
  16. package/ios/LocationEngine.swift +146 -0
  17. package/ios/NativeDBWriter.swift +121 -0
  18. package/ios/NitroLocationTracking.swift +127 -0
  19. package/ios/NotificationService.swift +31 -0
  20. package/lib/module/LocationSmoother.js +33 -0
  21. package/lib/module/LocationSmoother.js.map +1 -0
  22. package/lib/module/NitroLocationTracking.nitro.js +4 -0
  23. package/lib/module/NitroLocationTracking.nitro.js.map +1 -0
  24. package/lib/module/bearing.js +19 -0
  25. package/lib/module/bearing.js.map +1 -0
  26. package/lib/module/db.js +234 -0
  27. package/lib/module/db.js.map +1 -0
  28. package/lib/module/index.js +68 -0
  29. package/lib/module/index.js.map +1 -0
  30. package/lib/module/package.json +1 -0
  31. package/lib/typescript/package.json +1 -0
  32. package/lib/typescript/src/LocationSmoother.d.ts +19 -0
  33. package/lib/typescript/src/LocationSmoother.d.ts.map +1 -0
  34. package/lib/typescript/src/NitroLocationTracking.nitro.d.ts +59 -0
  35. package/lib/typescript/src/NitroLocationTracking.nitro.d.ts.map +1 -0
  36. package/lib/typescript/src/bearing.d.ts +9 -0
  37. package/lib/typescript/src/bearing.d.ts.map +1 -0
  38. package/lib/typescript/src/db.d.ts +1 -0
  39. package/lib/typescript/src/db.d.ts.map +1 -0
  40. package/lib/typescript/src/index.d.ts +21 -0
  41. package/lib/typescript/src/index.d.ts.map +1 -0
  42. package/nitro.json +17 -0
  43. package/nitrogen/generated/android/c++/JAccuracyLevel.hpp +61 -0
  44. package/nitrogen/generated/android/c++/JConnectionConfig.hpp +81 -0
  45. package/nitrogen/generated/android/c++/JConnectionState.hpp +61 -0
  46. package/nitrogen/generated/android/c++/JFunc_void_ConnectionState.hpp +77 -0
  47. package/nitrogen/generated/android/c++/JFunc_void_LocationData.hpp +77 -0
  48. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
  49. package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
  50. package/nitrogen/generated/android/c++/JHybridNitroLocationTrackingSpec.cpp +179 -0
  51. package/nitrogen/generated/android/c++/JHybridNitroLocationTrackingSpec.hpp +83 -0
  52. package/nitrogen/generated/android/c++/JLocationConfig.hpp +91 -0
  53. package/nitrogen/generated/android/c++/JLocationData.hpp +81 -0
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/AccuracyLevel.kt +24 -0
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/ConnectionConfig.kt +56 -0
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/ConnectionState.kt +24 -0
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/Func_void_ConnectionState.kt +80 -0
  58. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/Func_void_LocationData.kt +80 -0
  59. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/Func_void_bool.kt +80 -0
  60. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/Func_void_std__string.kt +80 -0
  61. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/HybridNitroLocationTrackingSpec.kt +146 -0
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/LocationConfig.kt +62 -0
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/LocationData.kt +56 -0
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolocationtracking/nitrolocationtrackingOnLoad.kt +35 -0
  65. package/nitrogen/generated/android/nitrolocationtracking+autolinking.cmake +81 -0
  66. package/nitrogen/generated/android/nitrolocationtracking+autolinking.gradle +27 -0
  67. package/nitrogen/generated/android/nitrolocationtrackingOnLoad.cpp +52 -0
  68. package/nitrogen/generated/android/nitrolocationtrackingOnLoad.hpp +25 -0
  69. package/nitrogen/generated/ios/NitroLocationTracking+autolinking.rb +60 -0
  70. package/nitrogen/generated/ios/NitroLocationTracking-Swift-Cxx-Bridge.cpp +73 -0
  71. package/nitrogen/generated/ios/NitroLocationTracking-Swift-Cxx-Bridge.hpp +231 -0
  72. package/nitrogen/generated/ios/NitroLocationTracking-Swift-Cxx-Umbrella.hpp +61 -0
  73. package/nitrogen/generated/ios/NitroLocationTrackingAutolinking.mm +33 -0
  74. package/nitrogen/generated/ios/NitroLocationTrackingAutolinking.swift +26 -0
  75. package/nitrogen/generated/ios/c++/HybridNitroLocationTrackingSpecSwift.cpp +11 -0
  76. package/nitrogen/generated/ios/c++/HybridNitroLocationTrackingSpecSwift.hpp +206 -0
  77. package/nitrogen/generated/ios/swift/AccuracyLevel.swift +44 -0
  78. package/nitrogen/generated/ios/swift/ConnectionConfig.swift +59 -0
  79. package/nitrogen/generated/ios/swift/ConnectionState.swift +44 -0
  80. package/nitrogen/generated/ios/swift/Func_void_ConnectionState.swift +46 -0
  81. package/nitrogen/generated/ios/swift/Func_void_LocationData.swift +46 -0
  82. package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
  83. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  84. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
  85. package/nitrogen/generated/ios/swift/HybridNitroLocationTrackingSpec.swift +72 -0
  86. package/nitrogen/generated/ios/swift/HybridNitroLocationTrackingSpec_cxx.swift +362 -0
  87. package/nitrogen/generated/ios/swift/LocationConfig.swift +69 -0
  88. package/nitrogen/generated/ios/swift/LocationData.swift +59 -0
  89. package/nitrogen/generated/shared/c++/AccuracyLevel.hpp +80 -0
  90. package/nitrogen/generated/shared/c++/ConnectionConfig.hpp +107 -0
  91. package/nitrogen/generated/shared/c++/ConnectionState.hpp +80 -0
  92. package/nitrogen/generated/shared/c++/HybridNitroLocationTrackingSpec.cpp +38 -0
  93. package/nitrogen/generated/shared/c++/HybridNitroLocationTrackingSpec.hpp +92 -0
  94. package/nitrogen/generated/shared/c++/LocationConfig.hpp +117 -0
  95. package/nitrogen/generated/shared/c++/LocationData.hpp +107 -0
  96. package/package.json +174 -0
  97. package/src/LocationSmoother.ts +46 -0
  98. package/src/NitroLocationTracking.nitro.ts +79 -0
  99. package/src/bearing.ts +22 -0
  100. package/src/db.ts +232 -0
  101. 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
@@ -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
+ }
@@ -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
+ }