@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
package/package.json
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@onekeyfe/react-native-image",
|
|
3
|
+
"version": "3.0.98",
|
|
4
|
+
"description": "High-performance native image view for OneKey",
|
|
5
|
+
"main": "./lib/module/index.js",
|
|
6
|
+
"types": "./lib/typescript/src/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"source": "./src/index.tsx",
|
|
10
|
+
"types": "./lib/typescript/src/index.d.ts",
|
|
11
|
+
"default": "./lib/module/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./package.json": "./package.json"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"src",
|
|
17
|
+
"lib",
|
|
18
|
+
"android",
|
|
19
|
+
"ios",
|
|
20
|
+
"cpp",
|
|
21
|
+
"nitrogen",
|
|
22
|
+
"nitro.json",
|
|
23
|
+
"*.podspec",
|
|
24
|
+
"react-native.config.js",
|
|
25
|
+
"!ios/build",
|
|
26
|
+
"!android/build",
|
|
27
|
+
"!android/gradle",
|
|
28
|
+
"!android/gradlew",
|
|
29
|
+
"!android/gradlew.bat",
|
|
30
|
+
"!android/local.properties",
|
|
31
|
+
"!**/__tests__",
|
|
32
|
+
"!**/.*",
|
|
33
|
+
"!**/*.map"
|
|
34
|
+
],
|
|
35
|
+
"scripts": {
|
|
36
|
+
"clean": "del-cli android/build lib",
|
|
37
|
+
"prepare": "rm -rf lib && bob build && cp -r nitrogen lib/nitrogen",
|
|
38
|
+
"nitrogen": "nitrogen",
|
|
39
|
+
"typecheck": "tsc",
|
|
40
|
+
"lint": "eslint \"**/*.{js,ts,tsx}\"",
|
|
41
|
+
"test": "jest",
|
|
42
|
+
"release": "yarn nitrogen && yarn prepare && npm whoami && npm publish --access public"
|
|
43
|
+
},
|
|
44
|
+
"keywords": [
|
|
45
|
+
"react-native",
|
|
46
|
+
"image",
|
|
47
|
+
"ios",
|
|
48
|
+
"android"
|
|
49
|
+
],
|
|
50
|
+
"repository": {
|
|
51
|
+
"type": "git",
|
|
52
|
+
"url": "git+https://github.com/OneKeyHQ/app-modules.git"
|
|
53
|
+
},
|
|
54
|
+
"author": "@onekeyfe <huanming@onekey.so>",
|
|
55
|
+
"license": "MIT",
|
|
56
|
+
"homepage": "https://github.com/OneKeyHQ/app-modules",
|
|
57
|
+
"publishConfig": {
|
|
58
|
+
"registry": "https://registry.npmjs.org/"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@eslint/compat": "^1.3.2",
|
|
62
|
+
"@eslint/eslintrc": "^3.3.1",
|
|
63
|
+
"@eslint/js": "^9.35.0",
|
|
64
|
+
"@react-native/babel-preset": "0.86.2",
|
|
65
|
+
"@react-native/eslint-config": "0.86.2",
|
|
66
|
+
"@types/jest": "^29.5.14",
|
|
67
|
+
"@types/react": "^19.2.0",
|
|
68
|
+
"@types/react-test-renderer": "^19.1.0",
|
|
69
|
+
"del-cli": "^6.0.0",
|
|
70
|
+
"eslint": "^9.35.0",
|
|
71
|
+
"eslint-config-prettier": "^10.1.8",
|
|
72
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
73
|
+
"jest": "^29.7.0",
|
|
74
|
+
"nitrogen": "0.37.0",
|
|
75
|
+
"prettier": "^2.8.8",
|
|
76
|
+
"react": "19.2.3",
|
|
77
|
+
"react-native": "patch:react-native@npm%3A0.86.2#~/.yarn/patches/react-native-npm-0.86.2-c9d546616f.patch",
|
|
78
|
+
"react-native-builder-bob": "^0.40.13",
|
|
79
|
+
"react-native-nitro-modules": "0.37.0",
|
|
80
|
+
"react-test-renderer": "19.2.3",
|
|
81
|
+
"typescript": "^5.9.2"
|
|
82
|
+
},
|
|
83
|
+
"peerDependencies": {
|
|
84
|
+
"@onekeyfe/react-native-skeleton": "3.0.98",
|
|
85
|
+
"react": "*",
|
|
86
|
+
"react-native": "*",
|
|
87
|
+
"react-native-nitro-modules": "0.37.0"
|
|
88
|
+
},
|
|
89
|
+
"packageManager": "yarn@4.11.0",
|
|
90
|
+
"react-native-builder-bob": {
|
|
91
|
+
"source": "src",
|
|
92
|
+
"output": "lib",
|
|
93
|
+
"targets": [
|
|
94
|
+
[
|
|
95
|
+
"custom",
|
|
96
|
+
{
|
|
97
|
+
"script": "nitrogen",
|
|
98
|
+
"clean": "nitrogen/"
|
|
99
|
+
}
|
|
100
|
+
],
|
|
101
|
+
[
|
|
102
|
+
"module",
|
|
103
|
+
{
|
|
104
|
+
"esm": true
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
[
|
|
108
|
+
"typescript",
|
|
109
|
+
{
|
|
110
|
+
"project": "tsconfig.build.json"
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
"prettier": {
|
|
116
|
+
"quoteProps": "consistent",
|
|
117
|
+
"singleQuote": true,
|
|
118
|
+
"tabWidth": 2,
|
|
119
|
+
"trailingComma": "es5",
|
|
120
|
+
"useTabs": false
|
|
121
|
+
},
|
|
122
|
+
"jest": {
|
|
123
|
+
"preset": "react-native",
|
|
124
|
+
"modulePathIgnorePatterns": [
|
|
125
|
+
"<rootDir>/lib/"
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
HybridObject,
|
|
3
|
+
HybridView,
|
|
4
|
+
HybridViewMethods,
|
|
5
|
+
HybridViewProps,
|
|
6
|
+
} from 'react-native-nitro-modules';
|
|
7
|
+
|
|
8
|
+
export enum OneKeyImageVariant {
|
|
9
|
+
GENERIC = 'generic',
|
|
10
|
+
TOKEN = 'token',
|
|
11
|
+
NETWORK = 'network',
|
|
12
|
+
AVATAR = 'avatar',
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export enum OneKeyImageContentFit {
|
|
16
|
+
COVER = 'cover',
|
|
17
|
+
CONTAIN = 'contain',
|
|
18
|
+
FILL = 'fill',
|
|
19
|
+
CENTER = 'center',
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export enum OneKeyImageCachePolicy {
|
|
23
|
+
MEMORY_DISK = 'memory-disk',
|
|
24
|
+
MEMORY = 'memory',
|
|
25
|
+
DISK = 'disk',
|
|
26
|
+
NONE = 'none',
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type OneKeyImageCacheType = 'none' | 'memory' | 'disk';
|
|
30
|
+
|
|
31
|
+
export enum OneKeyImageLoadingStrategy {
|
|
32
|
+
STATIC = 'static',
|
|
33
|
+
SKELETON = 'skeleton',
|
|
34
|
+
NONE = 'none',
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface OneKeyImageNativeProps extends HybridViewProps {
|
|
38
|
+
sourceUri?: string;
|
|
39
|
+
sourceHeadersJson?: string;
|
|
40
|
+
variant?: OneKeyImageVariant;
|
|
41
|
+
contentFit?: OneKeyImageContentFit;
|
|
42
|
+
cachePolicy?: OneKeyImageCachePolicy;
|
|
43
|
+
autoplay?: boolean;
|
|
44
|
+
recyclingKey?: string;
|
|
45
|
+
optimizeTos?: boolean;
|
|
46
|
+
overscan?: number;
|
|
47
|
+
loadingStrategy?: OneKeyImageLoadingStrategy;
|
|
48
|
+
onLoadStart?: () => void;
|
|
49
|
+
onLoad?: (
|
|
50
|
+
width: number,
|
|
51
|
+
height: number,
|
|
52
|
+
cacheType: OneKeyImageCacheType
|
|
53
|
+
) => void;
|
|
54
|
+
onDisplay?: () => void;
|
|
55
|
+
onError?: (message: string) => void;
|
|
56
|
+
onLoadEnd?: () => void;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface OneKeyImageMethods extends HybridViewMethods {
|
|
60
|
+
reload(): void;
|
|
61
|
+
cancel(): void;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface OneKeyImagePreloadSource {
|
|
65
|
+
uri: string;
|
|
66
|
+
headersJson?: string;
|
|
67
|
+
cachePolicy?: OneKeyImageCachePolicy;
|
|
68
|
+
resizeWidth?: number;
|
|
69
|
+
resizeHeight?: number;
|
|
70
|
+
pixelRatio?: number;
|
|
71
|
+
overscan?: number;
|
|
72
|
+
optimizeTos?: boolean;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export interface OneKeyImageCache
|
|
76
|
+
extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> {
|
|
77
|
+
preload(sources: OneKeyImagePreloadSource[]): Promise<boolean>;
|
|
78
|
+
clearMemory(): Promise<void>;
|
|
79
|
+
clearDisk(): Promise<void>;
|
|
80
|
+
clearAll(): Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export type OneKeyImage = HybridView<
|
|
84
|
+
OneKeyImageNativeProps,
|
|
85
|
+
OneKeyImageMethods
|
|
86
|
+
>;
|
package/src/index.tsx
ADDED
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createElement,
|
|
3
|
+
useEffect,
|
|
4
|
+
useMemo,
|
|
5
|
+
useRef,
|
|
6
|
+
useState,
|
|
7
|
+
type ReactNode,
|
|
8
|
+
} from 'react';
|
|
9
|
+
import {
|
|
10
|
+
Image,
|
|
11
|
+
Platform,
|
|
12
|
+
StyleSheet,
|
|
13
|
+
View,
|
|
14
|
+
type ImageSourcePropType,
|
|
15
|
+
type ImageURISource,
|
|
16
|
+
type ViewProps,
|
|
17
|
+
} from 'react-native';
|
|
18
|
+
import {
|
|
19
|
+
callback,
|
|
20
|
+
getHostComponent,
|
|
21
|
+
NitroModules,
|
|
22
|
+
type NitroViewWrappedCallback,
|
|
23
|
+
} from 'react-native-nitro-modules';
|
|
24
|
+
const OneKeyImageConfig = require('../nitrogen/generated/shared/json/OneKeyImageConfig.json');
|
|
25
|
+
import type {
|
|
26
|
+
OneKeyImageCache as OneKeyImageCacheHybrid,
|
|
27
|
+
OneKeyImageCacheType as OneKeyImageNativeCacheType,
|
|
28
|
+
OneKeyImageMethods,
|
|
29
|
+
OneKeyImageNativeProps,
|
|
30
|
+
} from './OneKeyImage.nitro';
|
|
31
|
+
import {
|
|
32
|
+
OneKeyImageCachePolicy,
|
|
33
|
+
OneKeyImageContentFit,
|
|
34
|
+
OneKeyImageLoadingStrategy,
|
|
35
|
+
OneKeyImageVariant,
|
|
36
|
+
} from './OneKeyImage.nitro';
|
|
37
|
+
|
|
38
|
+
export {
|
|
39
|
+
OneKeyImageCachePolicy,
|
|
40
|
+
OneKeyImageContentFit,
|
|
41
|
+
OneKeyImageLoadingStrategy,
|
|
42
|
+
OneKeyImageVariant,
|
|
43
|
+
};
|
|
44
|
+
export type {
|
|
45
|
+
OneKeyImageMethods,
|
|
46
|
+
OneKeyImageNativeProps,
|
|
47
|
+
OneKeyImagePreloadSource,
|
|
48
|
+
} from './OneKeyImage.nitro';
|
|
49
|
+
|
|
50
|
+
export enum OneKeyImageCacheType {
|
|
51
|
+
NONE = 'none',
|
|
52
|
+
MEMORY = 'memory',
|
|
53
|
+
DISK = 'disk',
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
type MaybeWrappedCallback<T extends (...args: any[]) => void> =
|
|
57
|
+
| T
|
|
58
|
+
| NitroViewWrappedCallback<T>;
|
|
59
|
+
|
|
60
|
+
export interface OneKeyImageSource extends ImageURISource {
|
|
61
|
+
cachePolicy?: OneKeyImageCachePolicy;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface OneKeyImagePreloadInput extends OneKeyImageSource {
|
|
65
|
+
resizeWidth?: number;
|
|
66
|
+
resizeHeight?: number;
|
|
67
|
+
pixelRatio?: number;
|
|
68
|
+
overscan?: number;
|
|
69
|
+
optimizeTos?: boolean;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface OneKeyImageLoadEvent {
|
|
73
|
+
source: {
|
|
74
|
+
url: string;
|
|
75
|
+
width: number;
|
|
76
|
+
height: number;
|
|
77
|
+
};
|
|
78
|
+
cacheType: OneKeyImageCacheType;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface OneKeyImageErrorEvent {
|
|
82
|
+
error: string;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface OneKeyImageProps
|
|
86
|
+
extends Omit<
|
|
87
|
+
OneKeyImageNativeProps,
|
|
88
|
+
| 'sourceUri'
|
|
89
|
+
| 'sourceHeadersJson'
|
|
90
|
+
| 'onLoadStart'
|
|
91
|
+
| 'onLoad'
|
|
92
|
+
| 'onDisplay'
|
|
93
|
+
| 'onError'
|
|
94
|
+
| 'onLoadEnd'
|
|
95
|
+
>,
|
|
96
|
+
ViewProps {
|
|
97
|
+
source?: OneKeyImageSource | number;
|
|
98
|
+
/** Content shown while a non-null source is loading. */
|
|
99
|
+
placeholder?: ReactNode;
|
|
100
|
+
/** Content shown when source is unavailable or fails to load. */
|
|
101
|
+
fallback?: ReactNode;
|
|
102
|
+
hybridRef?: MaybeWrappedCallback<(ref: OneKeyImageMethods) => void>;
|
|
103
|
+
onLoadStart?: MaybeWrappedCallback<() => void>;
|
|
104
|
+
onLoad?: MaybeWrappedCallback<(event: OneKeyImageLoadEvent) => void>;
|
|
105
|
+
onDisplay?: MaybeWrappedCallback<() => void>;
|
|
106
|
+
onError?: MaybeWrappedCallback<(event: OneKeyImageErrorEvent) => void>;
|
|
107
|
+
onLoadEnd?: MaybeWrappedCallback<() => void>;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const NativeOneKeyImage = getHostComponent<
|
|
111
|
+
OneKeyImageNativeProps,
|
|
112
|
+
OneKeyImageMethods
|
|
113
|
+
>('OneKeyImage', () => OneKeyImageConfig);
|
|
114
|
+
|
|
115
|
+
const nativeCache =
|
|
116
|
+
NitroModules.createHybridObject<OneKeyImageCacheHybrid>('OneKeyImageCache');
|
|
117
|
+
|
|
118
|
+
function unwrap<T extends (...args: any[]) => void>(
|
|
119
|
+
value: MaybeWrappedCallback<T> | undefined
|
|
120
|
+
): T | undefined {
|
|
121
|
+
return typeof value === 'function' ? value : value?.f;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function normalizeSource(
|
|
125
|
+
source: OneKeyImageProps['source']
|
|
126
|
+
): OneKeyImageSource | undefined {
|
|
127
|
+
if (source == null) return undefined;
|
|
128
|
+
const resolved = Image.resolveAssetSource(source as ImageSourcePropType);
|
|
129
|
+
if (resolved?.uri) {
|
|
130
|
+
const original =
|
|
131
|
+
typeof source === 'object' && !Array.isArray(source)
|
|
132
|
+
? (source as OneKeyImageSource)
|
|
133
|
+
: undefined;
|
|
134
|
+
return {
|
|
135
|
+
uri: resolved.uri,
|
|
136
|
+
width: resolved.width,
|
|
137
|
+
height: resolved.height,
|
|
138
|
+
scale: resolved.scale,
|
|
139
|
+
headers: original?.headers,
|
|
140
|
+
cachePolicy: original?.cachePolicy,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export function OneKeyImage({
|
|
147
|
+
source,
|
|
148
|
+
placeholder,
|
|
149
|
+
fallback,
|
|
150
|
+
variant = OneKeyImageVariant.GENERIC,
|
|
151
|
+
contentFit = OneKeyImageContentFit.COVER,
|
|
152
|
+
cachePolicy,
|
|
153
|
+
autoplay,
|
|
154
|
+
recyclingKey,
|
|
155
|
+
optimizeTos = true,
|
|
156
|
+
overscan = 1.1,
|
|
157
|
+
loadingStrategy = OneKeyImageLoadingStrategy.STATIC,
|
|
158
|
+
hybridRef,
|
|
159
|
+
onLoadStart,
|
|
160
|
+
onLoad,
|
|
161
|
+
onDisplay,
|
|
162
|
+
onError,
|
|
163
|
+
onLoadEnd,
|
|
164
|
+
style,
|
|
165
|
+
...viewProps
|
|
166
|
+
}: OneKeyImageProps) {
|
|
167
|
+
const normalized = useMemo(() => normalizeSource(source), [source]);
|
|
168
|
+
const resolvedCachePolicy =
|
|
169
|
+
cachePolicy ??
|
|
170
|
+
normalized?.cachePolicy ??
|
|
171
|
+
OneKeyImageCachePolicy.MEMORY_DISK;
|
|
172
|
+
const identity = `${normalized?.uri ?? ''}|${JSON.stringify(
|
|
173
|
+
normalized?.headers ?? {}
|
|
174
|
+
)}|${resolvedCachePolicy}|${recyclingKey ?? ''}|${contentFit}|${
|
|
175
|
+
optimizeTos ? '1' : '0'
|
|
176
|
+
}|${overscan}`;
|
|
177
|
+
const hasSource = normalized != null;
|
|
178
|
+
const hasOverlay = placeholder != null || fallback != null;
|
|
179
|
+
type LoadState = {
|
|
180
|
+
identity: string;
|
|
181
|
+
status: 'loading' | 'loaded' | 'fallback';
|
|
182
|
+
};
|
|
183
|
+
const [loadState, setLoadState] = useState<LoadState>({
|
|
184
|
+
identity,
|
|
185
|
+
status: hasSource ? 'loading' : 'fallback',
|
|
186
|
+
});
|
|
187
|
+
const effectiveState =
|
|
188
|
+
loadState.identity === identity
|
|
189
|
+
? loadState.status
|
|
190
|
+
: hasSource
|
|
191
|
+
? 'loading'
|
|
192
|
+
: 'fallback';
|
|
193
|
+
|
|
194
|
+
const refs = useRef({
|
|
195
|
+
hybridRef: unwrap(hybridRef),
|
|
196
|
+
onLoadStart: unwrap(onLoadStart),
|
|
197
|
+
onLoad: unwrap(onLoad),
|
|
198
|
+
onDisplay: unwrap(onDisplay),
|
|
199
|
+
onError: unwrap(onError),
|
|
200
|
+
onLoadEnd: unwrap(onLoadEnd),
|
|
201
|
+
});
|
|
202
|
+
refs.current = {
|
|
203
|
+
hybridRef: unwrap(hybridRef),
|
|
204
|
+
onLoadStart: unwrap(onLoadStart),
|
|
205
|
+
onLoad: unwrap(onLoad),
|
|
206
|
+
onDisplay: unwrap(onDisplay),
|
|
207
|
+
onError: unwrap(onError),
|
|
208
|
+
onLoadEnd: unwrap(onLoadEnd),
|
|
209
|
+
};
|
|
210
|
+
const nativeMethodsRef = useRef<OneKeyImageMethods | null>(null);
|
|
211
|
+
const pendingOverlayReloadRef = useRef<string | null>(null);
|
|
212
|
+
const previousRenderRef = useRef({ hasOverlay, identity });
|
|
213
|
+
|
|
214
|
+
useEffect(() => {
|
|
215
|
+
const previous = previousRenderRef.current;
|
|
216
|
+
const identityChanged = previous.identity !== identity;
|
|
217
|
+
if (hasOverlay && (!previous.hasOverlay || identityChanged)) {
|
|
218
|
+
const status = hasSource ? 'loading' : 'fallback';
|
|
219
|
+
setLoadState({ identity, status });
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
if (hasOverlay && !previous.hasOverlay && !identityChanged && hasSource) {
|
|
223
|
+
pendingOverlayReloadRef.current = identity;
|
|
224
|
+
const nativeMethods = nativeMethodsRef.current;
|
|
225
|
+
if (nativeMethods != null) {
|
|
226
|
+
pendingOverlayReloadRef.current = null;
|
|
227
|
+
nativeMethods.reload();
|
|
228
|
+
}
|
|
229
|
+
} else if (!hasOverlay || identityChanged) {
|
|
230
|
+
pendingOverlayReloadRef.current = null;
|
|
231
|
+
}
|
|
232
|
+
previousRenderRef.current = { hasOverlay, identity };
|
|
233
|
+
}, [hasOverlay, hasSource, identity]);
|
|
234
|
+
|
|
235
|
+
const needsHybridRef = hasOverlay || refs.current.hybridRef != null;
|
|
236
|
+
const needsLoadStart = hasOverlay || refs.current.onLoadStart != null;
|
|
237
|
+
const needsLoad = refs.current.onLoad != null;
|
|
238
|
+
const needsDisplay = placeholder != null || refs.current.onDisplay != null;
|
|
239
|
+
const needsError = hasOverlay || refs.current.onError != null;
|
|
240
|
+
const needsLoadEnd = refs.current.onLoadEnd != null;
|
|
241
|
+
|
|
242
|
+
const nativeCallbacks = useMemo(
|
|
243
|
+
() => ({
|
|
244
|
+
hybridRef: needsHybridRef
|
|
245
|
+
? callback((ref: OneKeyImageMethods) => {
|
|
246
|
+
nativeMethodsRef.current = ref;
|
|
247
|
+
if (pendingOverlayReloadRef.current === identity) {
|
|
248
|
+
pendingOverlayReloadRef.current = null;
|
|
249
|
+
ref.reload();
|
|
250
|
+
}
|
|
251
|
+
refs.current.hybridRef?.(ref);
|
|
252
|
+
})
|
|
253
|
+
: undefined,
|
|
254
|
+
onLoadStart: needsLoadStart
|
|
255
|
+
? callback(() => {
|
|
256
|
+
if (hasOverlay) {
|
|
257
|
+
setLoadState({ identity, status: 'loading' });
|
|
258
|
+
}
|
|
259
|
+
refs.current.onLoadStart?.();
|
|
260
|
+
})
|
|
261
|
+
: undefined,
|
|
262
|
+
onLoad: needsLoad
|
|
263
|
+
? callback(
|
|
264
|
+
(
|
|
265
|
+
width: number,
|
|
266
|
+
height: number,
|
|
267
|
+
cacheType: OneKeyImageNativeCacheType
|
|
268
|
+
) => {
|
|
269
|
+
refs.current.onLoad?.({
|
|
270
|
+
source: { url: normalized?.uri ?? '', width, height },
|
|
271
|
+
cacheType: cacheType as OneKeyImageCacheType,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
)
|
|
275
|
+
: undefined,
|
|
276
|
+
onDisplay: needsDisplay
|
|
277
|
+
? callback(() => {
|
|
278
|
+
if (placeholder != null) {
|
|
279
|
+
setLoadState({ identity, status: 'loaded' });
|
|
280
|
+
}
|
|
281
|
+
refs.current.onDisplay?.();
|
|
282
|
+
})
|
|
283
|
+
: undefined,
|
|
284
|
+
onError: needsError
|
|
285
|
+
? callback((message: string) => {
|
|
286
|
+
if (hasOverlay) {
|
|
287
|
+
setLoadState({ identity, status: 'fallback' });
|
|
288
|
+
}
|
|
289
|
+
refs.current.onError?.({ error: message });
|
|
290
|
+
})
|
|
291
|
+
: undefined,
|
|
292
|
+
onLoadEnd: needsLoadEnd
|
|
293
|
+
? callback(() => refs.current.onLoadEnd?.())
|
|
294
|
+
: undefined,
|
|
295
|
+
}),
|
|
296
|
+
[
|
|
297
|
+
hasOverlay,
|
|
298
|
+
identity,
|
|
299
|
+
needsDisplay,
|
|
300
|
+
needsError,
|
|
301
|
+
needsHybridRef,
|
|
302
|
+
needsLoad,
|
|
303
|
+
needsLoadEnd,
|
|
304
|
+
needsLoadStart,
|
|
305
|
+
normalized?.uri,
|
|
306
|
+
placeholder,
|
|
307
|
+
]
|
|
308
|
+
);
|
|
309
|
+
|
|
310
|
+
const native = createElement(NativeOneKeyImage, {
|
|
311
|
+
...viewProps,
|
|
312
|
+
...nativeCallbacks,
|
|
313
|
+
style: hasOverlay ? StyleSheet.absoluteFill : style,
|
|
314
|
+
sourceUri: normalized?.uri,
|
|
315
|
+
sourceHeadersJson: normalized?.headers
|
|
316
|
+
? JSON.stringify(normalized.headers)
|
|
317
|
+
: undefined,
|
|
318
|
+
variant,
|
|
319
|
+
contentFit,
|
|
320
|
+
cachePolicy: resolvedCachePolicy,
|
|
321
|
+
autoplay: autoplay ?? Platform.OS !== 'android',
|
|
322
|
+
recyclingKey,
|
|
323
|
+
optimizeTos,
|
|
324
|
+
overscan,
|
|
325
|
+
loadingStrategy:
|
|
326
|
+
placeholder == null ? loadingStrategy : OneKeyImageLoadingStrategy.NONE,
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
if (!hasOverlay) return native;
|
|
330
|
+
|
|
331
|
+
return (
|
|
332
|
+
<View style={[style, styles.overlayContainer]} collapsable={false}>
|
|
333
|
+
{native}
|
|
334
|
+
{effectiveState === 'loading' && placeholder != null ? (
|
|
335
|
+
<View pointerEvents="none" style={StyleSheet.absoluteFill}>
|
|
336
|
+
{placeholder}
|
|
337
|
+
</View>
|
|
338
|
+
) : null}
|
|
339
|
+
{effectiveState === 'fallback' && fallback != null ? (
|
|
340
|
+
<View pointerEvents="none" style={StyleSheet.absoluteFill}>
|
|
341
|
+
{fallback}
|
|
342
|
+
</View>
|
|
343
|
+
) : null}
|
|
344
|
+
</View>
|
|
345
|
+
);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
export const OneKeyImageCache = {
|
|
349
|
+
preload(sources: OneKeyImagePreloadInput[]) {
|
|
350
|
+
return nativeCache.preload(
|
|
351
|
+
sources
|
|
352
|
+
.filter((source) => Boolean(source.uri))
|
|
353
|
+
.map((source) => ({
|
|
354
|
+
uri: source.uri!,
|
|
355
|
+
headersJson: source.headers
|
|
356
|
+
? JSON.stringify(source.headers)
|
|
357
|
+
: undefined,
|
|
358
|
+
cachePolicy: source.cachePolicy ?? OneKeyImageCachePolicy.MEMORY_DISK,
|
|
359
|
+
resizeWidth: source.resizeWidth,
|
|
360
|
+
resizeHeight: source.resizeHeight,
|
|
361
|
+
pixelRatio: source.pixelRatio,
|
|
362
|
+
overscan: source.overscan,
|
|
363
|
+
optimizeTos: source.optimizeTos,
|
|
364
|
+
}))
|
|
365
|
+
);
|
|
366
|
+
},
|
|
367
|
+
clearMemory: () => nativeCache.clearMemory(),
|
|
368
|
+
clearDisk: () => nativeCache.clearDisk(),
|
|
369
|
+
clearAll: () => nativeCache.clearAll(),
|
|
370
|
+
};
|
|
371
|
+
|
|
372
|
+
const styles = StyleSheet.create({
|
|
373
|
+
overlayContainer: {
|
|
374
|
+
overflow: 'hidden',
|
|
375
|
+
},
|
|
376
|
+
});
|