react-native-nitro-cookies 1.0.4 → 1.2.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 (28) hide show
  1. package/android/src/main/cpp/cpp-adapter.cpp +4 -1
  2. package/android/src/main/java/com/margelo/nitro/nitrocookies/NitroCookies.kt +69 -0
  3. package/ios/NitroCookies.swift +101 -0
  4. package/lib/module/index.js +96 -0
  5. package/lib/module/index.js.map +1 -1
  6. package/lib/typescript/src/NitroCookies.nitro.d.ts +48 -0
  7. package/lib/typescript/src/NitroCookies.nitro.d.ts.map +1 -1
  8. package/lib/typescript/src/index.d.ts +88 -0
  9. package/lib/typescript/src/index.d.ts.map +1 -1
  10. package/nitrogen/generated/android/c++/JCookie.hpp +1 -1
  11. package/nitrogen/generated/android/c++/JHybridNitroCookiesSpec.cpp +107 -53
  12. package/nitrogen/generated/android/c++/JHybridNitroCookiesSpec.hpp +23 -22
  13. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrocookies/Cookie.kt +27 -0
  14. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrocookies/HybridNitroCookiesSpec.kt +31 -18
  15. package/nitrogen/generated/android/nitrocookiesOnLoad.cpp +26 -16
  16. package/nitrogen/generated/android/nitrocookiesOnLoad.hpp +13 -4
  17. package/nitrogen/generated/ios/NitroCookies+autolinking.rb +2 -0
  18. package/nitrogen/generated/ios/NitroCookies-Swift-Cxx-Bridge.cpp +8 -0
  19. package/nitrogen/generated/ios/NitroCookies-Swift-Cxx-Bridge.hpp +52 -0
  20. package/nitrogen/generated/ios/c++/HybridNitroCookiesSpecSwift.hpp +32 -0
  21. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
  22. package/nitrogen/generated/ios/swift/HybridNitroCookiesSpec.swift +4 -0
  23. package/nitrogen/generated/ios/swift/HybridNitroCookiesSpec_cxx.swift +76 -0
  24. package/nitrogen/generated/shared/c++/HybridNitroCookiesSpec.cpp +4 -0
  25. package/nitrogen/generated/shared/c++/HybridNitroCookiesSpec.hpp +4 -0
  26. package/package.json +9 -8
  27. package/src/NitroCookies.nitro.ts +56 -0
  28. package/src/index.tsx +104 -0
@@ -21,37 +21,31 @@ namespace margelo::nitro::nitrocookies { struct Cookie; }
21
21
 
