@onekeyfe/react-native-image 3.0.98
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/OneKeyImage.podspec +32 -0
- package/README.md +88 -0
- package/android/CMakeLists.txt +12 -0
- package/android/build.gradle +85 -0
- package/android/consumer-rules.pro +10 -0
- package/android/gradle.properties +5 -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/onekeyimage/OneKeyImage.kt +616 -0
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyImageCache.kt +131 -0
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyImageDecodeDimensions.kt +169 -0
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyImageGlideRegistry.kt +285 -0
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyImageModel.kt +68 -0
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyImagePackage.kt +28 -0
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyImageSafety.kt +1120 -0
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyTosUrl.kt +93 -0
- package/android/src/test/java/com/margelo/nitro/onekeyimage/OneKeyAnimationTimelineInspectorTest.kt +210 -0
- package/android/src/test/java/com/margelo/nitro/onekeyimage/OneKeyImageCacheTypeTest.kt +16 -0
- package/android/src/test/java/com/margelo/nitro/onekeyimage/OneKeyImageDecodeDimensionsTest.kt +70 -0
- package/android/src/test/java/com/margelo/nitro/onekeyimage/OneKeyImageModelTest.kt +65 -0
- package/android/src/test/java/com/margelo/nitro/onekeyimage/OneKeyImageRequestSignatureTest.kt +33 -0
- package/android/src/test/java/com/margelo/nitro/onekeyimage/OneKeyImageSafetyTest.kt +346 -0
- package/android/src/test/java/com/margelo/nitro/onekeyimage/OneKeyResourceCleanupTest.kt +43 -0
- package/android/src/test/java/com/margelo/nitro/onekeyimage/OneKeyTerminalEventPairTest.kt +38 -0
- package/android/src/test/java/com/margelo/nitro/onekeyimage/OneKeyTosUrlTest.kt +82 -0
- package/ios/OneKeyImage.swift +636 -0
- package/ios/OneKeyImageCache.swift +215 -0
- package/ios/OneKeyImageRequestContext.swift +781 -0
- package/ios/OneKeyTosURL.swift +69 -0
- package/ios/tests/OneKeyImageInfrastructureTests.swift +555 -0
- package/ios/tests/OneKeyTosURLTests.swift +142 -0
- package/lib/module/OneKeyImage.nitro.js +30 -0
- package/lib/module/index.js +223 -0
- package/lib/module/package.json +1 -0
- package/lib/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
- package/lib/nitrogen/generated/android/c++/JFunc_void_double_double_OneKeyImageCacheType.hpp +77 -0
- package/lib/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
- package/lib/nitrogen/generated/android/c++/JHybridOneKeyImageCacheSpec.cpp +130 -0
- package/lib/nitrogen/generated/android/c++/JHybridOneKeyImageCacheSpec.hpp +66 -0
- package/lib/nitrogen/generated/android/c++/JHybridOneKeyImageSpec.cpp +255 -0
- package/lib/nitrogen/generated/android/c++/JHybridOneKeyImageSpec.hpp +93 -0
- package/lib/nitrogen/generated/android/c++/JOneKeyImageCachePolicy.hpp +64 -0
- package/lib/nitrogen/generated/android/c++/JOneKeyImageCacheType.hpp +61 -0
- package/lib/nitrogen/generated/android/c++/JOneKeyImageContentFit.hpp +64 -0
- package/lib/nitrogen/generated/android/c++/JOneKeyImageLoadingStrategy.hpp +61 -0
- package/lib/nitrogen/generated/android/c++/JOneKeyImagePreloadSource.hpp +88 -0
- package/lib/nitrogen/generated/android/c++/JOneKeyImageVariant.hpp +64 -0
- package/lib/nitrogen/generated/android/c++/views/JHybridOneKeyImageStateUpdater.cpp +144 -0
- package/lib/nitrogen/generated/android/c++/views/JHybridOneKeyImageStateUpdater.hpp +54 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/Func_void.kt +78 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/Func_void_double_double_OneKeyImageCacheType.kt +78 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/Func_void_std__string.kt +78 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/HybridOneKeyImageCacheSpec.kt +69 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/HybridOneKeyImageSpec.kt +189 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/OneKeyImageCachePolicy.kt +25 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/OneKeyImageCacheType.kt +24 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/OneKeyImageContentFit.kt +25 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/OneKeyImageLoadingStrategy.kt +24 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/OneKeyImagePreloadSource.kt +86 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/OneKeyImageVariant.kt +25 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/onekeyimageOnLoad.kt +35 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/views/HybridOneKeyImageManager.kt +96 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/views/HybridOneKeyImageStateUpdater.kt +23 -0
- package/lib/nitrogen/generated/android/onekeyimage+autolinking.cmake +85 -0
- package/lib/nitrogen/generated/android/onekeyimage+autolinking.gradle +27 -0
- package/lib/nitrogen/generated/android/onekeyimageOnLoad.cpp +78 -0
- package/lib/nitrogen/generated/android/onekeyimageOnLoad.hpp +34 -0
- package/lib/nitrogen/generated/ios/OneKeyImage+autolinking.rb +62 -0
- package/lib/nitrogen/generated/ios/OneKeyImage-Swift-Cxx-Bridge.cpp +90 -0
- package/lib/nitrogen/generated/ios/OneKeyImage-Swift-Cxx-Bridge.hpp +405 -0
- package/lib/nitrogen/generated/ios/OneKeyImage-Swift-Cxx-Umbrella.hpp +71 -0
- package/lib/nitrogen/generated/ios/OneKeyImageAutolinking.mm +41 -0
- package/lib/nitrogen/generated/ios/OneKeyImageAutolinking.swift +38 -0
- package/lib/nitrogen/generated/ios/c++/HybridOneKeyImageCacheSpecSwift.cpp +11 -0
- package/lib/nitrogen/generated/ios/c++/HybridOneKeyImageCacheSpecSwift.hpp +114 -0
- package/lib/nitrogen/generated/ios/c++/HybridOneKeyImageSpecSwift.cpp +11 -0
- package/lib/nitrogen/generated/ios/c++/HybridOneKeyImageSpecSwift.hpp +206 -0
- package/lib/nitrogen/generated/ios/c++/views/HybridOneKeyImageComponent.mm +228 -0
- package/lib/nitrogen/generated/ios/swift/Func_void.swift +46 -0
- package/lib/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
- package/lib/nitrogen/generated/ios/swift/Func_void_double_double_OneKeyImageCacheType.swift +46 -0
- package/lib/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
- package/lib/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
- package/lib/nitrogen/generated/ios/swift/HybridOneKeyImageCacheSpec.swift +58 -0
- package/lib/nitrogen/generated/ios/swift/HybridOneKeyImageCacheSpec_cxx.swift +202 -0
- package/lib/nitrogen/generated/ios/swift/HybridOneKeyImageSpec.swift +70 -0
- package/lib/nitrogen/generated/ios/swift/HybridOneKeyImageSpec_cxx.swift +539 -0
- package/lib/nitrogen/generated/ios/swift/OneKeyImageCachePolicy.swift +48 -0
- package/lib/nitrogen/generated/ios/swift/OneKeyImageCacheType.swift +44 -0
- package/lib/nitrogen/generated/ios/swift/OneKeyImageContentFit.swift +48 -0
- package/lib/nitrogen/generated/ios/swift/OneKeyImageLoadingStrategy.swift +44 -0
- package/lib/nitrogen/generated/ios/swift/OneKeyImagePreloadSource.swift +148 -0
- package/lib/nitrogen/generated/ios/swift/OneKeyImageVariant.swift +48 -0
- package/lib/nitrogen/generated/shared/c++/HybridOneKeyImageCacheSpec.cpp +24 -0
- package/lib/nitrogen/generated/shared/c++/HybridOneKeyImageCacheSpec.hpp +68 -0
- package/lib/nitrogen/generated/shared/c++/HybridOneKeyImageSpec.cpp +52 -0
- package/lib/nitrogen/generated/shared/c++/HybridOneKeyImageSpec.hpp +108 -0
- package/lib/nitrogen/generated/shared/c++/OneKeyImageCachePolicy.hpp +84 -0
- package/lib/nitrogen/generated/shared/c++/OneKeyImageCacheType.hpp +80 -0
- package/lib/nitrogen/generated/shared/c++/OneKeyImageContentFit.hpp +84 -0
- package/lib/nitrogen/generated/shared/c++/OneKeyImageLoadingStrategy.hpp +80 -0
- package/lib/nitrogen/generated/shared/c++/OneKeyImagePreloadSource.hpp +114 -0
- package/lib/nitrogen/generated/shared/c++/OneKeyImageVariant.hpp +84 -0
- package/lib/nitrogen/generated/shared/c++/views/HybridOneKeyImageComponent.cpp +62 -0
- package/lib/nitrogen/generated/shared/c++/views/HybridOneKeyImageComponent.hpp +132 -0
- package/lib/nitrogen/generated/shared/json/OneKeyImageConfig.json +24 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/OneKeyImage.nitro.d.ts +67 -0
- package/lib/typescript/src/index.d.ts +55 -0
- package/nitro.json +31 -0
- package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_double_double_OneKeyImageCacheType.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
- package/nitrogen/generated/android/c++/JHybridOneKeyImageCacheSpec.cpp +130 -0
- package/nitrogen/generated/android/c++/JHybridOneKeyImageCacheSpec.hpp +66 -0
- package/nitrogen/generated/android/c++/JHybridOneKeyImageSpec.cpp +255 -0
- package/nitrogen/generated/android/c++/JHybridOneKeyImageSpec.hpp +93 -0
- package/nitrogen/generated/android/c++/JOneKeyImageCachePolicy.hpp +64 -0
- package/nitrogen/generated/android/c++/JOneKeyImageCacheType.hpp +61 -0
- package/nitrogen/generated/android/c++/JOneKeyImageContentFit.hpp +64 -0
- package/nitrogen/generated/android/c++/JOneKeyImageLoadingStrategy.hpp +61 -0
- package/nitrogen/generated/android/c++/JOneKeyImagePreloadSource.hpp +88 -0
- package/nitrogen/generated/android/c++/JOneKeyImageVariant.hpp +64 -0
- package/nitrogen/generated/android/c++/views/JHybridOneKeyImageStateUpdater.cpp +144 -0
- package/nitrogen/generated/android/c++/views/JHybridOneKeyImageStateUpdater.hpp +54 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/Func_void.kt +78 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/Func_void_double_double_OneKeyImageCacheType.kt +78 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/Func_void_std__string.kt +78 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/HybridOneKeyImageCacheSpec.kt +69 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/HybridOneKeyImageSpec.kt +189 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/OneKeyImageCachePolicy.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/OneKeyImageCacheType.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/OneKeyImageContentFit.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/OneKeyImageLoadingStrategy.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/OneKeyImagePreloadSource.kt +86 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/OneKeyImageVariant.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/onekeyimageOnLoad.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/views/HybridOneKeyImageManager.kt +96 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/views/HybridOneKeyImageStateUpdater.kt +23 -0
- package/nitrogen/generated/android/onekeyimage+autolinking.cmake +85 -0
- package/nitrogen/generated/android/onekeyimage+autolinking.gradle +27 -0
- package/nitrogen/generated/android/onekeyimageOnLoad.cpp +78 -0
- package/nitrogen/generated/android/onekeyimageOnLoad.hpp +34 -0
- package/nitrogen/generated/ios/OneKeyImage+autolinking.rb +62 -0
- package/nitrogen/generated/ios/OneKeyImage-Swift-Cxx-Bridge.cpp +90 -0
- package/nitrogen/generated/ios/OneKeyImage-Swift-Cxx-Bridge.hpp +405 -0
- package/nitrogen/generated/ios/OneKeyImage-Swift-Cxx-Umbrella.hpp +71 -0
- package/nitrogen/generated/ios/OneKeyImageAutolinking.mm +41 -0
- package/nitrogen/generated/ios/OneKeyImageAutolinking.swift +38 -0
- package/nitrogen/generated/ios/c++/HybridOneKeyImageCacheSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridOneKeyImageCacheSpecSwift.hpp +114 -0
- package/nitrogen/generated/ios/c++/HybridOneKeyImageSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridOneKeyImageSpecSwift.hpp +206 -0
- package/nitrogen/generated/ios/c++/views/HybridOneKeyImageComponent.mm +228 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_double_double_OneKeyImageCacheType.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridOneKeyImageCacheSpec.swift +58 -0
- package/nitrogen/generated/ios/swift/HybridOneKeyImageCacheSpec_cxx.swift +202 -0
- package/nitrogen/generated/ios/swift/HybridOneKeyImageSpec.swift +70 -0
- package/nitrogen/generated/ios/swift/HybridOneKeyImageSpec_cxx.swift +539 -0
- package/nitrogen/generated/ios/swift/OneKeyImageCachePolicy.swift +48 -0
- package/nitrogen/generated/ios/swift/OneKeyImageCacheType.swift +44 -0
- package/nitrogen/generated/ios/swift/OneKeyImageContentFit.swift +48 -0
- package/nitrogen/generated/ios/swift/OneKeyImageLoadingStrategy.swift +44 -0
- package/nitrogen/generated/ios/swift/OneKeyImagePreloadSource.swift +148 -0
- package/nitrogen/generated/ios/swift/OneKeyImageVariant.swift +48 -0
- package/nitrogen/generated/shared/c++/HybridOneKeyImageCacheSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridOneKeyImageCacheSpec.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridOneKeyImageSpec.cpp +52 -0
- package/nitrogen/generated/shared/c++/HybridOneKeyImageSpec.hpp +108 -0
- package/nitrogen/generated/shared/c++/OneKeyImageCachePolicy.hpp +84 -0
- package/nitrogen/generated/shared/c++/OneKeyImageCacheType.hpp +80 -0
- package/nitrogen/generated/shared/c++/OneKeyImageContentFit.hpp +84 -0
- package/nitrogen/generated/shared/c++/OneKeyImageLoadingStrategy.hpp +80 -0
- package/nitrogen/generated/shared/c++/OneKeyImagePreloadSource.hpp +114 -0
- package/nitrogen/generated/shared/c++/OneKeyImageVariant.hpp +84 -0
- package/nitrogen/generated/shared/c++/views/HybridOneKeyImageComponent.cpp +62 -0
- package/nitrogen/generated/shared/c++/views/HybridOneKeyImageComponent.hpp +132 -0
- package/nitrogen/generated/shared/json/OneKeyImageConfig.json +24 -0
- package/package.json +128 -0
- package/src/OneKeyImage.nitro.ts +86 -0
- package/src/index.tsx +376 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import XCTest
|
|
2
|
+
|
|
3
|
+
@testable import OneKeyImage
|
|
4
|
+
|
|
5
|
+
final class OneKeyTosURLTests: XCTestCase {
|
|
6
|
+
func testOptimizesAllowedOneKeyAssetURL() throws {
|
|
7
|
+
let raw = try XCTUnwrap(URL(string: "https://common.onekey-asset.com/tokens/btc.png"))
|
|
8
|
+
let result = OneKeyTosURL.optimized(
|
|
9
|
+
rawURL: raw,
|
|
10
|
+
displaySize: 100,
|
|
11
|
+
scale: 2,
|
|
12
|
+
overscan: 1.1,
|
|
13
|
+
hasCustomIdentity: false
|
|
14
|
+
)
|
|
15
|
+
XCTAssertTrue(result.absoluteString.contains("x-tos-process="))
|
|
16
|
+
XCTAssertTrue(result.absoluteString.contains("w_256"))
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
func testDoesNotRewriteSignedOrCustomIdentityURL() throws {
|
|
20
|
+
let signed = try XCTUnwrap(
|
|
21
|
+
URL(string: "https://common.onekey-asset.com/avatar.png?X-Tos-Signature=secret")
|
|
22
|
+
)
|
|
23
|
+
XCTAssertEqual(
|
|
24
|
+
OneKeyTosURL.optimized(
|
|
25
|
+
rawURL: signed,
|
|
26
|
+
displaySize: 100,
|
|
27
|
+
scale: 2,
|
|
28
|
+
overscan: 1.1,
|
|
29
|
+
hasCustomIdentity: false
|
|
30
|
+
),
|
|
31
|
+
signed
|
|
32
|
+
)
|
|
33
|
+
let raw = try XCTUnwrap(URL(string: "https://common.onekey-asset.com/avatar.png"))
|
|
34
|
+
XCTAssertEqual(
|
|
35
|
+
OneKeyTosURL.optimized(
|
|
36
|
+
rawURL: raw,
|
|
37
|
+
displaySize: 100,
|
|
38
|
+
scale: 2,
|
|
39
|
+
overscan: 1.1,
|
|
40
|
+
hasCustomIdentity: true
|
|
41
|
+
),
|
|
42
|
+
raw
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
func testDoesNotRewriteUntrustedHostOrUnsupportedMedia() throws {
|
|
47
|
+
for value in [
|
|
48
|
+
"https://example.com/avatar.png",
|
|
49
|
+
"https://web.onekey-asset.com/avatar.png",
|
|
50
|
+
"https://common.onekey-asset.com/icon.svg",
|
|
51
|
+
"https://common.onekey-asset.com/video.mp4",
|
|
52
|
+
"https://common.onekey-asset.com/video.webm",
|
|
53
|
+
"https://common.onekey-asset.com/video.m4v",
|
|
54
|
+
"https://common.onekey-asset.com/video.mov",
|
|
55
|
+
"https://common.onekey-asset.com/video.avi",
|
|
56
|
+
] {
|
|
57
|
+
let raw = try XCTUnwrap(URL(string: value))
|
|
58
|
+
XCTAssertEqual(
|
|
59
|
+
OneKeyTosURL.optimized(
|
|
60
|
+
rawURL: raw,
|
|
61
|
+
displaySize: 100,
|
|
62
|
+
scale: 2,
|
|
63
|
+
overscan: 1.1,
|
|
64
|
+
hasCustomIdentity: false
|
|
65
|
+
),
|
|
66
|
+
raw
|
|
67
|
+
)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
func testUsesApprovedHostsBucketsAndCapsDPR() throws {
|
|
72
|
+
for host in [
|
|
73
|
+
"app-assets.onekey.so",
|
|
74
|
+
"uni.onekey-asset.com",
|
|
75
|
+
"uni-test.onekey-asset.com",
|
|
76
|
+
"common.onekey-asset.com",
|
|
77
|
+
"asset.onekey-asset.com",
|
|
78
|
+
] {
|
|
79
|
+
let raw = try XCTUnwrap(URL(string: "https://\(host)/token.png"))
|
|
80
|
+
let result = OneKeyTosURL.optimized(
|
|
81
|
+
rawURL: raw,
|
|
82
|
+
displaySize: 100,
|
|
83
|
+
scale: 5,
|
|
84
|
+
overscan: 1.1,
|
|
85
|
+
hasCustomIdentity: false
|
|
86
|
+
)
|
|
87
|
+
XCTAssertTrue(result.absoluteString.contains("w_480"))
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
func testNormalizesNonFiniteSizingInputsWithoutCrashing() throws {
|
|
92
|
+
let raw = try XCTUnwrap(URL(string: "https://common.onekey-asset.com/token.png"))
|
|
93
|
+
let result = OneKeyTosURL.optimized(
|
|
94
|
+
rawURL: raw,
|
|
95
|
+
displaySize: 100,
|
|
96
|
+
scale: .nan,
|
|
97
|
+
overscan: .infinity,
|
|
98
|
+
hasCustomIdentity: false
|
|
99
|
+
)
|
|
100
|
+
XCTAssertTrue(result.absoluteString.contains("w_128"))
|
|
101
|
+
XCTAssertEqual(
|
|
102
|
+
OneKeyTosURL.optimized(
|
|
103
|
+
rawURL: raw,
|
|
104
|
+
displaySize: .infinity,
|
|
105
|
+
scale: 2,
|
|
106
|
+
overscan: 1.1,
|
|
107
|
+
hasCustomIdentity: false
|
|
108
|
+
),
|
|
109
|
+
raw
|
|
110
|
+
)
|
|
111
|
+
let huge = OneKeyTosURL.optimized(
|
|
112
|
+
rawURL: raw,
|
|
113
|
+
displaySize: .greatestFiniteMagnitude,
|
|
114
|
+
scale: 3,
|
|
115
|
+
overscan: 1.1,
|
|
116
|
+
hasCustomIdentity: false
|
|
117
|
+
)
|
|
118
|
+
XCTAssertTrue(huge.absoluteString.contains("w_1280"))
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
func testSkipsEveryProtectedQueryFamily() throws {
|
|
122
|
+
for key in [
|
|
123
|
+
"expires", "policy", "signature", "token", "auth_key", "accesskeyid",
|
|
124
|
+
"ossaccesskeyid", "security-token", "x-amz-signature", "x-oss-signature",
|
|
125
|
+
"x-tos-process",
|
|
126
|
+
] {
|
|
127
|
+
let raw = try XCTUnwrap(
|
|
128
|
+
URL(string: "https://common.onekey-asset.com/token.png?\(key)=value")
|
|
129
|
+
)
|
|
130
|
+
XCTAssertEqual(
|
|
131
|
+
OneKeyTosURL.optimized(
|
|
132
|
+
rawURL: raw,
|
|
133
|
+
displaySize: 100,
|
|
134
|
+
scale: 2,
|
|
135
|
+
overscan: 1.1,
|
|
136
|
+
hasCustomIdentity: false
|
|
137
|
+
),
|
|
138
|
+
raw
|
|
139
|
+
)
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export let OneKeyImageVariant = /*#__PURE__*/function (OneKeyImageVariant) {
|
|
4
|
+
OneKeyImageVariant["GENERIC"] = "generic";
|
|
5
|
+
OneKeyImageVariant["TOKEN"] = "token";
|
|
6
|
+
OneKeyImageVariant["NETWORK"] = "network";
|
|
7
|
+
OneKeyImageVariant["AVATAR"] = "avatar";
|
|
8
|
+
return OneKeyImageVariant;
|
|
9
|
+
}({});
|
|
10
|
+
export let OneKeyImageContentFit = /*#__PURE__*/function (OneKeyImageContentFit) {
|
|
11
|
+
OneKeyImageContentFit["COVER"] = "cover";
|
|
12
|
+
OneKeyImageContentFit["CONTAIN"] = "contain";
|
|
13
|
+
OneKeyImageContentFit["FILL"] = "fill";
|
|
14
|
+
OneKeyImageContentFit["CENTER"] = "center";
|
|
15
|
+
return OneKeyImageContentFit;
|
|
16
|
+
}({});
|
|
17
|
+
export let OneKeyImageCachePolicy = /*#__PURE__*/function (OneKeyImageCachePolicy) {
|
|
18
|
+
OneKeyImageCachePolicy["MEMORY_DISK"] = "memory-disk";
|
|
19
|
+
OneKeyImageCachePolicy["MEMORY"] = "memory";
|
|
20
|
+
OneKeyImageCachePolicy["DISK"] = "disk";
|
|
21
|
+
OneKeyImageCachePolicy["NONE"] = "none";
|
|
22
|
+
return OneKeyImageCachePolicy;
|
|
23
|
+
}({});
|
|
24
|
+
export let OneKeyImageLoadingStrategy = /*#__PURE__*/function (OneKeyImageLoadingStrategy) {
|
|
25
|
+
OneKeyImageLoadingStrategy["STATIC"] = "static";
|
|
26
|
+
OneKeyImageLoadingStrategy["SKELETON"] = "skeleton";
|
|
27
|
+
OneKeyImageLoadingStrategy["NONE"] = "none";
|
|
28
|
+
return OneKeyImageLoadingStrategy;
|
|
29
|
+
}({});
|
|
30
|
+
//# sourceMappingURL=OneKeyImage.nitro.js.map
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { createElement, useEffect, useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { Image, Platform, StyleSheet, View } from 'react-native';
|
|
5
|
+
import { callback, getHostComponent, NitroModules } from 'react-native-nitro-modules';
|
|
6
|
+
const OneKeyImageConfig = require('../nitrogen/generated/shared/json/OneKeyImageConfig.json');
|
|
7
|
+
import { OneKeyImageCachePolicy, OneKeyImageContentFit, OneKeyImageLoadingStrategy, OneKeyImageVariant } from "./OneKeyImage.nitro.js";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
export { OneKeyImageCachePolicy, OneKeyImageContentFit, OneKeyImageLoadingStrategy, OneKeyImageVariant };
|
|
10
|
+
export let OneKeyImageCacheType = /*#__PURE__*/function (OneKeyImageCacheType) {
|
|
11
|
+
OneKeyImageCacheType["NONE"] = "none";
|
|
12
|
+
OneKeyImageCacheType["MEMORY"] = "memory";
|
|
13
|
+
OneKeyImageCacheType["DISK"] = "disk";
|
|
14
|
+
return OneKeyImageCacheType;
|
|
15
|
+
}({});
|
|
16
|
+
const NativeOneKeyImage = getHostComponent('OneKeyImage', () => OneKeyImageConfig);
|
|
17
|
+
const nativeCache = NitroModules.createHybridObject('OneKeyImageCache');
|
|
18
|
+
function unwrap(value) {
|
|
19
|
+
return typeof value === 'function' ? value : value?.f;
|
|
20
|
+
}
|
|
21
|
+
function normalizeSource(source) {
|
|
22
|
+
if (source == null) return undefined;
|
|
23
|
+
const resolved = Image.resolveAssetSource(source);
|
|
24
|
+
if (resolved?.uri) {
|
|
25
|
+
const original = typeof source === 'object' && !Array.isArray(source) ? source : undefined;
|
|
26
|
+
return {
|
|
27
|
+
uri: resolved.uri,
|
|
28
|
+
width: resolved.width,
|
|
29
|
+
height: resolved.height,
|
|
30
|
+
scale: resolved.scale,
|
|
31
|
+
headers: original?.headers,
|
|
32
|
+
cachePolicy: original?.cachePolicy
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
export function OneKeyImage({
|
|
38
|
+
source,
|
|
39
|
+
placeholder,
|
|
40
|
+
fallback,
|
|
41
|
+
variant = OneKeyImageVariant.GENERIC,
|
|
42
|
+
contentFit = OneKeyImageContentFit.COVER,
|
|
43
|
+
cachePolicy,
|
|
44
|
+
autoplay,
|
|
45
|
+
recyclingKey,
|
|
46
|
+
optimizeTos = true,
|
|
47
|
+
overscan = 1.1,
|
|
48
|
+
loadingStrategy = OneKeyImageLoadingStrategy.STATIC,
|
|
49
|
+
hybridRef,
|
|
50
|
+
onLoadStart,
|
|
51
|
+
onLoad,
|
|
52
|
+
onDisplay,
|
|
53
|
+
onError,
|
|
54
|
+
onLoadEnd,
|
|
55
|
+
style,
|
|
56
|
+
...viewProps
|
|
57
|
+
}) {
|
|
58
|
+
const normalized = useMemo(() => normalizeSource(source), [source]);
|
|
59
|
+
const resolvedCachePolicy = cachePolicy ?? normalized?.cachePolicy ?? OneKeyImageCachePolicy.MEMORY_DISK;
|
|
60
|
+
const identity = `${normalized?.uri ?? ''}|${JSON.stringify(normalized?.headers ?? {})}|${resolvedCachePolicy}|${recyclingKey ?? ''}|${contentFit}|${optimizeTos ? '1' : '0'}|${overscan}`;
|
|
61
|
+
const hasSource = normalized != null;
|
|
62
|
+
const hasOverlay = placeholder != null || fallback != null;
|
|
63
|
+
const [loadState, setLoadState] = useState({
|
|
64
|
+
identity,
|
|
65
|
+
status: hasSource ? 'loading' : 'fallback'
|
|
66
|
+
});
|
|
67
|
+
const effectiveState = loadState.identity === identity ? loadState.status : hasSource ? 'loading' : 'fallback';
|
|
68
|
+
const refs = useRef({
|
|
69
|
+
hybridRef: unwrap(hybridRef),
|
|
70
|
+
onLoadStart: unwrap(onLoadStart),
|
|
71
|
+
onLoad: unwrap(onLoad),
|
|
72
|
+
onDisplay: unwrap(onDisplay),
|
|
73
|
+
onError: unwrap(onError),
|
|
74
|
+
onLoadEnd: unwrap(onLoadEnd)
|
|
75
|
+
});
|
|
76
|
+
refs.current = {
|
|
77
|
+
hybridRef: unwrap(hybridRef),
|
|
78
|
+
onLoadStart: unwrap(onLoadStart),
|
|
79
|
+
onLoad: unwrap(onLoad),
|
|
80
|
+
onDisplay: unwrap(onDisplay),
|
|
81
|
+
onError: unwrap(onError),
|
|
82
|
+
onLoadEnd: unwrap(onLoadEnd)
|
|
83
|
+
};
|
|
84
|
+
const nativeMethodsRef = useRef(null);
|
|
85
|
+
const pendingOverlayReloadRef = useRef(null);
|
|
86
|
+
const previousRenderRef = useRef({
|
|
87
|
+
hasOverlay,
|
|
88
|
+
identity
|
|
89
|
+
});
|
|
90
|
+
useEffect(() => {
|
|
91
|
+
const previous = previousRenderRef.current;
|
|
92
|
+
const identityChanged = previous.identity !== identity;
|
|
93
|
+
if (hasOverlay && (!previous.hasOverlay || identityChanged)) {
|
|
94
|
+
const status = hasSource ? 'loading' : 'fallback';
|
|
95
|
+
setLoadState({
|
|
96
|
+
identity,
|
|
97
|
+
status
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
if (hasOverlay && !previous.hasOverlay && !identityChanged && hasSource) {
|
|
101
|
+
pendingOverlayReloadRef.current = identity;
|
|
102
|
+
const nativeMethods = nativeMethodsRef.current;
|
|
103
|
+
if (nativeMethods != null) {
|
|
104
|
+
pendingOverlayReloadRef.current = null;
|
|
105
|
+
nativeMethods.reload();
|
|
106
|
+
}
|
|
107
|
+
} else if (!hasOverlay || identityChanged) {
|
|
108
|
+
pendingOverlayReloadRef.current = null;
|
|
109
|
+
}
|
|
110
|
+
previousRenderRef.current = {
|
|
111
|
+
hasOverlay,
|
|
112
|
+
identity
|
|
113
|
+
};
|
|
114
|
+
}, [hasOverlay, hasSource, identity]);
|
|
115
|
+
const needsHybridRef = hasOverlay || refs.current.hybridRef != null;
|
|
116
|
+
const needsLoadStart = hasOverlay || refs.current.onLoadStart != null;
|
|
117
|
+
const needsLoad = refs.current.onLoad != null;
|
|
118
|
+
const needsDisplay = placeholder != null || refs.current.onDisplay != null;
|
|
119
|
+
const needsError = hasOverlay || refs.current.onError != null;
|
|
120
|
+
const needsLoadEnd = refs.current.onLoadEnd != null;
|
|
121
|
+
const nativeCallbacks = useMemo(() => ({
|
|
122
|
+
hybridRef: needsHybridRef ? callback(ref => {
|
|
123
|
+
nativeMethodsRef.current = ref;
|
|
124
|
+
if (pendingOverlayReloadRef.current === identity) {
|
|
125
|
+
pendingOverlayReloadRef.current = null;
|
|
126
|
+
ref.reload();
|
|
127
|
+
}
|
|
128
|
+
refs.current.hybridRef?.(ref);
|
|
129
|
+
}) : undefined,
|
|
130
|
+
onLoadStart: needsLoadStart ? callback(() => {
|
|
131
|
+
if (hasOverlay) {
|
|
132
|
+
setLoadState({
|
|
133
|
+
identity,
|
|
134
|
+
status: 'loading'
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
refs.current.onLoadStart?.();
|
|
138
|
+
}) : undefined,
|
|
139
|
+
onLoad: needsLoad ? callback((width, height, cacheType) => {
|
|
140
|
+
refs.current.onLoad?.({
|
|
141
|
+
source: {
|
|
142
|
+
url: normalized?.uri ?? '',
|
|
143
|
+
width,
|
|
144
|
+
height
|
|
145
|
+
},
|
|
146
|
+
cacheType: cacheType
|
|
147
|
+
});
|
|
148
|
+
}) : undefined,
|
|
149
|
+
onDisplay: needsDisplay ? callback(() => {
|
|
150
|
+
if (placeholder != null) {
|
|
151
|
+
setLoadState({
|
|
152
|
+
identity,
|
|
153
|
+
status: 'loaded'
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
refs.current.onDisplay?.();
|
|
157
|
+
}) : undefined,
|
|
158
|
+
onError: needsError ? callback(message => {
|
|
159
|
+
if (hasOverlay) {
|
|
160
|
+
setLoadState({
|
|
161
|
+
identity,
|
|
162
|
+
status: 'fallback'
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
refs.current.onError?.({
|
|
166
|
+
error: message
|
|
167
|
+
});
|
|
168
|
+
}) : undefined,
|
|
169
|
+
onLoadEnd: needsLoadEnd ? callback(() => refs.current.onLoadEnd?.()) : undefined
|
|
170
|
+
}), [hasOverlay, identity, needsDisplay, needsError, needsHybridRef, needsLoad, needsLoadEnd, needsLoadStart, normalized?.uri, placeholder]);
|
|
171
|
+
const native = /*#__PURE__*/createElement(NativeOneKeyImage, {
|
|
172
|
+
...viewProps,
|
|
173
|
+
...nativeCallbacks,
|
|
174
|
+
style: hasOverlay ? StyleSheet.absoluteFill : style,
|
|
175
|
+
sourceUri: normalized?.uri,
|
|
176
|
+
sourceHeadersJson: normalized?.headers ? JSON.stringify(normalized.headers) : undefined,
|
|
177
|
+
variant,
|
|
178
|
+
contentFit,
|
|
179
|
+
cachePolicy: resolvedCachePolicy,
|
|
180
|
+
autoplay: autoplay ?? Platform.OS !== 'android',
|
|
181
|
+
recyclingKey,
|
|
182
|
+
optimizeTos,
|
|
183
|
+
overscan,
|
|
184
|
+
loadingStrategy: placeholder == null ? loadingStrategy : OneKeyImageLoadingStrategy.NONE
|
|
185
|
+
});
|
|
186
|
+
if (!hasOverlay) return native;
|
|
187
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
188
|
+
style: [style, styles.overlayContainer],
|
|
189
|
+
collapsable: false,
|
|
190
|
+
children: [native, effectiveState === 'loading' && placeholder != null ? /*#__PURE__*/_jsx(View, {
|
|
191
|
+
pointerEvents: "none",
|
|
192
|
+
style: StyleSheet.absoluteFill,
|
|
193
|
+
children: placeholder
|
|
194
|
+
}) : null, effectiveState === 'fallback' && fallback != null ? /*#__PURE__*/_jsx(View, {
|
|
195
|
+
pointerEvents: "none",
|
|
196
|
+
style: StyleSheet.absoluteFill,
|
|
197
|
+
children: fallback
|
|
198
|
+
}) : null]
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
export const OneKeyImageCache = {
|
|
202
|
+
preload(sources) {
|
|
203
|
+
return nativeCache.preload(sources.filter(source => Boolean(source.uri)).map(source => ({
|
|
204
|
+
uri: source.uri,
|
|
205
|
+
headersJson: source.headers ? JSON.stringify(source.headers) : undefined,
|
|
206
|
+
cachePolicy: source.cachePolicy ?? OneKeyImageCachePolicy.MEMORY_DISK,
|
|
207
|
+
resizeWidth: source.resizeWidth,
|
|
208
|
+
resizeHeight: source.resizeHeight,
|
|
209
|
+
pixelRatio: source.pixelRatio,
|
|
210
|
+
overscan: source.overscan,
|
|
211
|
+
optimizeTos: source.optimizeTos
|
|
212
|
+
})));
|
|
213
|
+
},
|
|
214
|
+
clearMemory: () => nativeCache.clearMemory(),
|
|
215
|
+
clearDisk: () => nativeCache.clearDisk(),
|
|
216
|
+
clearAll: () => nativeCache.clearAll()
|
|
217
|
+
};
|
|
218
|
+
const styles = StyleSheet.create({
|
|
219
|
+
overlayContainer: {
|
|
220
|
+
overflow: 'hidden'
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JFunc_void.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include <functional>
|
|
12
|
+
|
|
13
|
+
#include <functional>
|
|
14
|
+
#include <NitroModules/JNICallable.hpp>
|
|
15
|
+
|
|
16
|
+
namespace margelo::nitro::onekeyimage {
|
|
17
|
+
|
|
18
|
+
using namespace facebook;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Represents the Java/Kotlin callback `() -> Unit`.
|
|
22
|
+
* This can be passed around between C++ and Java/Kotlin.
|
|
23
|
+
*/
|
|
24
|
+
struct JFunc_void: public jni::JavaClass<JFunc_void> {
|
|
25
|
+
public:
|
|
26
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/onekeyimage/Func_void;";
|
|
27
|
+
|
|
28
|
+
public:
|
|
29
|
+
/**
|
|
30
|
+
* Invokes the function this `JFunc_void` instance holds through JNI.
|
|
31
|
+
*/
|
|
32
|
+
void invoke() const {
|
|
33
|
+
static const auto method = javaClassStatic()->getMethod<void()>("invoke");
|
|
34
|
+
method(self());
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* An implementation of Func_void that is backed by a C++ implementation (using `std::function<...>`)
|
|
40
|
+
*/
|
|
41
|
+
class JFunc_void_cxx final: public jni::HybridClass<JFunc_void_cxx, JFunc_void> {
|
|
42
|
+
public:
|
|
43
|
+
static jni::local_ref<JFunc_void::javaobject> fromCpp(const std::function<void()>& func) {
|
|
44
|
+
return JFunc_void_cxx::newObjectCxxArgs(func);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public:
|
|
48
|
+
/**
|
|
49
|
+
* Invokes the C++ `std::function<...>` this `JFunc_void_cxx` instance holds.
|
|
50
|
+
*/
|
|
51
|
+
void invoke_cxx() {
|
|
52
|
+
_func();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public:
|
|
56
|
+
[[nodiscard]]
|
|
57
|
+
inline const std::function<void()>& getFunction() const {
|
|
58
|
+
return _func;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public:
|
|
62
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/onekeyimage/Func_void_cxx;";
|
|
63
|
+
static void registerNatives() {
|
|
64
|
+
registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_cxx::invoke_cxx)});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private:
|
|
68
|
+
explicit JFunc_void_cxx(const std::function<void()>& func): _func(func) { }
|
|
69
|
+
|
|
70
|
+
private:
|
|
71
|
+
friend HybridBase;
|
|
72
|
+
std::function<void()> _func;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
} // namespace margelo::nitro::onekeyimage
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JFunc_void_double_double_OneKeyImageCacheType.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include <functional>
|
|
12
|
+
|
|
13
|
+
#include "OneKeyImageCacheType.hpp"
|
|
14
|
+
#include <functional>
|
|
15
|
+
#include <NitroModules/JNICallable.hpp>
|
|
16
|
+
#include "JOneKeyImageCacheType.hpp"
|
|
17
|
+
|
|
18
|
+
namespace margelo::nitro::onekeyimage {
|
|
19
|
+
|
|
20
|
+
using namespace facebook;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Represents the Java/Kotlin callback `(width: Double, height: Double, cacheType: OneKeyImageCacheType) -> Unit`.
|
|
24
|
+
* This can be passed around between C++ and Java/Kotlin.
|
|
25
|
+
*/
|
|
26
|
+
struct JFunc_void_double_double_OneKeyImageCacheType: public jni::JavaClass<JFunc_void_double_double_OneKeyImageCacheType> {
|
|
27
|
+
public:
|
|
28
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/onekeyimage/Func_void_double_double_OneKeyImageCacheType;";
|
|
29
|
+
|
|
30
|
+
public:
|
|
31
|
+
/**
|
|
32
|
+
* Invokes the function this `JFunc_void_double_double_OneKeyImageCacheType` instance holds through JNI.
|
|
33
|
+
*/
|
|
34
|
+
void invoke(double width, double height, OneKeyImageCacheType cacheType) const {
|
|
35
|
+
static const auto method = javaClassStatic()->getMethod<void(double /* width */, double /* height */, jni::alias_ref<JOneKeyImageCacheType> /* cacheType */)>("invoke");
|
|
36
|
+
method(self(), width, height, JOneKeyImageCacheType::fromCpp(cacheType));
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* An implementation of Func_void_double_double_OneKeyImageCacheType that is backed by a C++ implementation (using `std::function<...>`)
|
|
42
|
+
*/
|
|
43
|
+
class JFunc_void_double_double_OneKeyImageCacheType_cxx final: public jni::HybridClass<JFunc_void_double_double_OneKeyImageCacheType_cxx, JFunc_void_double_double_OneKeyImageCacheType> {
|
|
44
|
+
public:
|
|
45
|
+
static jni::local_ref<JFunc_void_double_double_OneKeyImageCacheType::javaobject> fromCpp(const std::function<void(double /* width */, double /* height */, OneKeyImageCacheType /* cacheType */)>& func) {
|
|
46
|
+
return JFunc_void_double_double_OneKeyImageCacheType_cxx::newObjectCxxArgs(func);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
public:
|
|
50
|
+
/**
|
|
51
|
+
* Invokes the C++ `std::function<...>` this `JFunc_void_double_double_OneKeyImageCacheType_cxx` instance holds.
|
|
52
|
+
*/
|
|
53
|
+
void invoke_cxx(double width, double height, jni::alias_ref<JOneKeyImageCacheType> cacheType) {
|
|
54
|
+
_func(width, height, cacheType->toCpp());
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public:
|
|
58
|
+
[[nodiscard]]
|
|
59
|
+
inline const std::function<void(double /* width */, double /* height */, OneKeyImageCacheType /* cacheType */)>& getFunction() const {
|
|
60
|
+
return _func;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public:
|
|
64
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/onekeyimage/Func_void_double_double_OneKeyImageCacheType_cxx;";
|
|
65
|
+
static void registerNatives() {
|
|
66
|
+
registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_double_double_OneKeyImageCacheType_cxx::invoke_cxx)});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
private:
|
|
70
|
+
explicit JFunc_void_double_double_OneKeyImageCacheType_cxx(const std::function<void(double /* width */, double /* height */, OneKeyImageCacheType /* cacheType */)>& func): _func(func) { }
|
|
71
|
+
|
|
72
|
+
private:
|
|
73
|
+
friend HybridBase;
|
|
74
|
+
std::function<void(double /* width */, double /* height */, OneKeyImageCacheType /* cacheType */)> _func;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
} // namespace margelo::nitro::onekeyimage
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JFunc_void_std__string.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include <functional>
|
|
12
|
+
|
|
13
|
+
#include <string>
|
|
14
|
+
#include <functional>
|
|
15
|
+
#include <NitroModules/JNICallable.hpp>
|
|
16
|
+
|
|
17
|
+
namespace margelo::nitro::onekeyimage {
|
|
18
|
+
|
|
19
|
+
using namespace facebook;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Represents the Java/Kotlin callback `(message: String) -> Unit`.
|
|
23
|
+
* This can be passed around between C++ and Java/Kotlin.
|
|
24
|
+
*/
|
|
25
|
+
struct JFunc_void_std__string: public jni::JavaClass<JFunc_void_std__string> {
|
|
26
|
+
public:
|
|
27
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/onekeyimage/Func_void_std__string;";
|
|
28
|
+
|
|
29
|
+
public:
|
|
30
|
+
/**
|
|
31
|
+
* Invokes the function this `JFunc_void_std__string` instance holds through JNI.
|
|
32
|
+
*/
|
|
33
|
+
void invoke(const std::string& message) const {
|
|
34
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* message */)>("invoke");
|
|
35
|
+
method(self(), jni::make_jstring(message));
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* An implementation of Func_void_std__string that is backed by a C++ implementation (using `std::function<...>`)
|
|
41
|
+
*/
|
|
42
|
+
class JFunc_void_std__string_cxx final: public jni::HybridClass<JFunc_void_std__string_cxx, JFunc_void_std__string> {
|
|
43
|
+
public:
|
|
44
|
+
static jni::local_ref<JFunc_void_std__string::javaobject> fromCpp(const std::function<void(const std::string& /* message */)>& func) {
|
|
45
|
+
return JFunc_void_std__string_cxx::newObjectCxxArgs(func);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public:
|
|
49
|
+
/**
|
|
50
|
+
* Invokes the C++ `std::function<...>` this `JFunc_void_std__string_cxx` instance holds.
|
|
51
|
+
*/
|
|
52
|
+
void invoke_cxx(jni::alias_ref<jni::JString> message) {
|
|
53
|
+
_func(message->toStdString());
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public:
|
|
57
|
+
[[nodiscard]]
|
|
58
|
+
inline const std::function<void(const std::string& /* message */)>& getFunction() const {
|
|
59
|
+
return _func;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public:
|
|
63
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/onekeyimage/Func_void_std__string_cxx;";
|
|
64
|
+
static void registerNatives() {
|
|
65
|
+
registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_std__string_cxx::invoke_cxx)});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private:
|
|
69
|
+
explicit JFunc_void_std__string_cxx(const std::function<void(const std::string& /* message */)>& func): _func(func) { }
|
|
70
|
+
|
|
71
|
+
private:
|
|
72
|
+
friend HybridBase;
|
|
73
|
+
std::function<void(const std::string& /* message */)> _func;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
} // namespace margelo::nitro::onekeyimage
|