@hxa-rn/rn-qr-generator 2.0.0-beta.1
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 +215 -0
- package/dist/commonjs/index.js +81 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/specs/v1/NativeRNQrGenerator.js +9 -0
- package/dist/commonjs/specs/v1/NativeRNQrGenerator.js.map +1 -0
- package/dist/module/index.js +75 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/specs/v1/NativeRNQrGenerator.js +3 -0
- package/dist/module/specs/v1/NativeRNQrGenerator.js.map +1 -0
- package/dist/typescript/index.d.ts +39 -0
- package/dist/typescript/specs/v1/NativeRNQrGenerator.d.ts +40 -0
- package/harmony/qr_generator/LICENSE +21 -0
- package/harmony/qr_generator/NOTICE +33 -0
- package/harmony/qr_generator/OAT.xml +38 -0
- package/harmony/qr_generator/build-profile.json5 +16 -0
- package/harmony/qr_generator/hvigorfile.ts +2 -0
- package/harmony/qr_generator/index.ets +1 -0
- package/harmony/qr_generator/oh-package.json5 +15 -0
- package/harmony/qr_generator/src/main/cpp/CMakeLists.txt +15 -0
- package/harmony/qr_generator/src/main/cpp/QrGeneratorPackage.h +13 -0
- package/harmony/qr_generator/src/main/cpp/generated/RNOH/generated/BaseQrGeneratorPackage.h +72 -0
- package/harmony/qr_generator/src/main/cpp/generated/RNOH/generated/dummy.cpp +2 -0
- package/harmony/qr_generator/src/main/cpp/generated/RNOH/generated/turbo_modules/RNQrGenerator.cpp +17 -0
- package/harmony/qr_generator/src/main/cpp/generated/RNOH/generated/turbo_modules/RNQrGenerator.h +16 -0
- package/harmony/qr_generator/src/main/cpp/generated/react/renderer/components/qr_generator/ComponentDescriptors.h +24 -0
- package/harmony/qr_generator/src/main/cpp/generated/react/renderer/components/qr_generator/EventEmitters.cpp +16 -0
- package/harmony/qr_generator/src/main/cpp/generated/react/renderer/components/qr_generator/EventEmitters.h +17 -0
- package/harmony/qr_generator/src/main/cpp/generated/react/renderer/components/qr_generator/Props.cpp +19 -0
- package/harmony/qr_generator/src/main/cpp/generated/react/renderer/components/qr_generator/Props.h +18 -0
- package/harmony/qr_generator/src/main/cpp/generated/react/renderer/components/qr_generator/ShadowNodes.cpp +17 -0
- package/harmony/qr_generator/src/main/cpp/generated/react/renderer/components/qr_generator/ShadowNodes.h +23 -0
- package/harmony/qr_generator/src/main/cpp/generated/react/renderer/components/qr_generator/States.cpp +16 -0
- package/harmony/qr_generator/src/main/cpp/generated/react/renderer/components/qr_generator/States.h +19 -0
- package/harmony/qr_generator/src/main/ets/DetectScanWorker.ets +6 -0
- package/harmony/qr_generator/src/main/ets/QrGeneratorTurboModulesFactory.ets +18 -0
- package/harmony/qr_generator/src/main/ets/RNQrGeneratorTurboModule.ets +75 -0
- package/harmony/qr_generator/src/main/ets/ZxingImageHelper.ets +1449 -0
- package/harmony/qr_generator/src/main/ets/generated/index.ets +5 -0
- package/harmony/qr_generator/src/main/ets/generated/ts.ts +5 -0
- package/harmony/qr_generator/src/main/ets/generated/turboModules/RNQrGenerator.ts +26 -0
- package/harmony/qr_generator/src/main/ets/generated/turboModules/ts.ts +5 -0
- package/harmony/qr_generator/src/main/module.json5 +13 -0
- package/harmony/qr_generator/src/main/resources/base/element/string.json +8 -0
- package/harmony/qr_generator/src/main/resources/en_US/element/string.json +8 -0
- package/harmony/qr_generator/src/main/resources/zh_CN/element/string.json +8 -0
- package/harmony/qr_generator.har +0 -0
- package/package.json +72 -0
- package/src/index.ts +151 -0
- package/src/specs/v1/.gitkeep +1 -0
- package/src/specs/v1/NativeRNQrGenerator.ts +55 -0
- package/src/specs/v2/.gitkeep +1 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"license": "Apache-2.0",
|
|
3
|
+
"devDependencies": {
|
|
4
|
+
|
|
5
|
+
},
|
|
6
|
+
"author": "",
|
|
7
|
+
"name": "@hxa-rn/rn-qr-generator",
|
|
8
|
+
"description": "React Native QR Code generator / reader for OpenHarmony",
|
|
9
|
+
"main": "index.ets",
|
|
10
|
+
"version": "2.0.0",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@ohos/zxing": "^2.0.0",
|
|
13
|
+
"@rnoh/react-native-openharmony": "file:../react_native_openharmony_release.har"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# the minimum version of CMake.
|
|
2
|
+
cmake_minimum_required(VERSION 3.13)
|
|
3
|
+
set(CMAKE_VERBOSE_MAKEFILE on)
|
|
4
|
+
|
|
5
|
+
# react-native codegen-harmony 将 C++ 产物放在 generated/;#include 以 src/main/cpp 为根(如 generated/Foo.h),
|
|
6
|
+
# 同时 generated 下的 .cpp 常使用 #include "Foo.h",故需同时加入 cpp 与 cpp/generated。
|
|
7
|
+
set(library_generated_dir "${CMAKE_CURRENT_SOURCE_DIR}/generated")
|
|
8
|
+
# 不用 **/*.cpp:OHOS 自带 CMake 在 Windows 上常匹配不到,会得到空列表 → add_library 报 No SOURCES。
|
|
9
|
+
file(GLOB_RECURSE library_generated_SRC CONFIGURE_DEPENDS "${library_generated_dir}/*.cpp")
|
|
10
|
+
file(GLOB library_SRC CONFIGURE_DEPENDS *.cpp)
|
|
11
|
+
add_library(qr_generator SHARED ${library_SRC} ${library_generated_SRC})
|
|
12
|
+
target_include_directories(qr_generator PUBLIC
|
|
13
|
+
${CMAKE_CURRENT_SOURCE_DIR}
|
|
14
|
+
${library_generated_dir})
|
|
15
|
+
target_link_libraries(qr_generator PUBLIC rnoh)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#ifndef QRGENERATORPACKAGE_H
|
|
2
|
+
#define QRGENERATORPACKAGE_H
|
|
3
|
+
|
|
4
|
+
#include "generated/RNOH/generated/BaseQrGeneratorPackage.h"
|
|
5
|
+
#pragma once
|
|
6
|
+
|
|
7
|
+
namespace rnoh {
|
|
8
|
+
class QrGeneratorPackage : public BaseQrGeneratorPackage {
|
|
9
|
+
using Super = BaseQrGeneratorPackage;
|
|
10
|
+
using Super::Super;
|
|
11
|
+
};
|
|
12
|
+
} // namespace rnoh
|
|
13
|
+
#endif //QRGENERATORPACKAGE_H
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by "react-native codegen-lib-harmony"
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
#pragma once
|
|
6
|
+
|
|
7
|
+
#include "RNOH/Package.h"
|
|
8
|
+
#include "RNOH/ArkTSTurboModule.h"
|
|
9
|
+
#include "RNOH/generated/turbo_modules/RNQrGenerator.h"
|
|
10
|
+
|
|
11
|
+
namespace rnoh {
|
|
12
|
+
|
|
13
|
+
class BaseQrGeneratorPackageTurboModuleFactoryDelegate : public TurboModuleFactoryDelegate {
|
|
14
|
+
public:
|
|
15
|
+
SharedTurboModule createTurboModule(Context ctx, const std::string &name) const override {
|
|
16
|
+
if (name == "RNQrGenerator") {
|
|
17
|
+
return std::make_shared<RNQrGenerator>(ctx, name);
|
|
18
|
+
}
|
|
19
|
+
return nullptr;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
class BaseQrGeneratorPackageEventEmitRequestHandler : public EventEmitRequestHandler {
|
|
24
|
+
public:
|
|
25
|
+
void handleEvent(Context const &ctx) override {
|
|
26
|
+
auto eventEmitter = ctx.shadowViewRegistry->getEventEmitter<facebook::react::EventEmitter>(ctx.tag);
|
|
27
|
+
auto componentName = ctx.shadowViewRegistry->getComponentName(ctx.tag);
|
|
28
|
+
|
|
29
|
+
if (eventEmitter == nullptr) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
std::vector<std::string> supportedComponentNames = {
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
std::vector<std::string> supportedEventNames = {
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
if (std::find(supportedComponentNames.begin(), supportedComponentNames.end(), componentName) != supportedComponentNames.end() &&
|
|
40
|
+
std::find(supportedEventNames.begin(), supportedEventNames.end(), ctx.eventName) != supportedEventNames.end()) {
|
|
41
|
+
eventEmitter->dispatchEvent(ctx.eventName, ArkJS(ctx.env).getDynamic(ctx.payload));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class BaseQrGeneratorPackage : public Package {
|
|
48
|
+
public:
|
|
49
|
+
BaseQrGeneratorPackage(Package::Context ctx) : Package(ctx){};
|
|
50
|
+
|
|
51
|
+
std::unique_ptr<TurboModuleFactoryDelegate> createTurboModuleFactoryDelegate() override {
|
|
52
|
+
return std::make_unique<BaseQrGeneratorPackageTurboModuleFactoryDelegate>();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
std::vector<facebook::react::ComponentDescriptorProvider> createComponentDescriptorProviders() override {
|
|
56
|
+
return {
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
ComponentJSIBinderByString createComponentJSIBinderByName() override {
|
|
61
|
+
return {
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
EventEmitRequestHandlers createEventEmitRequestHandlers() override {
|
|
66
|
+
return {
|
|
67
|
+
std::make_shared<BaseQrGeneratorPackageEventEmitRequestHandler>(),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
} // namespace rnoh
|
package/harmony/qr_generator/src/main/cpp/generated/RNOH/generated/turbo_modules/RNQrGenerator.cpp
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by "react-native codegen-lib-harmony"
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
#include "RNQrGenerator.h"
|
|
6
|
+
|
|
7
|
+
namespace rnoh {
|
|
8
|
+
using namespace facebook;
|
|
9
|
+
|
|
10
|
+
RNQrGenerator::RNQrGenerator(const ArkTSTurboModule::Context ctx, const std::string name) : ArkTSTurboModule(ctx, name) {
|
|
11
|
+
methodMap_ = {
|
|
12
|
+
ARK_METHOD_METADATA(generate, 3),
|
|
13
|
+
ARK_METHOD_METADATA(detect, 3),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
} // namespace rnoh
|
package/harmony/qr_generator/src/main/cpp/generated/RNOH/generated/turbo_modules/RNQrGenerator.h
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by "react-native codegen-lib-harmony"
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
#pragma once
|
|
6
|
+
|
|
7
|
+
#include "RNOH/ArkTSTurboModule.h"
|
|
8
|
+
|
|
9
|
+
namespace rnoh {
|
|
10
|
+
|
|
11
|
+
class JSI_EXPORT RNQrGenerator : public ArkTSTurboModule {
|
|
12
|
+
public:
|
|
13
|
+
RNQrGenerator(const ArkTSTurboModule::Context ctx, const std::string name);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
} // namespace rnoh
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateComponentDescriptorH.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#pragma once
|
|
12
|
+
|
|
13
|
+
#include "ShadowNodes.h"
|
|
14
|
+
#include <react/renderer/core/ConcreteComponentDescriptor.h>
|
|
15
|
+
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
|
|
16
|
+
|
|
17
|
+
namespace facebook::react {
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
void qr_generator_registerComponentDescriptorsFromCodegen(
|
|
22
|
+
std::shared_ptr<const ComponentDescriptorProviderRegistry> registry);
|
|
23
|
+
|
|
24
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateEventEmitterCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "EventEmitters.h"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
namespace facebook::react {
|
|
15
|
+
|
|
16
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateEventEmitterH.js
|
|
9
|
+
*/
|
|
10
|
+
#pragma once
|
|
11
|
+
|
|
12
|
+
#include <react/renderer/components/view/ViewEventEmitter.h>
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
} // namespace facebook::react
|
package/harmony/qr_generator/src/main/cpp/generated/react/renderer/components/qr_generator/Props.cpp
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GeneratePropsCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "Props.h"
|
|
12
|
+
#include <react/renderer/core/PropsParserContext.h>
|
|
13
|
+
#include <react/renderer/core/propsConversions.h>
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
} // namespace facebook::react
|
package/harmony/qr_generator/src/main/cpp/generated/react/renderer/components/qr_generator/Props.h
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GeneratePropsH.js
|
|
9
|
+
*/
|
|
10
|
+
#pragma once
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
namespace facebook::react {
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateShadowNodeCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "ShadowNodes.h"
|
|
12
|
+
|
|
13
|
+
namespace facebook::react {
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateShadowNodeH.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#pragma once
|
|
12
|
+
|
|
13
|
+
#include "EventEmitters.h"
|
|
14
|
+
#include "Props.h"
|
|
15
|
+
#include "States.h"
|
|
16
|
+
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
|
|
17
|
+
#include <jsi/jsi.h>
|
|
18
|
+
|
|
19
|
+
namespace facebook::react {
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateStateCpp.js
|
|
9
|
+
*/
|
|
10
|
+
#include "States.h"
|
|
11
|
+
|
|
12
|
+
namespace facebook::react {
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
} // namespace facebook::react
|
package/harmony/qr_generator/src/main/cpp/generated/react/renderer/components/qr_generator/States.h
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateStateH.js
|
|
8
|
+
*/
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#ifdef ANDROID
|
|
12
|
+
#include <folly/dynamic.h>
|
|
13
|
+
#endif
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { RNOHPackage } from '@rnoh/react-native-openharmony/ets';
|
|
2
|
+
import type { UITurboModule, UITurboModuleContext } from '@rnoh/react-native-openharmony/ts';
|
|
3
|
+
import { RNQrGeneratorTurboModule } from './RNQrGeneratorTurboModule';
|
|
4
|
+
import { TM } from './generated/ts';
|
|
5
|
+
|
|
6
|
+
export class QrGeneratorPackage extends RNOHPackage {
|
|
7
|
+
getUITurboModuleFactoryByNameMap(): Map<string, (ctx: UITurboModuleContext) => UITurboModule | null> {
|
|
8
|
+
const map = new Map<string, (ctx: UITurboModuleContext) => UITurboModule | null>();
|
|
9
|
+
map.set(TM.RNQrGenerator.NAME, (ctx: UITurboModuleContext) => new RNQrGeneratorTurboModule(ctx));
|
|
10
|
+
return map;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
override async createEagerUITurboModuleByNameMap(ctx: UITurboModuleContext): Promise<Map<string, UITurboModule>> {
|
|
14
|
+
const module = new RNQrGeneratorTurboModule(ctx);
|
|
15
|
+
return new Map()
|
|
16
|
+
.set(TM.RNQrGenerator.NAME, module)
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { UITurboModule, UITurboModuleContext } from '@rnoh/react-native-openharmony/ts';
|
|
2
|
+
import { ZxingImageHelper, GenerateResultData, DetectResultData, DetectScanPayload } from './ZxingImageHelper';
|
|
3
|
+
import { detectScanTask } from './DetectScanWorker';
|
|
4
|
+
import { hilog } from '@kit.PerformanceAnalysisKit';
|
|
5
|
+
import { taskpool } from '@kit.ArkTS';
|
|
6
|
+
import { TM } from './generated/ts';
|
|
7
|
+
|
|
8
|
+
const TAG: string = 'RNQrGenerator';
|
|
9
|
+
const DOMAIN: number = 0x0000;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* RNQrGenerator TurboModule for HarmonyOS.
|
|
13
|
+
*
|
|
14
|
+
* Exposes the callback-based generate/detect methods declared in the JS Spec
|
|
15
|
+
* (src/specs/v1/NativeRNQrGenerator.ts). Options arrive as a JS object and must
|
|
16
|
+
* be typed Record<string, Object> so the JSI bridge can marshal them.
|
|
17
|
+
*/
|
|
18
|
+
export class RNQrGeneratorTurboModule extends UITurboModule {
|
|
19
|
+
constructor(ctx: UITurboModuleContext) {
|
|
20
|
+
super(ctx);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
generate(options: TM.RNQrGenerator.GenerateOptions, errorCallback: (error: string) => void,
|
|
24
|
+
successCallback: (result: Object) => void): void {
|
|
25
|
+
const cacheDir: string = this.ctx.uiAbilityContext.cacheDir;
|
|
26
|
+
ZxingImageHelper.generate(options, cacheDir).then((result: GenerateResultData) => {
|
|
27
|
+
successCallback(result);
|
|
28
|
+
}).catch((err: Object) => {
|
|
29
|
+
hilog.error(DOMAIN, TAG, 'generate callback error: %{public}s', RNQrGeneratorTurboModule.errorToString(err));
|
|
30
|
+
errorCallback(RNQrGeneratorTurboModule.errorToString(err));
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
detect(options: TM.RNQrGenerator.DetectOptions, errorCallback: (error: string) => void,
|
|
35
|
+
successCallback: (result: Object) => void): void {
|
|
36
|
+
ZxingImageHelper.prepareDetectInput(options).then((input): Promise<Object | null> => {
|
|
37
|
+
if (input === null) {
|
|
38
|
+
return Promise.resolve(null);
|
|
39
|
+
}
|
|
40
|
+
const scanTask: taskpool.Task =
|
|
41
|
+
new taskpool.Task(detectScanTask, input.lum, input.w, input.h);
|
|
42
|
+
return taskpool.execute(scanTask);
|
|
43
|
+
}).then((payload: Object | null) => {
|
|
44
|
+
if (payload === null) {
|
|
45
|
+
const emptyResult: DetectResultData = { values: [], type: '' };
|
|
46
|
+
successCallback(emptyResult);
|
|
47
|
+
} else {
|
|
48
|
+
const scanResult: DetectScanPayload = payload as DetectScanPayload;
|
|
49
|
+
const result: DetectResultData = {
|
|
50
|
+
values: scanResult.values.slice(),
|
|
51
|
+
type: scanResult.type,
|
|
52
|
+
};
|
|
53
|
+
if (scanResult.types !== undefined) {
|
|
54
|
+
result.types = scanResult.types.slice();
|
|
55
|
+
}
|
|
56
|
+
if (scanResult.correctionLevel !== undefined) {
|
|
57
|
+
result.correctionLevel = scanResult.correctionLevel;
|
|
58
|
+
}
|
|
59
|
+
successCallback(result);
|
|
60
|
+
}
|
|
61
|
+
}).catch((err: Object) => {
|
|
62
|
+
hilog.error(DOMAIN, TAG, 'detect callback error: %{public}s', RNQrGeneratorTurboModule.errorToString(err));
|
|
63
|
+
errorCallback(RNQrGeneratorTurboModule.errorToString(err));
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private static errorToString(err: Object): string {
|
|
68
|
+
if (typeof err === 'string') {
|
|
69
|
+
return err as string;
|
|
70
|
+
}
|
|
71
|
+
const e: Error = err as Error;
|
|
72
|
+
const msg: string = e.message;
|
|
73
|
+
return msg !== undefined && msg !== null ? msg : String(err);
|
|
74
|
+
}
|
|
75
|
+
}
|