22
22
  namespace margelo::nitro::nitrocookies {
23
23
 
24
- jni::local_ref<JHybridNitroCookiesSpec::jhybriddata> JHybridNitroCookiesSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
25
- return makeCxxInstance(jThis);
26
- }
27
-
28
- void JHybridNitroCookiesSpec::registerNatives() {
29
- registerHybrid({
30
- makeNativeMethod("initHybrid", JHybridNitroCookiesSpec::initHybrid),
31
- });
24
+ std::shared_ptr<JHybridNitroCookiesSpec> JHybridNitroCookiesSpec::JavaPart::getJHybridNitroCookiesSpec() {
25
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
26
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridNitroCookiesSpec>(hybridObject);
27
+ if (castHybridObject == nullptr) [[unlikely]] {
28
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridNitroCookiesSpec!");
29
+ }
30
+ return castHybridObject;
32
31
  }
33
32
 
34
- size_t JHybridNitroCookiesSpec::getExternalMemorySize() noexcept {
35
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
36
- return method(_javaPart);
33
+ jni::local_ref<JHybridNitroCookiesSpec::CxxPart::jhybriddata> JHybridNitroCookiesSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
34
+ return makeCxxInstance(jThis);
37
35
  }
38
36
 
39
- bool JHybridNitroCookiesSpec::equals(const std::shared_ptr<HybridObject>& other) {
40
- if (auto otherCast = std::dynamic_pointer_cast<JHybridNitroCookiesSpec>(other)) {
41
- return _javaPart == otherCast->_javaPart;
37
+ std::shared_ptr<JHybridObject> JHybridNitroCookiesSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
38
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridNitroCookiesSpec::JavaPart>(javaPart);
39
+ if (castJavaPart == nullptr) [[unlikely]] {
40
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridNitroCookiesSpec::JavaPart!");
42
41
  }
43
- return false;
44
- }
45
-
46
- void JHybridNitroCookiesSpec::dispose() noexcept {
47
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
48
- method(_javaPart);
42
+ return std::make_shared<JHybridNitroCookiesSpec>(castJavaPart);
49
43
  }
50
44
 
51
- std::string JHybridNitroCookiesSpec::toString() {
52
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
53
- auto javaString = method(_javaPart);
54
- return javaString->toStdString();
45
+ void JHybridNitroCookiesSpec::CxxPart::registerNatives() {
46
+ registerHybrid({
47
+ makeNativeMethod("initHybrid", JHybridNitroCookiesSpec::CxxPart::initHybrid),
48
+ });
55
49
  }
56
50
 
57
51
  // Properties
@@ -59,36 +53,55 @@ namespace margelo::nitro::nitrocookies {
59
53
 
60
54
  // Methods
61
55
  std::vector<Cookie> JHybridNitroCookiesSpec::getSync(const std::string& url) {
62
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JCookie>>(jni::alias_ref<jni::JString> /* url */)>("getSync");
56
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JCookie>>(jni::alias_ref<jni::JString> /* url */)>("getSync");
63
57
  auto __result = method(_javaPart, jni::make_jstring(url));
64
- return [&]() {
65
- size_t __size = __result->size();
58
+ return [&](auto&& __input) {
59
+ size_t __size = __input->size();
66
60
  std::vector<Cookie> __vector;
67
61
  __vector.reserve(__size);
68
62
  for (size_t __i = 0; __i < __size; __i++) {
69
- auto __element = __result->getElement(__i);
63
+ auto __element = __input->getElement(__i);
70
64
  __vector.push_back(__element->toCpp());
71
65
  }
72
66
  return __vector;
73
- }();
67
+ }(__result);
74
68
  }
75
69
  bool JHybridNitroCookiesSpec::setSync(const std::string& url, const Cookie& cookie) {
76
- static const auto method = javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<JCookie> /* cookie */)>("setSync");
70
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<JCookie> /* cookie */)>("setSync");
77
71
  auto __result = method(_javaPart, jni::make_jstring(url), JCookie::fromCpp(cookie));
78
72
  return static_cast<bool>(__result);
79
73
  }
80
74
  bool JHybridNitroCookiesSpec::setFromResponseSync(const std::string& url, const std::string& value) {
81
- static const auto method = javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JString> /* value */)>("setFromResponseSync");
75
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JString> /* value */)>("setFromResponseSync");
82
76
  auto __result = method(_javaPart, jni::make_jstring(url), jni::make_jstring(value));
83
77
  return static_cast<bool>(__result);
84
78
  }
85
79
  bool JHybridNitroCookiesSpec::clearByNameSync(const std::string& url, const std::string& name) {
86
- static const auto method = javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JString> /* name */)>("clearByNameSync");
80
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JString> /* name */)>("clearByNameSync");
87
81
  auto __result = method(_javaPart, jni::make_jstring(url), jni::make_jstring(name));
88
82
  return static_cast<bool>(__result);
89
83
  }
