@onekeyfe/react-native-range-downloader 3.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +36 -0
- package/ReactNativeRangeDownloader.podspec +30 -0
- package/android/CMakeLists.txt +24 -0
- package/android/build.gradle +132 -0
- package/android/gradle.properties +4 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/cpp/cpp-adapter.cpp +6 -0
- package/android/src/main/java/com/margelo/nitro/reactnativerangedownloader/ConcurrentRangeDownloader.kt +340 -0
- package/android/src/main/java/com/margelo/nitro/reactnativerangedownloader/ReactNativeRangeDownloader.kt +233 -0
- package/android/src/main/java/com/margelo/nitro/reactnativerangedownloader/ReactNativeRangeDownloaderPackage.kt +24 -0
- package/ios/ReactNativeRangeDownloader.swift +732 -0
- package/lib/module/ReactNativeRangeDownloader.nitro.js +4 -0
- package/lib/module/ReactNativeRangeDownloader.nitro.js.map +1 -0
- package/lib/module/index.js +15 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/ReactNativeRangeDownloader.nitro.d.ts +35 -0
- package/lib/typescript/src/ReactNativeRangeDownloader.nitro.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +9 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/nitro.json +17 -0
- package/nitrogen/generated/android/c++/JDownloadChannel.hpp +62 -0
- package/nitrogen/generated/android/c++/JFunc_void_RangeDownloadEvent.hpp +80 -0
- package/nitrogen/generated/android/c++/JHybridReactNativeRangeDownloaderSpec.cpp +117 -0
- package/nitrogen/generated/android/c++/JHybridReactNativeRangeDownloaderSpec.hpp +69 -0
- package/nitrogen/generated/android/c++/JRangeDownloadEvent.hpp +75 -0
- package/nitrogen/generated/android/c++/JRangeDownloadOutcome.hpp +59 -0
- package/nitrogen/generated/android/c++/JRangeDownloadParams.hpp +84 -0
- package/nitrogen/generated/android/c++/JRangeDownloadResult.hpp +68 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/DownloadChannel.kt +22 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/Func_void_RangeDownloadEvent.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/HybridReactNativeRangeDownloaderSpec.kt +79 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/RangeDownloadEvent.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/RangeDownloadOutcome.kt +21 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/RangeDownloadParams.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/RangeDownloadResult.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/reactnativerangedownloaderOnLoad.kt +35 -0
- package/nitrogen/generated/android/reactnativerangedownloader+autolinking.cmake +81 -0
- package/nitrogen/generated/android/reactnativerangedownloader+autolinking.gradle +27 -0
- package/nitrogen/generated/android/reactnativerangedownloaderOnLoad.cpp +46 -0
- package/nitrogen/generated/android/reactnativerangedownloaderOnLoad.hpp +25 -0
- package/nitrogen/generated/ios/ReactNativeRangeDownloader+autolinking.rb +60 -0
- package/nitrogen/generated/ios/ReactNativeRangeDownloader-Swift-Cxx-Bridge.cpp +65 -0
- package/nitrogen/generated/ios/ReactNativeRangeDownloader-Swift-Cxx-Bridge.hpp +246 -0
- package/nitrogen/generated/ios/ReactNativeRangeDownloader-Swift-Cxx-Umbrella.hpp +62 -0
- package/nitrogen/generated/ios/ReactNativeRangeDownloaderAutolinking.mm +33 -0
- package/nitrogen/generated/ios/ReactNativeRangeDownloaderAutolinking.swift +25 -0
- package/nitrogen/generated/ios/c++/HybridReactNativeRangeDownloaderSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridReactNativeRangeDownloaderSpecSwift.hpp +123 -0
- package/nitrogen/generated/ios/swift/DownloadChannel.swift +44 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_RangeDownloadEvent.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_RangeDownloadResult.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
- package/nitrogen/generated/ios/swift/HybridReactNativeRangeDownloaderSpec.swift +60 -0
- package/nitrogen/generated/ios/swift/HybridReactNativeRangeDownloaderSpec_cxx.swift +197 -0
- package/nitrogen/generated/ios/swift/RangeDownloadEvent.swift +80 -0
- package/nitrogen/generated/ios/swift/RangeDownloadOutcome.swift +40 -0
- package/nitrogen/generated/ios/swift/RangeDownloadParams.swift +145 -0
- package/nitrogen/generated/ios/swift/RangeDownloadResult.swift +77 -0
- package/nitrogen/generated/shared/c++/DownloadChannel.hpp +80 -0
- package/nitrogen/generated/shared/c++/HybridReactNativeRangeDownloaderSpec.cpp +25 -0
- package/nitrogen/generated/shared/c++/HybridReactNativeRangeDownloaderSpec.hpp +79 -0
- package/nitrogen/generated/shared/c++/RangeDownloadEvent.hpp +93 -0
- package/nitrogen/generated/shared/c++/RangeDownloadOutcome.hpp +76 -0
- package/nitrogen/generated/shared/c++/RangeDownloadParams.hpp +102 -0
- package/nitrogen/generated/shared/c++/RangeDownloadResult.hpp +86 -0
- package/package.json +169 -0
- package/src/ReactNativeRangeDownloader.nitro.ts +60 -0
- package/src/index.tsx +20 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["ReactNativeRangeDownloader.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { NitroModules } from 'react-native-nitro-modules';
|
|
4
|
+
const ReactNativeRangeDownloaderHybridObject = NitroModules.createHybridObject('ReactNativeRangeDownloader');
|
|
5
|
+
export const ReactNativeRangeDownloader = ReactNativeRangeDownloaderHybridObject;
|
|
6
|
+
|
|
7
|
+
// Closed set of download channels (design decision 10.1). The native side builds the
|
|
8
|
+
// background session identifier as `so.onekey.rangedownloader.bg.<channel>`. New channels
|
|
9
|
+
// must be added here (review-visible), preventing consumers from passing typo'd strings.
|
|
10
|
+
export const RangeDownloadChannel = {
|
|
11
|
+
Bundle: 'bundle',
|
|
12
|
+
Apk: 'apk',
|
|
13
|
+
Chart: 'chart'
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NitroModules","ReactNativeRangeDownloaderHybridObject","createHybridObject","ReactNativeRangeDownloader","RangeDownloadChannel","Bundle","Apk","Chart"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAGzD,MAAMC,sCAAsC,GAC1CD,YAAY,CAACE,kBAAkB,CAC7B,4BACF,CAAC;AAEH,OAAO,MAAMC,0BAA0B,GAAGF,sCAAsC;;AAEhF;AACA;AACA;AACA,OAAO,MAAMG,oBAAoB,GAAG;EAClCC,MAAM,EAAE,QAAQ;EAChBC,GAAG,EAAE,KAAK;EACVC,KAAK,EAAE;AACT,CAAU","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { HybridObject } from 'react-native-nitro-modules';
|
|
2
|
+
export type DownloadChannel = 'bundle' | 'apk' | 'chart';
|
|
3
|
+
export interface RangeDownloadParams {
|
|
4
|
+
channel: DownloadChannel;
|
|
5
|
+
taskId: string;
|
|
6
|
+
url: string;
|
|
7
|
+
destFilePath: string;
|
|
8
|
+
expectedSha256?: string;
|
|
9
|
+
segmentCount?: number;
|
|
10
|
+
minConcurrentBytes?: number;
|
|
11
|
+
}
|
|
12
|
+
export type RangeDownloadOutcome = 'completed' | 'fallback';
|
|
13
|
+
export interface RangeDownloadResult {
|
|
14
|
+
outcome: RangeDownloadOutcome;
|
|
15
|
+
filePath: string;
|
|
16
|
+
fallbackReason?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface RangeDownloadEvent {
|
|
19
|
+
channel: DownloadChannel;
|
|
20
|
+
taskId: string;
|
|
21
|
+
type: string;
|
|
22
|
+
progress: number;
|
|
23
|
+
message: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ReactNativeRangeDownloader extends HybridObject<{
|
|
26
|
+
ios: 'swift';
|
|
27
|
+
android: 'kotlin';
|
|
28
|
+
}> {
|
|
29
|
+
download(params: RangeDownloadParams): Promise<RangeDownloadResult>;
|
|
30
|
+
discardArtifacts(channel: DownloadChannel, taskId: string, destFilePath: string): Promise<void>;
|
|
31
|
+
addDownloadListener(callback: (event: RangeDownloadEvent) => void): number;
|
|
32
|
+
removeDownloadListener(id: number): void;
|
|
33
|
+
getDownloadsDir(): string;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=ReactNativeRangeDownloader.nitro.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactNativeRangeDownloader.nitro.d.ts","sourceRoot":"","sources":["../../../src/ReactNativeRangeDownloader.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAM/D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,UAAU,CAAC;AAEf,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IAIzD,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAIpE,gBAAgB,CACd,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IAGjB,mBAAmB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAAG,MAAM,CAAC;IAC3E,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAKzC,eAAe,IAAI,MAAM,CAAC;CAC3B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ReactNativeRangeDownloader as ReactNativeRangeDownloaderType } from './ReactNativeRangeDownloader.nitro';
|
|
2
|
+
export declare const ReactNativeRangeDownloader: ReactNativeRangeDownloaderType;
|
|
3
|
+
export declare const RangeDownloadChannel: {
|
|
4
|
+
readonly Bundle: "bundle";
|
|
5
|
+
readonly Apk: "apk";
|
|
6
|
+
readonly Chart: "chart";
|
|
7
|
+
};
|
|
8
|
+
export type * from './ReactNativeRangeDownloader.nitro';
|
|
9
|
+
//# 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,0BAA0B,IAAI,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AAOvH,eAAO,MAAM,0BAA0B,gCAAyC,CAAC;AAKjF,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAC;AAEX,mBAAmB,oCAAoC,CAAC"}
|
package/nitro.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cxxNamespace": ["reactnativerangedownloader"],
|
|
3
|
+
"ios": {
|
|
4
|
+
"iosModuleName": "ReactNativeRangeDownloader"
|
|
5
|
+
},
|
|
6
|
+
"android": {
|
|
7
|
+
"androidNamespace": ["reactnativerangedownloader"],
|
|
8
|
+
"androidCxxLibName": "reactnativerangedownloader"
|
|
9
|
+
},
|
|
10
|
+
"autolinking": {
|
|
11
|
+
"ReactNativeRangeDownloader": {
|
|
12
|
+
"swift": "ReactNativeRangeDownloader",
|
|
13
|
+
"kotlin": "ReactNativeRangeDownloader"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"ignorePaths": ["node_modules"]
|
|
17
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JDownloadChannel.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 "DownloadChannel.hpp"
|
|
12
|
+
|
|
13
|
+
namespace margelo::nitro::reactnativerangedownloader {
|
|
14
|
+
|
|
15
|
+
using namespace facebook;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The C++ JNI bridge between the C++ enum "DownloadChannel" and the the Kotlin enum "DownloadChannel".
|
|
19
|
+
*/
|
|
20
|
+
struct JDownloadChannel final: public jni::JavaClass<JDownloadChannel> {
|
|
21
|
+
public:
|
|
22
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativerangedownloader/DownloadChannel;";
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
/**
|
|
26
|
+
* Convert this Java/Kotlin-based enum to the C++ enum DownloadChannel.
|
|
27
|
+
*/
|
|
28
|
+
[[maybe_unused]]
|
|
29
|
+
[[nodiscard]]
|
|
30
|
+
DownloadChannel toCpp() const {
|
|
31
|
+
static const auto clazz = javaClassStatic();
|
|
32
|
+
static const auto fieldOrdinal = clazz->getField<int>("value");
|
|
33
|
+
int ordinal = this->getFieldValue(fieldOrdinal);
|
|
34
|
+
return static_cast<DownloadChannel>(ordinal);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public:
|
|
38
|
+
/**
|
|
39
|
+
* Create a Java/Kotlin-based enum with the given C++ enum's value.
|
|
40
|
+
*/
|
|
41
|
+
[[maybe_unused]]
|
|
42
|
+
static jni::alias_ref<JDownloadChannel> fromCpp(DownloadChannel value) {
|
|
43
|
+
static const auto clazz = javaClassStatic();
|
|
44
|
+
static const auto fieldBUNDLE = clazz->getStaticField<JDownloadChannel>("BUNDLE");
|
|
45
|
+
static const auto fieldAPK = clazz->getStaticField<JDownloadChannel>("APK");
|
|
46
|
+
static const auto fieldCHART = clazz->getStaticField<JDownloadChannel>("CHART");
|
|
47
|
+
|
|
48
|
+
switch (value) {
|
|
49
|
+
case DownloadChannel::BUNDLE:
|
|
50
|
+
return clazz->getStaticFieldValue(fieldBUNDLE);
|
|
51
|
+
case DownloadChannel::APK:
|
|
52
|
+
return clazz->getStaticFieldValue(fieldAPK);
|
|
53
|
+
case DownloadChannel::CHART:
|
|
54
|
+
return clazz->getStaticFieldValue(fieldCHART);
|
|
55
|
+
default:
|
|
56
|
+
std::string stringValue = std::to_string(static_cast<int>(value));
|
|
57
|
+
throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
} // namespace margelo::nitro::reactnativerangedownloader
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JFunc_void_RangeDownloadEvent.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 "RangeDownloadEvent.hpp"
|
|
14
|
+
#include <functional>
|
|
15
|
+
#include <NitroModules/JNICallable.hpp>
|
|
16
|
+
#include "JRangeDownloadEvent.hpp"
|
|
17
|
+
#include "DownloadChannel.hpp"
|
|
18
|
+
#include "JDownloadChannel.hpp"
|
|
19
|
+
#include <string>
|
|
20
|
+
|
|
21
|
+
namespace margelo::nitro::reactnativerangedownloader {
|
|
22
|
+
|
|
23
|
+
using namespace facebook;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Represents the Java/Kotlin callback `(event: RangeDownloadEvent) -> Unit`.
|
|
27
|
+
* This can be passed around between C++ and Java/Kotlin.
|
|
28
|
+
*/
|
|
29
|
+
struct JFunc_void_RangeDownloadEvent: public jni::JavaClass<JFunc_void_RangeDownloadEvent> {
|
|
30
|
+
public:
|
|
31
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativerangedownloader/Func_void_RangeDownloadEvent;";
|
|
32
|
+
|
|
33
|
+
public:
|
|
34
|
+
/**
|
|
35
|
+
* Invokes the function this `JFunc_void_RangeDownloadEvent` instance holds through JNI.
|
|
36
|
+
*/
|
|
37
|
+
void invoke(const RangeDownloadEvent& event) const {
|
|
38
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JRangeDownloadEvent> /* event */)>("invoke");
|
|
39
|
+
method(self(), JRangeDownloadEvent::fromCpp(event));
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* An implementation of Func_void_RangeDownloadEvent that is backed by a C++ implementation (using `std::function<...>`)
|
|
45
|
+
*/
|
|
46
|
+
class JFunc_void_RangeDownloadEvent_cxx final: public jni::HybridClass<JFunc_void_RangeDownloadEvent_cxx, JFunc_void_RangeDownloadEvent> {
|
|
47
|
+
public:
|
|
48
|
+
static jni::local_ref<JFunc_void_RangeDownloadEvent::javaobject> fromCpp(const std::function<void(const RangeDownloadEvent& /* event */)>& func) {
|
|
49
|
+
return JFunc_void_RangeDownloadEvent_cxx::newObjectCxxArgs(func);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public:
|
|
53
|
+
/**
|
|
54
|
+
* Invokes the C++ `std::function<...>` this `JFunc_void_RangeDownloadEvent_cxx` instance holds.
|
|
55
|
+
*/
|
|
56
|
+
void invoke_cxx(jni::alias_ref<JRangeDownloadEvent> event) {
|
|
57
|
+
_func(event->toCpp());
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
public:
|
|
61
|
+
[[nodiscard]]
|
|
62
|
+
inline const std::function<void(const RangeDownloadEvent& /* event */)>& getFunction() const {
|
|
63
|
+
return _func;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public:
|
|
67
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativerangedownloader/Func_void_RangeDownloadEvent_cxx;";
|
|
68
|
+
static void registerNatives() {
|
|
69
|
+
registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_RangeDownloadEvent_cxx::invoke_cxx)});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private:
|
|
73
|
+
explicit JFunc_void_RangeDownloadEvent_cxx(const std::function<void(const RangeDownloadEvent& /* event */)>& func): _func(func) { }
|
|
74
|
+
|
|
75
|
+
private:
|
|
76
|
+
friend HybridBase;
|
|
77
|
+
std::function<void(const RangeDownloadEvent& /* event */)> _func;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
} // namespace margelo::nitro::reactnativerangedownloader
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JHybridReactNativeRangeDownloaderSpec.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 "JHybridReactNativeRangeDownloaderSpec.hpp"
|
|
9
|
+
|
|
10
|
+
// Forward declaration of `RangeDownloadResult` to properly resolve imports.
|
|
11
|
+
namespace margelo::nitro::reactnativerangedownloader { struct RangeDownloadResult; }
|
|
12
|
+
// Forward declaration of `RangeDownloadOutcome` to properly resolve imports.
|
|
13
|
+
namespace margelo::nitro::reactnativerangedownloader { enum class RangeDownloadOutcome; }
|
|
14
|
+
// Forward declaration of `RangeDownloadParams` to properly resolve imports.
|
|
15
|
+
namespace margelo::nitro::reactnativerangedownloader { struct RangeDownloadParams; }
|
|
16
|
+
// Forward declaration of `DownloadChannel` to properly resolve imports.
|
|
17
|
+
namespace margelo::nitro::reactnativerangedownloader { enum class DownloadChannel; }
|
|
18
|
+
// Forward declaration of `RangeDownloadEvent` to properly resolve imports.
|
|
19
|
+
namespace margelo::nitro::reactnativerangedownloader { struct RangeDownloadEvent; }
|
|
20
|
+
|
|
21
|
+
#include "RangeDownloadResult.hpp"
|
|
22
|
+
#include <NitroModules/Promise.hpp>
|
|
23
|
+
#include <NitroModules/JPromise.hpp>
|
|
24
|
+
#include "JRangeDownloadResult.hpp"
|
|
25
|
+
#include "RangeDownloadOutcome.hpp"
|
|
26
|
+
#include "JRangeDownloadOutcome.hpp"
|
|
27
|
+
#include <string>
|
|
28
|
+
#include <optional>
|
|
29
|
+
#include "RangeDownloadParams.hpp"
|
|
30
|
+
#include "JRangeDownloadParams.hpp"
|
|
31
|
+
#include "DownloadChannel.hpp"
|
|
32
|
+
#include "JDownloadChannel.hpp"
|
|
33
|
+
#include "RangeDownloadEvent.hpp"
|
|
34
|
+
#include <functional>
|
|
35
|
+
#include "JFunc_void_RangeDownloadEvent.hpp"
|
|
36
|
+
#include <NitroModules/JNICallable.hpp>
|
|
37
|
+
#include "JRangeDownloadEvent.hpp"
|
|
38
|
+
|
|
39
|
+
namespace margelo::nitro::reactnativerangedownloader {
|
|
40
|
+
|
|
41
|
+
jni::local_ref<JHybridReactNativeRangeDownloaderSpec::jhybriddata> JHybridReactNativeRangeDownloaderSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
|
|
42
|
+
return makeCxxInstance(jThis);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
void JHybridReactNativeRangeDownloaderSpec::registerNatives() {
|
|
46
|
+
registerHybrid({
|
|
47
|
+
makeNativeMethod("initHybrid", JHybridReactNativeRangeDownloaderSpec::initHybrid),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
size_t JHybridReactNativeRangeDownloaderSpec::getExternalMemorySize() noexcept {
|
|
52
|
+
static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
|
|
53
|
+
return method(_javaPart);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
void JHybridReactNativeRangeDownloaderSpec::dispose() noexcept {
|
|
57
|
+
static const auto method = javaClassStatic()->getMethod<void()>("dispose");
|
|
58
|
+
method(_javaPart);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
std::string JHybridReactNativeRangeDownloaderSpec::toString() {
|
|
62
|
+
static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
|
|
63
|
+
auto javaString = method(_javaPart);
|
|
64
|
+
return javaString->toStdString();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Properties
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
// Methods
|
|
71
|
+
std::shared_ptr<Promise<RangeDownloadResult>> JHybridReactNativeRangeDownloaderSpec::download(const RangeDownloadParams& params) {
|
|
72
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JRangeDownloadParams> /* params */)>("download");
|
|
73
|
+
auto __result = method(_javaPart, JRangeDownloadParams::fromCpp(params));
|
|
74
|
+
return [&]() {
|
|
75
|
+
auto __promise = Promise<RangeDownloadResult>::create();
|
|
76
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
77
|
+
auto __result = jni::static_ref_cast<JRangeDownloadResult>(__boxedResult);
|
|
78
|
+
__promise->resolve(__result->toCpp());
|
|
79
|
+
});
|
|
80
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
81
|
+
jni::JniException __jniError(__throwable);
|
|
82
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
83
|
+
});
|
|
84
|
+
return __promise;
|
|
85
|
+
}();
|
|
86
|
+
}
|
|
87
|
+
std::shared_ptr<Promise<void>> JHybridReactNativeRangeDownloaderSpec::discardArtifacts(DownloadChannel channel, const std::string& taskId, const std::string& destFilePath) {
|
|
88
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JDownloadChannel> /* channel */, jni::alias_ref<jni::JString> /* taskId */, jni::alias_ref<jni::JString> /* destFilePath */)>("discardArtifacts");
|
|
89
|
+
auto __result = method(_javaPart, JDownloadChannel::fromCpp(channel), jni::make_jstring(taskId), jni::make_jstring(destFilePath));
|
|
90
|
+
return [&]() {
|
|
91
|
+
auto __promise = Promise<void>::create();
|
|
92
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
|
|
93
|
+
__promise->resolve();
|
|
94
|
+
});
|
|
95
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
96
|
+
jni::JniException __jniError(__throwable);
|
|
97
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
98
|
+
});
|
|
99
|
+
return __promise;
|
|
100
|
+
}();
|
|
101
|
+
}
|
|
102
|
+
double JHybridReactNativeRangeDownloaderSpec::addDownloadListener(const std::function<void(const RangeDownloadEvent& /* event */)>& callback) {
|
|
103
|
+
static const auto method = javaClassStatic()->getMethod<double(jni::alias_ref<JFunc_void_RangeDownloadEvent::javaobject> /* callback */)>("addDownloadListener_cxx");
|
|
104
|
+
auto __result = method(_javaPart, JFunc_void_RangeDownloadEvent_cxx::fromCpp(callback));
|
|
105
|
+
return __result;
|
|
106
|
+
}
|
|
107
|
+
void JHybridReactNativeRangeDownloaderSpec::removeDownloadListener(double id) {
|
|
108
|
+
static const auto method = javaClassStatic()->getMethod<void(double /* id */)>("removeDownloadListener");
|
|
109
|
+
method(_javaPart, id);
|
|
110
|
+
}
|
|
111
|
+
std::string JHybridReactNativeRangeDownloaderSpec::getDownloadsDir() {
|
|
112
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getDownloadsDir");
|
|
113
|
+
auto __result = method(_javaPart);
|
|
114
|
+
return __result->toStdString();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
} // namespace margelo::nitro::reactnativerangedownloader
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridReactNativeRangeDownloaderSpec.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 "HybridReactNativeRangeDownloaderSpec.hpp"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
namespace margelo::nitro::reactnativerangedownloader {
|
|
18
|
+
|
|
19
|
+
using namespace facebook;
|
|
20
|
+
|
|
21
|
+
class JHybridReactNativeRangeDownloaderSpec: public jni::HybridClass<JHybridReactNativeRangeDownloaderSpec, JHybridObject>,
|
|
22
|
+
public virtual HybridReactNativeRangeDownloaderSpec {
|
|
23
|
+
public:
|
|
24
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativerangedownloader/HybridReactNativeRangeDownloaderSpec;";
|
|
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 JHybridReactNativeRangeDownloaderSpec(jni::alias_ref<jhybridobject> jThis) :
|
|
31
|
+
HybridObject(HybridReactNativeRangeDownloaderSpec::TAG),
|
|
32
|
+
HybridBase(jThis),
|
|
33
|
+
_javaPart(jni::make_global(jThis)) {}
|
|
34
|
+
|
|
35
|
+
public:
|
|
36
|
+
~JHybridReactNativeRangeDownloaderSpec() 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<JHybridReactNativeRangeDownloaderSpec::javaobject>& getJavaPart() const noexcept {
|
|
48
|
+
return _javaPart;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public:
|
|
52
|
+
// Properties
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
public:
|
|
56
|
+
// Methods
|
|
57
|
+
std::shared_ptr<Promise<RangeDownloadResult>> download(const RangeDownloadParams& params) override;
|
|
58
|
+
std::shared_ptr<Promise<void>> discardArtifacts(DownloadChannel channel, const std::string& taskId, const std::string& destFilePath) override;
|
|
59
|
+
double addDownloadListener(const std::function<void(const RangeDownloadEvent& /* event */)>& callback) override;
|
|
60
|
+
void removeDownloadListener(double id) override;
|
|
61
|
+
std::string getDownloadsDir() override;
|
|
62
|
+
|
|
63
|
+
private:
|
|
64
|
+
friend HybridBase;
|
|
65
|
+
using HybridBase::HybridBase;
|
|
66
|
+
jni::global_ref<JHybridReactNativeRangeDownloaderSpec::javaobject> _javaPart;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
} // namespace margelo::nitro::reactnativerangedownloader
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JRangeDownloadEvent.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 "RangeDownloadEvent.hpp"
|
|
12
|
+
|
|
13
|
+
#include "DownloadChannel.hpp"
|
|
14
|
+
#include "JDownloadChannel.hpp"
|
|
15
|
+
#include <string>
|
|
16
|
+
|
|
17
|
+
namespace margelo::nitro::reactnativerangedownloader {
|
|
18
|
+
|
|
19
|
+
using namespace facebook;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The C++ JNI bridge between the C++ struct "RangeDownloadEvent" and the the Kotlin data class "RangeDownloadEvent".
|
|
23
|
+
*/
|
|
24
|
+
struct JRangeDownloadEvent final: public jni::JavaClass<JRangeDownloadEvent> {
|
|
25
|
+
public:
|
|
26
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativerangedownloader/RangeDownloadEvent;";
|
|
27
|
+
|
|
28
|
+
public:
|
|
29
|
+
/**
|
|
30
|
+
* Convert this Java/Kotlin-based struct to the C++ struct RangeDownloadEvent by copying all values to C++.
|
|
31
|
+
*/
|
|
32
|
+
[[maybe_unused]]
|
|
33
|
+
[[nodiscard]]
|
|
34
|
+
RangeDownloadEvent toCpp() const {
|
|
35
|
+
static const auto clazz = javaClassStatic();
|
|
36
|
+
static const auto fieldChannel = clazz->getField<JDownloadChannel>("channel");
|
|
37
|
+
jni::local_ref<JDownloadChannel> channel = this->getFieldValue(fieldChannel);
|
|
38
|
+
static const auto fieldTaskId = clazz->getField<jni::JString>("taskId");
|
|
39
|
+
jni::local_ref<jni::JString> taskId = this->getFieldValue(fieldTaskId);
|
|
40
|
+
static const auto fieldType = clazz->getField<jni::JString>("type");
|
|
41
|
+
jni::local_ref<jni::JString> type = this->getFieldValue(fieldType);
|
|
42
|
+
static const auto fieldProgress = clazz->getField<double>("progress");
|
|
43
|
+
double progress = this->getFieldValue(fieldProgress);
|
|
44
|
+
static const auto fieldMessage = clazz->getField<jni::JString>("message");
|
|
45
|
+
jni::local_ref<jni::JString> message = this->getFieldValue(fieldMessage);
|
|
46
|
+
return RangeDownloadEvent(
|
|
47
|
+
channel->toCpp(),
|
|
48
|
+
taskId->toStdString(),
|
|
49
|
+
type->toStdString(),
|
|
50
|
+
progress,
|
|
51
|
+
message->toStdString()
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public:
|
|
56
|
+
/**
|
|
57
|
+
* Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
|
|
58
|
+
*/
|
|
59
|
+
[[maybe_unused]]
|
|
60
|
+
static jni::local_ref<JRangeDownloadEvent::javaobject> fromCpp(const RangeDownloadEvent& value) {
|
|
61
|
+
using JSignature = JRangeDownloadEvent(jni::alias_ref<JDownloadChannel>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, double, jni::alias_ref<jni::JString>);
|
|
62
|
+
static const auto clazz = javaClassStatic();
|
|
63
|
+
static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
|
|
64
|
+
return create(
|
|
65
|
+
clazz,
|
|
66
|
+
JDownloadChannel::fromCpp(value.channel),
|
|
67
|
+
jni::make_jstring(value.taskId),
|
|
68
|
+
jni::make_jstring(value.type),
|
|
69
|
+
value.progress,
|
|
70
|
+
jni::make_jstring(value.message)
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
} // namespace margelo::nitro::reactnativerangedownloader
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JRangeDownloadOutcome.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 "RangeDownloadOutcome.hpp"
|
|
12
|
+
|
|
13
|
+
namespace margelo::nitro::reactnativerangedownloader {
|
|
14
|
+
|
|
15
|
+
using namespace facebook;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The C++ JNI bridge between the C++ enum "RangeDownloadOutcome" and the the Kotlin enum "RangeDownloadOutcome".
|
|
19
|
+
*/
|
|
20
|
+
struct JRangeDownloadOutcome final: public jni::JavaClass<JRangeDownloadOutcome> {
|
|
21
|
+
public:
|
|
22
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativerangedownloader/RangeDownloadOutcome;";
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
/**
|
|
26
|
+
* Convert this Java/Kotlin-based enum to the C++ enum RangeDownloadOutcome.
|
|
27
|
+
*/
|
|
28
|
+
[[maybe_unused]]
|
|
29
|
+
[[nodiscard]]
|
|
30
|
+
RangeDownloadOutcome toCpp() const {
|
|
31
|
+
static const auto clazz = javaClassStatic();
|
|
32
|
+
static const auto fieldOrdinal = clazz->getField<int>("value");
|
|
33
|
+
int ordinal = this->getFieldValue(fieldOrdinal);
|
|
34
|
+
return static_cast<RangeDownloadOutcome>(ordinal);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public:
|
|
38
|
+
/**
|
|
39
|
+
* Create a Java/Kotlin-based enum with the given C++ enum's value.
|
|
40
|
+
*/
|
|
41
|
+
[[maybe_unused]]
|
|
42
|
+
static jni::alias_ref<JRangeDownloadOutcome> fromCpp(RangeDownloadOutcome value) {
|
|
43
|
+
static const auto clazz = javaClassStatic();
|
|
44
|
+
static const auto fieldCOMPLETED = clazz->getStaticField<JRangeDownloadOutcome>("COMPLETED");
|
|
45
|
+
static const auto fieldFALLBACK = clazz->getStaticField<JRangeDownloadOutcome>("FALLBACK");
|
|
46
|
+
|
|
47
|
+
switch (value) {
|
|
48
|
+
case RangeDownloadOutcome::COMPLETED:
|
|
49
|
+
return clazz->getStaticFieldValue(fieldCOMPLETED);
|
|
50
|
+
case RangeDownloadOutcome::FALLBACK:
|
|
51
|
+
return clazz->getStaticFieldValue(fieldFALLBACK);
|
|
52
|
+
default:
|
|
53
|
+
std::string stringValue = std::to_string(static_cast<int>(value));
|
|
54
|
+
throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
} // namespace margelo::nitro::reactnativerangedownloader
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JRangeDownloadParams.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 "RangeDownloadParams.hpp"
|
|
12
|
+
|
|
13
|
+
#include "DownloadChannel.hpp"
|
|
14
|
+
#include "JDownloadChannel.hpp"
|
|
15
|
+
#include <optional>
|
|
16
|
+
#include <string>
|
|
17
|
+
|
|
18
|
+
namespace margelo::nitro::reactnativerangedownloader {
|
|
19
|
+
|
|
20
|
+
using namespace facebook;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The C++ JNI bridge between the C++ struct "RangeDownloadParams" and the the Kotlin data class "RangeDownloadParams".
|
|
24
|
+
*/
|
|
25
|
+
struct JRangeDownloadParams final: public jni::JavaClass<JRangeDownloadParams> {
|
|
26
|
+
public:
|
|
27
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/reactnativerangedownloader/RangeDownloadParams;";
|
|
28
|
+
|
|
29
|
+
public:
|
|
30
|
+
/**
|
|
31
|
+
* Convert this Java/Kotlin-based struct to the C++ struct RangeDownloadParams by copying all values to C++.
|
|
32
|
+
*/
|
|
33
|
+
[[maybe_unused]]
|
|
34
|
+
[[nodiscard]]
|
|
35
|
+
RangeDownloadParams toCpp() const {
|
|
36
|
+
static const auto clazz = javaClassStatic();
|
|
37
|
+
static const auto fieldChannel = clazz->getField<JDownloadChannel>("channel");
|
|
38
|
+
jni::local_ref<JDownloadChannel> channel = this->getFieldValue(fieldChannel);
|
|
39
|
+
static const auto fieldTaskId = clazz->getField<jni::JString>("taskId");
|
|
40
|
+
jni::local_ref<jni::JString> taskId = this->getFieldValue(fieldTaskId);
|
|
41
|
+
static const auto fieldUrl = clazz->getField<jni::JString>("url");
|
|
42
|
+
jni::local_ref<jni::JString> url = this->getFieldValue(fieldUrl);
|
|
43
|
+
static const auto fieldDestFilePath = clazz->getField<jni::JString>("destFilePath");
|
|
44
|
+
jni::local_ref<jni::JString> destFilePath = this->getFieldValue(fieldDestFilePath);
|
|
45
|
+
static const auto fieldExpectedSha256 = clazz->getField<jni::JString>("expectedSha256");
|
|
46
|
+
jni::local_ref<jni::JString> expectedSha256 = this->getFieldValue(fieldExpectedSha256);
|
|
47
|
+
static const auto fieldSegmentCount = clazz->getField<jni::JDouble>("segmentCount");
|
|
48
|
+
jni::local_ref<jni::JDouble> segmentCount = this->getFieldValue(fieldSegmentCount);
|
|
49
|
+
static const auto fieldMinConcurrentBytes = clazz->getField<jni::JDouble>("minConcurrentBytes");
|
|
50
|
+
jni::local_ref<jni::JDouble> minConcurrentBytes = this->getFieldValue(fieldMinConcurrentBytes);
|
|
51
|
+
return RangeDownloadParams(
|
|
52
|
+
channel->toCpp(),
|
|
53
|
+
taskId->toStdString(),
|
|
54
|
+
url->toStdString(),
|
|
55
|
+
destFilePath->toStdString(),
|
|
56
|
+
expectedSha256 != nullptr ? std::make_optional(expectedSha256->toStdString()) : std::nullopt,
|
|
57
|
+
segmentCount != nullptr ? std::make_optional(segmentCount->value()) : std::nullopt,
|
|
58
|
+
minConcurrentBytes != nullptr ? std::make_optional(minConcurrentBytes->value()) : std::nullopt
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public:
|
|
63
|
+
/**
|
|
64
|
+
* Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
|
|
65
|
+
*/
|
|
66
|
+
[[maybe_unused]]
|
|
67
|
+
static jni::local_ref<JRangeDownloadParams::javaobject> fromCpp(const RangeDownloadParams& value) {
|
|
68
|
+
using JSignature = JRangeDownloadParams(jni::alias_ref<JDownloadChannel>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JDouble>, jni::alias_ref<jni::JDouble>);
|
|
69
|
+
static const auto clazz = javaClassStatic();
|
|
70
|
+
static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
|
|
71
|
+
return create(
|
|
72
|
+
clazz,
|
|
73
|
+
JDownloadChannel::fromCpp(value.channel),
|
|
74
|
+
jni::make_jstring(value.taskId),
|
|
75
|
+
jni::make_jstring(value.url),
|
|
76
|
+
jni::make_jstring(value.destFilePath),
|
|
77
|
+
value.expectedSha256.has_value() ? jni::make_jstring(value.expectedSha256.value()) : nullptr,
|
|
78
|
+
value.segmentCount.has_value() ? jni::JDouble::valueOf(value.segmentCount.value()) : nullptr,
|
|
79
|
+
value.minConcurrentBytes.has_value() ? jni::JDouble::valueOf(value.minConcurrentBytes.value()) : nullptr
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
} // namespace margelo::nitro::reactnativerangedownloader
|