@onekeyfe/react-native-app-update 1.1.21

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 (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +36 -0
  3. package/ReactNativeAppUpdate.podspec +30 -0
  4. package/android/CMakeLists.txt +24 -0
  5. package/android/build.gradle +141 -0
  6. package/android/gradle.properties +4 -0
  7. package/android/src/main/AndroidManifest.xml +17 -0
  8. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  9. package/android/src/main/java/com/margelo/nitro/reactnativeappupdate/ReactNativeAppUpdate.kt +819 -0
  10. package/android/src/main/java/com/margelo/nitro/reactnativeappupdate/ReactNativeAppUpdatePackage.kt +24 -0
  11. package/android/src/main/res/xml/app_update_file_paths.xml +4 -0
  12. package/ios/ReactNativeAppUpdate.swift +41 -0
  13. package/lib/module/ReactNativeAppUpdate.nitro.js +4 -0
  14. package/lib/module/ReactNativeAppUpdate.nitro.js.map +1 -0
  15. package/lib/module/index.js +6 -0
  16. package/lib/module/index.js.map +1 -0
  17. package/lib/module/package.json +1 -0
  18. package/lib/typescript/package.json +1 -0
  19. package/lib/typescript/src/ReactNativeAppUpdate.nitro.d.ts +28 -0
  20. package/lib/typescript/src/ReactNativeAppUpdate.nitro.d.ts.map +1 -0
  21. package/lib/typescript/src/index.d.ts +4 -0
  22. package/lib/typescript/src/index.d.ts.map +1 -0
  23. package/nitro.json +17 -0
  24. package/nitrogen/generated/android/c++/JAppUpdateDownloadParams.hpp +65 -0
  25. package/nitrogen/generated/android/c++/JAppUpdateFileParams.hpp +57 -0
  26. package/nitrogen/generated/android/c++/JDownloadEvent.hpp +65 -0
  27. package/nitrogen/generated/android/c++/JFunc_void_DownloadEvent.hpp +78 -0
  28. package/nitrogen/generated/android/c++/JHybridReactNativeAppUpdateSpec.cpp +162 -0
  29. package/nitrogen/generated/android/c++/JHybridReactNativeAppUpdateSpec.hpp +72 -0
  30. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativeappupdate/AppUpdateDownloadParams.kt +44 -0
  31. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativeappupdate/AppUpdateFileParams.kt +38 -0
  32. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativeappupdate/DownloadEvent.kt +44 -0
  33. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativeappupdate/Func_void_DownloadEvent.kt +80 -0
  34. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativeappupdate/HybridReactNativeAppUpdateSpec.kt +91 -0
  35. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativeappupdate/reactnativeappupdateOnLoad.kt +35 -0
  36. package/nitrogen/generated/android/reactnativeappupdate+autolinking.cmake +81 -0
  37. package/nitrogen/generated/android/reactnativeappupdate+autolinking.gradle +27 -0
  38. package/nitrogen/generated/android/reactnativeappupdateOnLoad.cpp +46 -0
  39. package/nitrogen/generated/android/reactnativeappupdateOnLoad.hpp +25 -0
  40. package/nitrogen/generated/ios/ReactNativeAppUpdate+autolinking.rb +60 -0
  41. package/nitrogen/generated/ios/ReactNativeAppUpdate-Swift-Cxx-Bridge.cpp +57 -0
  42. package/nitrogen/generated/ios/ReactNativeAppUpdate-Swift-Cxx-Bridge.hpp +154 -0
  43. package/nitrogen/generated/ios/ReactNativeAppUpdate-Swift-Cxx-Umbrella.hpp +55 -0
  44. package/nitrogen/generated/ios/ReactNativeAppUpdateAutolinking.mm +33 -0
  45. package/nitrogen/generated/ios/ReactNativeAppUpdateAutolinking.swift +25 -0
  46. package/nitrogen/generated/ios/c++/HybridReactNativeAppUpdateSpecSwift.cpp +11 -0
  47. package/nitrogen/generated/ios/c++/HybridReactNativeAppUpdateSpecSwift.hpp +140 -0
  48. package/nitrogen/generated/ios/swift/AppUpdateDownloadParams.swift +58 -0
  49. package/nitrogen/generated/ios/swift/AppUpdateFileParams.swift +36 -0
  50. package/nitrogen/generated/ios/swift/DownloadEvent.swift +58 -0
  51. package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
  52. package/nitrogen/generated/ios/swift/Func_void_DownloadEvent.swift +47 -0
  53. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  54. package/nitrogen/generated/ios/swift/HybridReactNativeAppUpdateSpec.swift +63 -0
  55. package/nitrogen/generated/ios/swift/HybridReactNativeAppUpdateSpec_cxx.swift +261 -0
  56. package/nitrogen/generated/shared/c++/AppUpdateDownloadParams.hpp +83 -0
  57. package/nitrogen/generated/shared/c++/AppUpdateFileParams.hpp +75 -0
  58. package/nitrogen/generated/shared/c++/DownloadEvent.hpp +83 -0
  59. package/nitrogen/generated/shared/c++/HybridReactNativeAppUpdateSpec.cpp +28 -0
  60. package/nitrogen/generated/shared/c++/HybridReactNativeAppUpdateSpec.hpp +78 -0
  61. package/package.json +169 -0
  62. package/src/ReactNativeAppUpdate.nitro.ts +30 -0
  63. package/src/index.tsx +8 -0
@@ -0,0 +1,24 @@
1
+ package com.margelo.nitro.reactnativeappupdate
2
+
3
+ import com.facebook.react.BaseReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.module.model.ReactModuleInfoProvider
7
+
8
+ class ReactNativeAppUpdatePackage : BaseReactPackage() {
9
+ override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
10
+ return null
11
+ }
12
+
13
+ override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
14
+ return ReactModuleInfoProvider { HashMap() }
15
+ }
16
+
17
+ companion object {
18
+ init {
19
+ System.loadLibrary("reactnativeappupdate")
20
+ }
21
+ }
22
+ }
23
+
24
+
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <paths>
3
+ <cache-path name="apks" path="apks/" />
4
+ </paths>
@@ -0,0 +1,41 @@
1
+ import NitroModules
2
+ import ReactNativeNativeLogger
3
+
4
+ class ReactNativeAppUpdate: HybridReactNativeAppUpdateSpec {
5
+
6
+ func downloadAPK(params: AppUpdateDownloadParams) throws -> Promise<Void> {
7
+ OneKeyLog.debug("AppUpdate", "downloadAPK not available on iOS")
8
+ return Promise.resolved(withResult: ())
9
+ }
10
+
11
+ func downloadASC(params: AppUpdateFileParams) throws -> Promise<Void> {
12
+ OneKeyLog.debug("AppUpdate", "downloadASC not available on iOS")
13
+ return Promise.resolved(withResult: ())
14
+ }
15
+
16
+ func verifyASC(params: AppUpdateFileParams) throws -> Promise<Void> {
17
+ OneKeyLog.debug("AppUpdate", "verifyASC not available on iOS")
18
+ return Promise.resolved(withResult: ())
19
+ }
20
+
21
+ func verifyAPK(params: AppUpdateFileParams) throws -> Promise<Void> {
22
+ OneKeyLog.debug("AppUpdate", "verifyAPK not available on iOS")
23
+ return Promise.resolved(withResult: ())
24
+ }
25
+
26
+ func installAPK(params: AppUpdateFileParams) throws -> Promise<Void> {
27
+ OneKeyLog.debug("AppUpdate", "installAPK not available on iOS")
28
+ return Promise.resolved(withResult: ())
29
+ }
30
+
31
+ func clearCache() throws -> Promise<Void> {
32
+ return Promise.resolved(withResult: ())
33
+ }
34
+
35
+ func addDownloadListener(callback: @escaping (DownloadEvent) -> Void) throws -> Double {
36
+ return 0
37
+ }
38
+
39
+ func removeDownloadListener(id: Double) throws {
40
+ }
41
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=ReactNativeAppUpdate.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["ReactNativeAppUpdate.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ import { NitroModules } from 'react-native-nitro-modules';
4
+ const ReactNativeAppUpdateHybridObject = NitroModules.createHybridObject('ReactNativeAppUpdate');
5
+ export const ReactNativeAppUpdate = ReactNativeAppUpdateHybridObject;
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NitroModules","ReactNativeAppUpdateHybridObject","createHybridObject","ReactNativeAppUpdate"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAGzD,MAAMC,gCAAgC,GACpCD,YAAY,CAACE,kBAAkB,CAA2B,sBAAsB,CAAC;AAEnF,OAAO,MAAMC,oBAAoB,GAAGF,gCAAgC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,28 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules';
2
+ export interface AppUpdateDownloadParams {
3
+ downloadUrl: string;
4
+ notificationTitle: string;
5
+ fileSize: number;
6
+ }
7
+ export interface AppUpdateFileParams {
8
+ downloadUrl: string;
9
+ }
10
+ export interface DownloadEvent {
11
+ type: string;
12
+ progress: number;
13
+ message: string;
14
+ }
15
+ export interface ReactNativeAppUpdate extends HybridObject<{
16
+ ios: 'swift';
17
+ android: 'kotlin';
18
+ }> {
19
+ downloadAPK(params: AppUpdateDownloadParams): Promise<void>;
20
+ downloadASC(params: AppUpdateFileParams): Promise<void>;
21
+ verifyASC(params: AppUpdateFileParams): Promise<void>;
22
+ verifyAPK(params: AppUpdateFileParams): Promise<void>;
23
+ installAPK(params: AppUpdateFileParams): Promise<void>;
24
+ clearCache(): Promise<void>;
25
+ addDownloadListener(callback: (event: DownloadEvent) => void): number;
26
+ removeDownloadListener(id: number): void;
27
+ }
28
+ //# sourceMappingURL=ReactNativeAppUpdate.nitro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactNativeAppUpdate.nitro.d.ts","sourceRoot":"","sources":["../../../src/ReactNativeAppUpdate.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACzD,WAAW,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,WAAW,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,SAAS,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,SAAS,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,mBAAmB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,CAAC;IACtE,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C"}
@@ -0,0 +1,4 @@
1
+ import type { ReactNativeAppUpdate as ReactNativeAppUpdateType } from './ReactNativeAppUpdate.nitro';
2
+ export declare const ReactNativeAppUpdate: ReactNativeAppUpdateType;
3
+ export type * from './ReactNativeAppUpdate.nitro';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,IAAI,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAKrG,eAAO,MAAM,oBAAoB,0BAAmC,CAAC;AACrE,mBAAmB,8BAA8B,CAAC"}
package/nitro.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "cxxNamespace": ["reactnativeappupdate"],
3
+ "ios": {
4
+ "iosModuleName": "ReactNativeAppUpdate"
5
+ },
6
+ "android": {
7
+ "androidNamespace": ["reactnativeappupdate"],
8
+ "androidCxxLibName": "reactnativeappupdate"
9
+ },
10
+ "autolinking": {
11
+ "ReactNativeAppUpdate": {
12
+ "swift": "ReactNativeAppUpdate",
13
+ "kotlin": "ReactNativeAppUpdate"
14
+ }
15
+ },
16
+ "ignorePaths": ["node_modules"]
17
+ }
@@ -0,0 +1,65 @@
1
+ ///
2
+ /// JAppUpdateDownloadParams.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "AppUpdateDownloadParams.hpp"
12
+
13
+ #include <string>
14
+
15
+ namespace margelo::nitro::reactnativeappupdate {
16
+
17
+ using namespace facebook;
18
+
19
+ /**
20
+ * The C++ JNI bridge between the C++ struct "AppUpdateDownloadParams" and the the Kotlin data class "AppUpdateDownloadParams".
21
+ */
22
+ struct JAppUpdateDownloadParams final: public jni::JavaClass<JAppUpdateDownloadParams> {
23
+ public:
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativeappupdate/AppUpdateDownloadParams;";
25
+
26
+ public:
27
+ /**
28
+ * Convert this Java/Kotlin-based struct to the C++ struct AppUpdateDownloadParams by copying all values to C++.
29
+ */
30
+ [[maybe_unused]]
31
+ [[nodiscard]]
32
+ AppUpdateDownloadParams toCpp() const {
33
+ static const auto clazz = javaClassStatic();
34
+ static const auto fieldDownloadUrl = clazz->getField<jni::JString>("downloadUrl");
35
+ jni::local_ref<jni::JString> downloadUrl = this->getFieldValue(fieldDownloadUrl);
36
+ static const auto fieldNotificationTitle = clazz->getField<jni::JString>("notificationTitle");
37
+ jni::local_ref<jni::JString> notificationTitle = this->getFieldValue(fieldNotificationTitle);
38
+ static const auto fieldFileSize = clazz->getField<double>("fileSize");
39
+ double fileSize = this->getFieldValue(fieldFileSize);
40
+ return AppUpdateDownloadParams(
41
+ downloadUrl->toStdString(),
42
+ notificationTitle->toStdString(),
43
+ fileSize
44
+ );
45
+ }
46
+
47
+ public:
48
+ /**
49
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
50
+ */
51
+ [[maybe_unused]]
52
+ static jni::local_ref<JAppUpdateDownloadParams::javaobject> fromCpp(const AppUpdateDownloadParams& value) {
53
+ using JSignature = JAppUpdateDownloadParams(jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, double);
54
+ static const auto clazz = javaClassStatic();
55
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
56
+ return create(
57
+ clazz,
58
+ jni::make_jstring(value.downloadUrl),
59
+ jni::make_jstring(value.notificationTitle),
60
+ value.fileSize
61
+ );
62
+ }
63
+ };
64
+
65
+ } // namespace margelo::nitro::reactnativeappupdate
@@ -0,0 +1,57 @@
1
+ ///
2
+ /// JAppUpdateFileParams.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "AppUpdateFileParams.hpp"
12
+
13
+ #include <string>
14
+
15
+ namespace margelo::nitro::reactnativeappupdate {
16
+
17
+ using namespace facebook;
18
+
19
+ /**
20
+ * The C++ JNI bridge between the C++ struct "AppUpdateFileParams" and the the Kotlin data class "AppUpdateFileParams".
21
+ */
22
+ struct JAppUpdateFileParams final: public jni::JavaClass<JAppUpdateFileParams> {
23
+ public:
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativeappupdate/AppUpdateFileParams;";
25
+
26
+ public:
27
+ /**
28
+ * Convert this Java/Kotlin-based struct to the C++ struct AppUpdateFileParams by copying all values to C++.
29
+ */
30
+ [[maybe_unused]]
31
+ [[nodiscard]]
32
+ AppUpdateFileParams toCpp() const {
33
+ static const auto clazz = javaClassStatic();
34
+ static const auto fieldDownloadUrl = clazz->getField<jni::JString>("downloadUrl");
35
+ jni::local_ref<jni::JString> downloadUrl = this->getFieldValue(fieldDownloadUrl);
36
+ return AppUpdateFileParams(
37
+ downloadUrl->toStdString()
38
+ );
39
+ }
40
+
41
+ public:
42
+ /**
43
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
44
+ */
45
+ [[maybe_unused]]
46
+ static jni::local_ref<JAppUpdateFileParams::javaobject> fromCpp(const AppUpdateFileParams& value) {
47
+ using JSignature = JAppUpdateFileParams(jni::alias_ref<jni::JString>);
48
+ static const auto clazz = javaClassStatic();
49
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
50
+ return create(
51
+ clazz,
52
+ jni::make_jstring(value.downloadUrl)
53
+ );
54
+ }
55
+ };
56
+
57
+ } // namespace margelo::nitro::reactnativeappupdate
@@ -0,0 +1,65 @@
1
+ ///
2
+ /// JDownloadEvent.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "DownloadEvent.hpp"
12
+
13
+ #include <string>
14
+
15
+ namespace margelo::nitro::reactnativeappupdate {
16
+
17
+ using namespace facebook;
18
+
19
+ /**
20
+ * The C++ JNI bridge between the C++ struct "DownloadEvent" and the the Kotlin data class "DownloadEvent".
21
+ */
22
+ struct JDownloadEvent final: public jni::JavaClass<JDownloadEvent> {
23
+ public:
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativeappupdate/DownloadEvent;";
25
+
26
+ public:
27
+ /**
28
+ * Convert this Java/Kotlin-based struct to the C++ struct DownloadEvent by copying all values to C++.
29
+ */
30
+ [[maybe_unused]]
31
+ [[nodiscard]]
32
+ DownloadEvent toCpp() const {
33
+ static const auto clazz = javaClassStatic();
34
+ static const auto fieldType = clazz->getField<jni::JString>("type");
35
+ jni::local_ref<jni::JString> type = this->getFieldValue(fieldType);
36
+ static const auto fieldProgress = clazz->getField<double>("progress");
37
+ double progress = this->getFieldValue(fieldProgress);
38
+ static const auto fieldMessage = clazz->getField<jni::JString>("message");
39
+ jni::local_ref<jni::JString> message = this->getFieldValue(fieldMessage);
40
+ return DownloadEvent(
41
+ type->toStdString(),
42
+ progress,
43
+ message->toStdString()
44
+ );
45
+ }
46
+
47
+ public:
48
+ /**
49
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
50
+ */
51
+ [[maybe_unused]]
52
+ static jni::local_ref<JDownloadEvent::javaobject> fromCpp(const DownloadEvent& value) {
53
+ using JSignature = JDownloadEvent(jni::alias_ref<jni::JString>, double, jni::alias_ref<jni::JString>);
54
+ static const auto clazz = javaClassStatic();
55
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
56
+ return create(
57
+ clazz,
58
+ jni::make_jstring(value.type),
59
+ value.progress,
60
+ jni::make_jstring(value.message)
61
+ );
62
+ }
63
+ };
64
+
65
+ } // namespace margelo::nitro::reactnativeappupdate
@@ -0,0 +1,78 @@
1
+ ///
2
+ /// JFunc_void_DownloadEvent.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include <functional>
12
+
13
+ #include "DownloadEvent.hpp"
14
+ #include <functional>
15
+ #include <NitroModules/JNICallable.hpp>
16
+ #include "JDownloadEvent.hpp"
17
+ #include <string>
18
+
19
+ namespace margelo::nitro::reactnativeappupdate {
20
+
21
+ using namespace facebook;
22
+
23
+ /**
24
+ * Represents the Java/Kotlin callback `(event: DownloadEvent) -> Unit`.
25
+ * This can be passed around between C++ and Java/Kotlin.
26
+ */
27
+ struct JFunc_void_DownloadEvent: public jni::JavaClass<JFunc_void_DownloadEvent> {
28
+ public:
29
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativeappupdate/Func_void_DownloadEvent;";
30
+
31
+ public:
32
+ /**
33
+ * Invokes the function this `JFunc_void_DownloadEvent` instance holds through JNI.
34
+ */
35
+ void invoke(const DownloadEvent& event) const {
36
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JDownloadEvent> /* event */)>("invoke");
37
+ method(self(), JDownloadEvent::fromCpp(event));
38
+ }
39
+ };
40
+
41
+ /**
42
+ * An implementation of Func_void_DownloadEvent that is backed by a C++ implementation (using `std::function<...>`)
43
+ */
44
+ class JFunc_void_DownloadEvent_cxx final: public jni::HybridClass<JFunc_void_DownloadEvent_cxx, JFunc_void_DownloadEvent> {
45
+ public:
46
+ static jni::local_ref<JFunc_void_DownloadEvent::javaobject> fromCpp(const std::function<void(const DownloadEvent& /* event */)>& func) {
47
+ return JFunc_void_DownloadEvent_cxx::newObjectCxxArgs(func);
48
+ }
49
+
50
+ public:
51
+ /**
52
+ * Invokes the C++ `std::function<...>` this `JFunc_void_DownloadEvent_cxx` instance holds.
53
+ */
54
+ void invoke_cxx(jni::alias_ref<JDownloadEvent> event) {
55
+ _func(event->toCpp());
56
+ }
57
+
58
+ public:
59
+ [[nodiscard]]
60
+ inline const std::function<void(const DownloadEvent& /* event */)>& getFunction() const {
61
+ return _func;
62
+ }
63
+
64
+ public:
65
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativeappupdate/Func_void_DownloadEvent_cxx;";
66
+ static void registerNatives() {
67
+ registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_DownloadEvent_cxx::invoke_cxx)});
68
+ }
69
+
70
+ private:
71
+ explicit JFunc_void_DownloadEvent_cxx(const std::function<void(const DownloadEvent& /* event */)>& func): _func(func) { }
72
+
73
+ private:
74
+ friend HybridBase;
75
+ std::function<void(const DownloadEvent& /* event */)> _func;
76
+ };
77
+
78
+ } // namespace margelo::nitro::reactnativeappupdate
@@ -0,0 +1,162 @@
1
+ ///
2
+ /// JHybridReactNativeAppUpdateSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "JHybridReactNativeAppUpdateSpec.hpp"
9
+
10
+ // Forward declaration of `AppUpdateDownloadParams` to properly resolve imports.
11
+ namespace margelo::nitro::reactnativeappupdate { struct AppUpdateDownloadParams; }
12
+ // Forward declaration of `AppUpdateFileParams` to properly resolve imports.
13
+ namespace margelo::nitro::reactnativeappupdate { struct AppUpdateFileParams; }
14
+ // Forward declaration of `DownloadEvent` to properly resolve imports.
15
+ namespace margelo::nitro::reactnativeappupdate { struct DownloadEvent; }
16
+
17
+ #include <NitroModules/Promise.hpp>
18
+ #include <NitroModules/JPromise.hpp>
19
+ #include "AppUpdateDownloadParams.hpp"
20
+ #include "JAppUpdateDownloadParams.hpp"
21
+ #include <string>
22
+ #include "AppUpdateFileParams.hpp"
23
+ #include "JAppUpdateFileParams.hpp"
24
+ #include "DownloadEvent.hpp"
25
+ #include <functional>
26
+ #include "JFunc_void_DownloadEvent.hpp"
27
+ #include <NitroModules/JNICallable.hpp>
28
+ #include "JDownloadEvent.hpp"
29
+
30
+ namespace margelo::nitro::reactnativeappupdate {
31
+
32
+ jni::local_ref<JHybridReactNativeAppUpdateSpec::jhybriddata> JHybridReactNativeAppUpdateSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
33
+ return makeCxxInstance(jThis);
34
+ }
35
+
36
+ void JHybridReactNativeAppUpdateSpec::registerNatives() {
37
+ registerHybrid({
38
+ makeNativeMethod("initHybrid", JHybridReactNativeAppUpdateSpec::initHybrid),
39
+ });
40
+ }
41
+
42
+ size_t JHybridReactNativeAppUpdateSpec::getExternalMemorySize() noexcept {
43
+ static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
44
+ return method(_javaPart);
45
+ }
46
+
47
+ void JHybridReactNativeAppUpdateSpec::dispose() noexcept {
48
+ static const auto method = javaClassStatic()->getMethod<void()>("dispose");
49
+ method(_javaPart);
50
+ }
51
+
52
+ std::string JHybridReactNativeAppUpdateSpec::toString() {
53
+ static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
54
+ auto javaString = method(_javaPart);
55
+ return javaString->toStdString();
56
+ }
57
+
58
+ // Properties
59
+
60
+
61
+ // Methods
62
+ std::shared_ptr<Promise<void>> JHybridReactNativeAppUpdateSpec::downloadAPK(const AppUpdateDownloadParams& params) {
63
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JAppUpdateDownloadParams> /* params */)>("downloadAPK");
64
+ auto __result = method(_javaPart, JAppUpdateDownloadParams::fromCpp(params));
65
+ return [&]() {
66
+ auto __promise = Promise<void>::create();
67
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
68
+ __promise->resolve();
69
+ });
70
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
71
+ jni::JniException __jniError(__throwable);
72
+ __promise->reject(std::make_exception_ptr(__jniError));
73
+ });
74
+ return __promise;
75
+ }();
76
+ }
77
+ std::shared_ptr<Promise<void>> JHybridReactNativeAppUpdateSpec::downloadASC(const AppUpdateFileParams& params) {
78
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JAppUpdateFileParams> /* params */)>("downloadASC");
79
+ auto __result = method(_javaPart, JAppUpdateFileParams::fromCpp(params));
80
+ return [&]() {
81
+ auto __promise = Promise<void>::create();
82
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
83
+ __promise->resolve();
84
+ });
85
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
86
+ jni::JniException __jniError(__throwable);
87
+ __promise->reject(std::make_exception_ptr(__jniError));
88
+ });
89
+ return __promise;
90
+ }();
91
+ }
92
+ std::shared_ptr<Promise<void>> JHybridReactNativeAppUpdateSpec::verifyASC(const AppUpdateFileParams& params) {
93
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JAppUpdateFileParams> /* params */)>("verifyASC");
94
+ auto __result = method(_javaPart, JAppUpdateFileParams::fromCpp(params));
95
+ return [&]() {
96
+ auto __promise = Promise<void>::create();
97
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
98
+ __promise->resolve();
99
+ });
100
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
101
+ jni::JniException __jniError(__throwable);
102
+ __promise->reject(std::make_exception_ptr(__jniError));
103
+ });
104
+ return __promise;
105
+ }();
106
+ }
107
+ std::shared_ptr<Promise<void>> JHybridReactNativeAppUpdateSpec::verifyAPK(const AppUpdateFileParams& params) {
108
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JAppUpdateFileParams> /* params */)>("verifyAPK");
109
+ auto __result = method(_javaPart, JAppUpdateFileParams::fromCpp(params));
110
+ return [&]() {
111
+ auto __promise = Promise<void>::create();
112
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
113
+ __promise->resolve();
114
+ });
115
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
116
+ jni::JniException __jniError(__throwable);
117
+ __promise->reject(std::make_exception_ptr(__jniError));
118
+ });
119
+ return __promise;
120
+ }();
121
+ }
122
+ std::shared_ptr<Promise<void>> JHybridReactNativeAppUpdateSpec::installAPK(const AppUpdateFileParams& params) {
123
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JAppUpdateFileParams> /* params */)>("installAPK");
124
+ auto __result = method(_javaPart, JAppUpdateFileParams::fromCpp(params));
125
+ return [&]() {
126
+ auto __promise = Promise<void>::create();
127
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
128
+ __promise->resolve();
129
+ });
130
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
131
+ jni::JniException __jniError(__throwable);
132
+ __promise->reject(std::make_exception_ptr(__jniError));
133
+ });
134
+ return __promise;
135
+ }();
136
+ }
137
+ std::shared_ptr<Promise<void>> JHybridReactNativeAppUpdateSpec::clearCache() {
138
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("clearCache");
139
+ auto __result = method(_javaPart);
140
+ return [&]() {
141
+ auto __promise = Promise<void>::create();
142
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
143
+ __promise->resolve();
144
+ });
145
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
146
+ jni::JniException __jniError(__throwable);
147
+ __promise->reject(std::make_exception_ptr(__jniError));
148
+ });
149
+ return __promise;
150
+ }();
151
+ }
152
+ double JHybridReactNativeAppUpdateSpec::addDownloadListener(const std::function<void(const DownloadEvent& /* event */)>& callback) {
153
+ static const auto method = javaClassStatic()->getMethod<double(jni::alias_ref<JFunc_void_DownloadEvent::javaobject> /* callback */)>("addDownloadListener_cxx");
154
+ auto __result = method(_javaPart, JFunc_void_DownloadEvent_cxx::fromCpp(callback));
155
+ return __result;
156
+ }
157
+ void JHybridReactNativeAppUpdateSpec::removeDownloadListener(double id) {
158
+ static const auto method = javaClassStatic()->getMethod<void(double /* id */)>("removeDownloadListener");
159
+ method(_javaPart, id);
160
+ }
161
+
162
+ } // namespace margelo::nitro::reactnativeappupdate
@@ -0,0 +1,72 @@
1
+ ///
2
+ /// HybridReactNativeAppUpdateSpec.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <NitroModules/JHybridObject.hpp>
11
+ #include <fbjni/fbjni.h>
12
+ #include "HybridReactNativeAppUpdateSpec.hpp"
13
+
14
+
15
+
16
+
17
+ namespace margelo::nitro::reactnativeappupdate {
18
+
19
+ using namespace facebook;
20
+
21
+ class JHybridReactNativeAppUpdateSpec: public jni::HybridClass<JHybridReactNativeAppUpdateSpec, JHybridObject>,
22
+ public virtual HybridReactNativeAppUpdateSpec {
23
+ public:
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativeappupdate/HybridReactNativeAppUpdateSpec;";
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 JHybridReactNativeAppUpdateSpec(jni::alias_ref<jhybridobject> jThis) :
31
+ HybridObject(HybridReactNativeAppUpdateSpec::TAG),
32
+ HybridBase(jThis),
33
+ _javaPart(jni::make_global(jThis)) {}
34
+
35
+ public:
36
+ ~JHybridReactNativeAppUpdateSpec() 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
+ void dispose() noexcept override;
44
+ std::string toString() override;
45
+
46
+ public:
47
+ inline const jni::global_ref<JHybridReactNativeAppUpdateSpec::javaobject>& getJavaPart() const noexcept {
48
+ return _javaPart;
49
+ }
50
+
51
+ public:
52
+ // Properties
53
+
54
+
55
+ public:
56
+ // Methods
57
+ std::shared_ptr<Promise<void>> downloadAPK(const AppUpdateDownloadParams& params) override;
58
+ std::shared_ptr<Promise<void>> downloadASC(const AppUpdateFileParams& params) override;
59
+ std::shared_ptr<Promise<void>> verifyASC(const AppUpdateFileParams& params) override;
60
+ std::shared_ptr<Promise<void>> verifyAPK(const AppUpdateFileParams& params) override;
61
+ std::shared_ptr<Promise<void>> installAPK(const AppUpdateFileParams& params) override;
62
+ std::shared_ptr<Promise<void>> clearCache() override;
63
+ double addDownloadListener(const std::function<void(const DownloadEvent& /* event */)>& callback) override;
64
+ void removeDownloadListener(double id) override;
65
+
66
+ private:
67
+ friend HybridBase;
68
+ using HybridBase::HybridBase;
69
+ jni::global_ref<JHybridReactNativeAppUpdateSpec::javaobject> _javaPart;
70
+ };
71
+
72
+ } // namespace margelo::nitro::reactnativeappupdate