84
+ std::string JHybridNitroCookiesSpec::getCookieHeaderSync(const std::string& url) {
85
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>(jni::alias_ref<jni::JString> /* url */)>("getCookieHeaderSync");
86
+ auto __result = method(_javaPart, jni::make_jstring(url));
87
+ return __result->toStdString();
88
+ }
89
+ bool JHybridNitroCookiesSpec::setManySync(const std::string& url, const std::vector<Cookie>& cookies) {
90
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JArrayClass<JCookie>> /* cookies */)>("setManySync");
91
+ auto __result = method(_javaPart, jni::make_jstring(url), [&](auto&& __input) {
92
+ size_t __size = __input.size();
93
+ jni::local_ref<jni::JArrayClass<JCookie>> __array = jni::JArrayClass<JCookie>::newArray(__size);
94
+ for (size_t __i = 0; __i < __size; __i++) {
95
+ const auto& __element = __input[__i];
96
+ auto __elementJni = JCookie::fromCpp(__element);
97
+ __array->setElement(__i, *__elementJni);
98
+ }
99
+ return __array;
100
+ }(cookies));
101
+ return static_cast<bool>(__result);
102
+ }
90
103
  std::shared_ptr<Promise<bool>> JHybridNitroCookiesSpec::set(const std::string& url, const Cookie& cookie, std::optional<bool> useWebKit) {
91
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<JCookie> /* cookie */, jni::alias_ref<jni::JBoolean> /* useWebKit */)>("set");
104
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<JCookie> /* cookie */, jni::alias_ref<jni::JBoolean> /* useWebKit */)>("set");
92
105
  auto __result = method(_javaPart, jni::make_jstring(url), JCookie::fromCpp(cookie), useWebKit.has_value() ? jni::JBoolean::valueOf(useWebKit.value()) : nullptr);
93
106
  return [&]() {
94
107
  auto __promise = Promise<bool>::create();
@@ -103,23 +116,64 @@ namespace margelo::nitro::nitrocookies {
103
116
  return __promise;
104
117
  }();
105
118
  }
119
+ std::shared_ptr<Promise<bool>> JHybridNitroCookiesSpec::setMany(const std::string& url, const std::vector<Cookie>& cookies, std::optional<bool> useWebKit) {
120
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JArrayClass<JCookie>> /* cookies */, jni::alias_ref<jni::JBoolean> /* useWebKit */)>("setMany");
121
+ auto __result = method(_javaPart, jni::make_jstring(url), [&](auto&& __input) {
122
+ size_t __size = __input.size();
123
+ jni::local_ref<jni::JArrayClass<JCookie>> __array = jni::JArrayClass<JCookie>::newArray(__size);
124
+ for (size_t __i = 0; __i < __size; __i++) {
125
+ const auto& __element = __input[__i];
126
+ auto __elementJni = JCookie::fromCpp(__element);
127
+ __array->setElement(__i, *__elementJni);
128
+ }
129
+ return __array;
130
+ }(cookies), useWebKit.has_value() ? jni::JBoolean::valueOf(useWebKit.value()) : nullptr);
131
+ return [&]() {
132
+ auto __promise = Promise<bool>::create();
133
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
134
+ auto __result = jni::static_ref_cast<jni::JBoolean>(__boxedResult);
135
+ __promise->resolve(static_cast<bool>(__result->value()));
136
+ });
137
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
138
+ jni::JniException __jniError(__throwable);
139
+ __promise->reject(std::make_exception_ptr(__jniError));
140
+ });
141
+ return __promise;
142
+ }();
143
+ }
144
+ std::shared_ptr<Promise<std::string>> JHybridNitroCookiesSpec::getCookieHeader(const std::string& url, std::optional<bool> useWebKit) {
145
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JBoolean> /* useWebKit */)>("getCookieHeader");
146
+ auto __result = method(_javaPart, jni::make_jstring(url), useWebKit.has_value() ? jni::JBoolean::valueOf(useWebKit.value()) : nullptr);
147
+ return [&]() {
148
+ auto __promise = Promise<std::string>::create();
149
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
150
+ auto __result = jni::static_ref_cast<jni::JString>(__boxedResult);
151
+ __promise->resolve(__result->toStdString());
152
+ });
153
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
154
+ jni::JniException __jniError(__throwable);
155
+ __promise->reject(std::make_exception_ptr(__jniError));
156
+ });
157
+ return __promise;
158
+ }();
159
+ }
106
160
  std::shared_ptr<Promise<std::vector<Cookie>>> JHybridNitroCookiesSpec::get(const std::string& url, std::optional<bool> useWebKit) {
107
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JBoolean> /* useWebKit */)>("get");
161
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JBoolean> /* useWebKit */)>("get");
108
162
  auto __result = method(_javaPart, jni::make_jstring(url), useWebKit.has_value() ? jni::JBoolean::valueOf(useWebKit.value()) : nullptr);
109
163
  return [&]() {
110
164
  auto __promise = Promise<std::vector<Cookie>>::create();
111
165
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
112
166
  auto __result = jni::static_ref_cast<jni::JArrayClass<JCookie>>(__boxedResult);
113
- __promise->resolve([&]() {
114
- size_t __size = __result->size();
167
+ __promise->resolve([&](auto&& __input) {
168
+ size_t __size = __input->size();
115
169
  std::vector<Cookie> __vector;
116
170
  __vector.reserve(__size);
117
171
  for (size_t __i = 0; __i < __size; __i++) {
118
- auto __element = __result->getElement(__i);
172
+ auto __element = __input->getElement(__i);
119
173
  __vector.push_back(__element->toCpp());
120
174
  }
121
175
  return __vector;
122
- }());
176
+ }(__result));
123
177
  });
124
178
  __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
125
179
  jni::JniException __jniError(__throwable);
@@ -129,7 +183,7 @@ namespace margelo::nitro::nitrocookies {
129
183
  }();
130
184
  }
131
185
  std::shared_ptr<Promise<bool>> JHybridNitroCookiesSpec::clearAll(std::optional<bool> useWebKit) {
132
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JBoolean> /* useWebKit */)>("clearAll");
186
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JBoolean> /* useWebKit */)>("clearAll");
133
187
  auto __result = method(_javaPart, useWebKit.has_value() ? jni::JBoolean::valueOf(useWebKit.value()) : nullptr);
134
188
  return [&]() {
135
189
  auto __promise = Promise<bool>::create();
@@ -145,7 +199,7 @@ namespace margelo::nitro::nitrocookies {
145
199
  }();
146
200
  }
147
201
  std::shared_ptr<Promise<bool>> JHybridNitroCookiesSpec::setFromResponse(const std::string& url, const std::string& value) {
148
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JString> /* value */)>("setFromResponse");
202
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JString> /* value */)>("setFromResponse");
149
203
  auto __result = method(_javaPart, jni::make_jstring(url), jni::make_jstring(value));
150
204
  return [&]() {
151
205
  auto __promise = Promise<bool>::create();
@@ -161,22 +215,22 @@ namespace margelo::nitro::nitrocookies {
161
215
  }();
162
216
  }
163
217
  std::shared_ptr<Promise<std::vector<Cookie>>> JHybridNitroCookiesSpec::getFromResponse(const std::string& url) {
164
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */)>("getFromResponse");
218
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */)>("getFromResponse");
165
219
  auto __result = method(_javaPart, jni::make_jstring(url));
166
220
  return [&]() {
167
221
  auto __promise = Promise<std::vector<Cookie>>::create();
168
222
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
169
223
  auto __result = jni::static_ref_cast<jni::JArrayClass<JCookie>>(__boxedResult);
170
- __promise->resolve([&]() {
171
- size_t __size = __result->size();
224
+ __promise->resolve([&](auto&& __input) {
225
+ size_t __size = __input->size();
172
226
  std::vector<Cookie> __vector;
173
227
  __vector.reserve(__size);
174
228
  for (size_t __i = 0; __i < __size; __i++) {
175
- auto __element = __result->getElement(__i);
229
+ auto __element = __input->getElement(__i);
176
230
  __vector.push_back(__element->toCpp());
177
231
  }
178
232
  return __vector;
179
- }());
233
+ }(__result));
180
234
  });
181
235
  __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
182
236
  jni::JniException __jniError(__throwable);
@@ -186,22 +240,22 @@ namespace margelo::nitro::nitrocookies {
186
240
  }();
187
241
  }
188
242
  std::shared_ptr<Promise<std::vector<Cookie>>> JHybridNitroCookiesSpec::getAll(std::optional<bool> useWebKit) {
189
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JBoolean> /* useWebKit */)>("getAll");
243
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JBoolean> /* useWebKit */)>("getAll");
190
244
  auto __result = method(_javaPart, useWebKit.has_value() ? jni::JBoolean::valueOf(useWebKit.value()) : nullptr);
191
245
  return [&]() {
192
246
  auto __promise = Promise<std::vector<Cookie>>::create();
193
247
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
194
248
  auto __result = jni::static_ref_cast<jni::JArrayClass<JCookie>>(__boxedResult);
195
- __promise->resolve([&]() {
196
- size_t __size = __result->size();
249
+ __promise->resolve([&](auto&& __input) {
250
+ size_t __size = __input->size();
197
251
  std::vector<Cookie> __vector;
198
252
  __vector.reserve(__size);
199
253
  for (size_t __i = 0; __i < __size; __i++) {
200
- auto __element = __result->getElement(__i);
254
+ auto __element = __input->getElement(__i);
201
255
  __vector.push_back(__element->toCpp());
202
256
  }
203
257
  return __vector;
204
- }());
258
+ }(__result));
205
259
  });
206
260
  __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
207
261
  jni::JniException __jniError(__throwable);
@@ -211,7 +265,7 @@ namespace margelo::nitro::nitrocookies {
211
265
  }();
212
266
  }
213
267
  std::shared_ptr<Promise<bool>> JHybridNitroCookiesSpec::clearByName(const std::string& url, const std::string& name, std::optional<bool> useWebKit) {
214
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JBoolean> /* useWebKit */)>("clearByName");
268
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JBoolean> /* useWebKit */)>("clearByName");
215
269
  auto __result = method(_javaPart, jni::make_jstring(url), jni::make_jstring(name), useWebKit.has_value() ? jni::JBoolean::valueOf(useWebKit.value()) : nullptr);
216
270
  return [&]() {
217
271
  auto __promise = Promise<bool>::create();
@@ -227,7 +281,7 @@ namespace margelo::nitro::nitrocookies {
227
281
  }();
228
282
  }
229
283
  std::shared_ptr<Promise<void>> JHybridNitroCookiesSpec::flush() {
230
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("flush");
284
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("flush");
231
285
  auto __result = method(_javaPart);
232
286
  return [&]() {
233
287
  auto __promise = Promise<void>::create();
@@ -242,7 +296,7 @@ namespace margelo::nitro::nitrocookies {
242
296
  }();
243
297
  }
244
298
  std::shared_ptr<Promise<bool>> JHybridNitroCookiesSpec::removeSessionCookies() {
245
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("removeSessionCookies");
299
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("removeSessionCookies");
246
300
  auto __result = method(_javaPart);
247
301
  return [&]() {
248
302
  auto __promise = Promise<bool>::create();
@@ -18,34 +18,33 @@ namespace margelo::nitro::nitrocookies {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridNitroCookiesSpec: public jni::HybridClass<JHybridNitroCookiesSpec, JHybridObject>,
22
- public virtual HybridNitroCookiesSpec {
21
+ class JHybridNitroCookiesSpec: public virtual HybridNitroCookiesSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/nitrocookies/HybridNitroCookiesSpec;";
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 JHybridNitroCookiesSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridNitroCookiesSpec::TAG),
32
- HybridBase(jThis),
33
- _javaPart(jni::make_global(jThis)) {}
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrocookies/HybridNitroCookiesSpec;";
25
+ std::shared_ptr<JHybridNitroCookiesSpec> getJHybridNitroCookiesSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrocookies/HybridNitroCookiesSpec$CxxPart;";
29
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
30
+ static void registerNatives();
31
+ using HybridBase::HybridBase;
32
+ protected:
33
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
34
+ };
34
35
 
35
36
  public:
37
+ explicit JHybridNitroCookiesSpec(const jni::local_ref<JHybridNitroCookiesSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridNitroCookiesSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridNitroCookiesSpec() override {
37
42
  // Hermes GC can destroy JS objects on a non-JNI Thread.
38
43
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
39
44
  }
40
45
 
41
46
  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<JHybridNitroCookiesSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridNitroCookiesSpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -59,7 +58,11 @@ namespace margelo::nitro::nitrocookies {
59
58
  bool setSync(const std::string& url, const Cookie& cookie) override;
60
59
  bool setFromResponseSync(const std::string& url, const std::string& value) override;
61
60
  bool clearByNameSync(const std::string& url, const std::string& name) override;
61
+ std::string getCookieHeaderSync(const std::string& url) override;
62
+ bool setManySync(const std::string& url, const std::vector<Cookie>& cookies) override;
62
63
  std::shared_ptr<Promise<bool>> set(const std::string& url, const Cookie& cookie, std::optional<bool> useWebKit) override;
64
+ std::shared_ptr<Promise<bool>> setMany(const std::string& url, const std::vector<Cookie>& cookies, std::optional<bool> useWebKit) override;
65
+ std::shared_ptr<Promise<std::string>> getCookieHeader(const std::string& url, std::optional<bool> useWebKit) override;
63
66
  std::shared_ptr<Promise<std::vector<Cookie>>> get(const std::string& url, std::optional<bool> useWebKit) override;
64
67
  std::shared_ptr<Promise<bool>> clearAll(std::optional<bool> useWebKit) override;
65
68
  std::shared_ptr<Promise<bool>> setFromResponse(const std::string& url, const std::string& value) override;
@@ -70,9 +73,7 @@ namespace margelo::nitro::nitrocookies {
70
73
  std::shared_ptr<Promise<bool>> removeSessionCookies() override;
71
74
 
72
75
  private:
73
- friend HybridBase;
74
- using HybridBase::HybridBase;
75
- jni::global_ref<JHybridNitroCookiesSpec::javaobject> _javaPart;
76
+ jni::global_ref<JHybridNitroCookiesSpec::JavaPart> _javaPart;
76
77
  };
77
78
 
78
79
  } // namespace margelo::nitro::nitrocookies
@@ -9,6 +9,7 @@ package com.margelo.nitro.nitrocookies
9
9
 
10
10
  import androidx.annotation.Keep
11
11
  import com.facebook.proguard.annotations.DoNotStrip
12
+ import java.util.Objects
12
13
 
13
14
 
14
15
  /**
@@ -44,6 +45,32 @@ data class Cookie(
44
45
  ) {
45
46
  /* primary constructor */
46
47
 
48
+ override fun equals(other: Any?): Boolean {
49
+ if (this === other) return true
50
+ if (other !is Cookie) return false
51
+ return Objects.deepEquals(this.name, other.name)
52
+ && Objects.deepEquals(this.value, other.value)
53
+ && Objects.deepEquals(this.path, other.path)
54
+ && Objects.deepEquals(this.domain, other.domain)
55
+ && Objects.deepEquals(this.version, other.version)
56
+ && Objects.deepEquals(this.expires, other.expires)
57
+ && Objects.deepEquals(this.secure, other.secure)
58
+ && Objects.deepEquals(this.httpOnly, other.httpOnly)
59
+ }
60
+
61
+ override fun hashCode(): Int {
62
+ return arrayOf<Any?>(
63
+ name,
64
+ value,
65
+ path,
66
+ domain,
67
+ version,
68
+ expires,
69
+ secure,
70
+ httpOnly
71
+ ).contentDeepHashCode()
72
+ }
73
+
47
74
  companion object {
48
75
  /**
49
76
  * Constructor called from C++
@@ -25,23 +25,6 @@ import com.margelo.nitro.core.HybridObject
25
25
  "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
26
26
  )
27
27
  abstract class HybridNitroCookiesSpec: HybridObject() {
28
- @DoNotStrip
29
- private var mHybridData: HybridData = initHybrid()
30
-
31
- init {
32
- super.updateNative(mHybridData)
33
- }
34
-
35
- override fun updateNative(hybridData: HybridData) {
36
- mHybridData = hybridData
37
- super.updateNative(hybridData)
38
- }
39
-
40
- // Default implementation of `HybridObject.toString()`
41
- override fun toString(): String {
42
- return "[HybridObject NitroCookies]"
43
- }
44
-
45
28
  // Properties
46
29
 
47
30
 
@@ -62,10 +45,26 @@ abstract class HybridNitroCookiesSpec: HybridObject() {
62
45
  @Keep
63
46
  abstract fun clearByNameSync(url: String, name: String): Boolean
64
47
 
48
+ @DoNotStrip
49
+ @Keep
50
+ abstract fun getCookieHeaderSync(url: String): String
51
+
52
+ @DoNotStrip
53
+ @Keep
54
+ abstract fun setManySync(url: String, cookies: Array<Cookie>): Boolean
55
+
65
56
  @DoNotStrip
66
57
  @Keep
67
58
  abstract fun set(url: String, cookie: Cookie, useWebKit: Boolean?): Promise<Boolean>
68
59
 
60
+ @DoNotStrip
61
+ @Keep
62
+ abstract fun setMany(url: String, cookies: Array<Cookie>, useWebKit: Boolean?): Promise<Boolean>
63
+
64
+ @DoNotStrip
65
+ @Keep
66
+ abstract fun getCookieHeader(url: String, useWebKit: Boolean?): Promise<String>
67
+
69
68
  @DoNotStrip
70
69
  @Keep
71
70
  abstract fun get(url: String, useWebKit: Boolean?): Promise<Array<Cookie>>
@@ -98,7 +97,21 @@ abstract class HybridNitroCookiesSpec: HybridObject() {
98
97
  @Keep
99
98
  abstract fun removeSessionCookies(): Promise<Boolean>
100
99
 
101
- private external fun initHybrid(): HybridData
100
+ // Default implementation of `HybridObject.toString()`
101
+ override fun toString(): String {
102
+ return "[HybridObject NitroCookies]"
103
+ }
104
+
105
+ // C++ backing class
106
+ @DoNotStrip
107
+ @Keep
108
+ protected open class CxxPart(javaPart: HybridNitroCookiesSpec): HybridObject.CxxPart(javaPart) {
109
+ // C++ JHybridNitroCookiesSpec::CxxPart::initHybrid(...)
110
+ external override fun initHybrid(): HybridData
111
+ }
112
+ override fun createCxxPart(): CxxPart {
113
+ return CxxPart(this)
114
+ }
102
115
 
103
116
  companion object {
104
117
  protected const val TAG = "HybridNitroCookiesSpec"
@@ -21,24 +21,34 @@
21
21
  namespace margelo::nitro::nitrocookies {
22
22
 
23
23
  int initialize(JavaVM* vm) {
24
+ return facebook::jni::initialize(vm, []() {
25
+ ::margelo::nitro::nitrocookies::registerAllNatives();
26
+ });
27
+ }
28
+
29
+ struct JHybridNitroCookiesSpecImpl: public jni::JavaClass<JHybridNitroCookiesSpecImpl, JHybridNitroCookiesSpec::JavaPart> {
30
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitrocookies/NitroCookies;";
31
+ static std::shared_ptr<JHybridNitroCookiesSpec> create() {
32
+ static const auto constructorFn = javaClassStatic()->getConstructor<JHybridNitroCookiesSpecImpl::javaobject()>();
33
+ jni::local_ref<JHybridNitroCookiesSpec::JavaPart> javaPart = javaClassStatic()->newObject(constructorFn);
34
+ return javaPart->getJHybridNitroCookiesSpec();
35
+ }
36
+ };
37
+
38
+ void registerAllNatives() {
24
39
  using namespace margelo::nitro;
25
40
  using namespace margelo::nitro::nitrocookies;
26
- using namespace facebook;
27
-
28
- return facebook::jni::initialize(vm, [] {
29
- // Register native JNI methods
30
- margelo::nitro::nitrocookies::JHybridNitroCookiesSpec::registerNatives();
31
-
32
- // Register Nitro Hybrid Objects
33
- HybridObjectRegistry::registerHybridObjectConstructor(
34
- "NitroCookies",
35
- []() -> std::shared_ptr<HybridObject> {
36
- static DefaultConstructableObject<JHybridNitroCookiesSpec::javaobject> object("com/margelo/nitro/nitrocookies/NitroCookies");
37
- auto instance = object.create();
38
- return instance->cthis()->shared();
39
- }
40
- );
41
- });
41
+
42
+ // Register native JNI methods
43
+ margelo::nitro::nitrocookies::JHybridNitroCookiesSpec::CxxPart::registerNatives();
44
+
45
+ // Register Nitro Hybrid Objects
46
+ HybridObjectRegistry::registerHybridObjectConstructor(
47
+ "NitroCookies",
48
+ []() -> std::shared_ptr<HybridObject> {
49
+ return JHybridNitroCookiesSpecImpl::create();
50
+ }
51
+ );
42
52
  }
43
53
 
44
54
  } // namespace margelo::nitro::nitrocookies
@@ -6,20 +6,29 @@
6
6
  ///
7
7
 
8
8
  #include <jni.h>
9
+ #include <functional>
9
10
  #include <NitroModules/NitroDefines.hpp>
10
11
 
11
12
  namespace margelo::nitro::nitrocookies {
12
13
 
14
+ [[deprecated("Use registerNatives() instead.")]]
15
+ int initialize(JavaVM* vm);
16
+
13
17
  /**
14
- * Initializes the native (C++) part of nitrocookies, and autolinks all Hybrid Objects.
15
- * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`).
18
+ * Register the native (C++) part of nitrocookies, and autolinks all Hybrid Objects.
19
+ * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`),
20
+ * inside a `facebook::jni::initialize(vm, ...)` call.
16
21
  * Example:
17
22
  * ```cpp (cpp-adapter.cpp)
18
23
  * JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
19
- * return margelo::nitro::nitrocookies::initialize(vm);
24
+ * return facebook::jni::initialize(vm, []() {
25
+ * // register all nitrocookies HybridObjects
26
+ * margelo::nitro::nitrocookies::registerNatives();
27
+ * // any other custom registrations go here.
28
+ * });
20
29
  * }
21
30
  * ```
22
31
  */
23
- int initialize(JavaVM* vm);
32
+ void registerAllNatives();
24
33
 
25
34
  } // namespace margelo::nitro::nitrocookies
@@ -56,5 +56,7 @@ def add_nitrogen_files(spec)
56
56
  "SWIFT_OBJC_INTEROP_MODE" => "objcxx",
57
57
  # Enables stricter modular headers
58
58
  "DEFINES_MODULE" => "YES",
59
+ # Disable auto-generated ObjC header for Swift (Static linkage on Xcode 26.4 breaks here)
60
+ "SWIFT_INSTALL_OBJC_HEADER" => "NO",
59
61
  })
60
62
  end
@@ -30,6 +30,14 @@ namespace margelo::nitro::nitrocookies::bridge::swift {
30
30
  };
31
31
  }
32
32
 
33
+ // pragma MARK: std::function<void(const std::string& /* result */)>
34
+ Func_void_std__string create_Func_void_std__string(void* NON_NULL swiftClosureWrapper) noexcept {
35
+ auto swiftClosure = NitroCookies::Func_void_std__string::fromUnsafe(swiftClosureWrapper);
36
+ return [swiftClosure = std::move(swiftClosure)](const std::string& result) mutable -> void {
37
+ swiftClosure.call(result);
38
+ };
39
+ }
40
+
33
41
  // pragma MARK: std::function<void(const std::vector<Cookie>& /* result */)>
34
42
  Func_void_std__vector_Cookie_ create_Func_void_std__vector_Cookie_(void* NON_NULL swiftClosureWrapper) noexcept {
35
43
  auto swiftClosure = NitroCookies::Func_void_std__vector_Cookie_::fromUnsafe(swiftClosureWrapper);