- 37개 파일 IP → zioinfo.co.kr 치환 (소스/매뉴얼/설정/하네스) - Manager DrConsole/NetworkConsole/CsapConsole 빌드 + /var/www/manager/ 배포 - 테스트: Manager HTTP 200, ITSM 신규 API 7개 전체 200 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
108 lines
4.0 KiB
C++
108 lines
4.0 KiB
C++
#include "RNScreensTurboModule.h"
|
|
|
|
using namespace facebook;
|
|
|
|
namespace RNScreens {
|
|
|
|
const char RNScreensTurboModule::MODULE_NAME[] = "RNScreensTurboModule";
|
|
|
|
std::function<std::array<int, 2>(int)> RNScreensTurboModule::startTransition_;
|
|
std::function<void(int, double)> RNScreensTurboModule::updateTransition_;
|
|
std::function<void(int, bool)> RNScreensTurboModule::finishTransition_;
|
|
std::function<void(int)> RNScreensTurboModule::disableSwipeBackForTopScreen_;
|
|
|
|
RNScreensTurboModule::RNScreensTurboModule(
|
|
std::function<std::array<int, 2>(int)> startTransition,
|
|
std::function<void(int, double)> updateTransition,
|
|
std::function<void(int, bool)> finishTransition,
|
|
std::function<void(int)> disableSwipeBackForTopScreen
|
|
) {
|
|
startTransition_ = startTransition;
|
|
updateTransition_ = updateTransition;
|
|
finishTransition_ = finishTransition;
|
|
disableSwipeBackForTopScreen_ = disableSwipeBackForTopScreen;
|
|
}
|
|
|
|
RNScreensTurboModule::~RNScreensTurboModule() {};
|
|
|
|
jsi::Value RNScreensTurboModule::get(jsi::Runtime& rt, const jsi::PropNameID& name) {
|
|
if (name.utf8(rt) == "startTransition") {
|
|
return jsi::Function::createFromHostFunction(rt, name, 1, startTransition);
|
|
}
|
|
else if (name.utf8(rt) == "updateTransition") {
|
|
return jsi::Function::createFromHostFunction(rt, name, 2, updateTransition);
|
|
}
|
|
else if (name.utf8(rt) == "finishTransition") {
|
|
return jsi::Function::createFromHostFunction(rt, name, 2, finishTransition);
|
|
}
|
|
else if (name.utf8(rt) == "disableSwipeBackForTopScreen") {
|
|
return jsi::Function::createFromHostFunction(rt, name, 1, disableSwipeBackForTopScreen);
|
|
}
|
|
return jsi::Value::undefined();
|
|
}
|
|
|
|
void RNScreensTurboModule::set(jsi::Runtime&, const jsi::PropNameID&, const jsi::Value&) {};
|
|
|
|
std::vector<jsi::PropNameID> RNScreensTurboModule::getPropertyNames(jsi::Runtime& rt) {
|
|
std::vector<jsi::PropNameID> properties;
|
|
properties.push_back(jsi::PropNameID::forUtf8(rt, "startTransition"));
|
|
properties.push_back(jsi::PropNameID::forUtf8(rt, "updateTransition"));
|
|
properties.push_back(jsi::PropNameID::forUtf8(rt, "finishTransition"));
|
|
properties.push_back(jsi::PropNameID::forUtf8(rt, "disableSwipeBackForTopScreen"));
|
|
return properties;
|
|
}
|
|
|
|
JSI_HOST_FUNCTION(RNScreensTurboModule::startTransition) {
|
|
if (count < 1) {
|
|
throw jsi::JSError(rt, "[RNScreens] `startTransition` method requires 1 argument.");
|
|
}
|
|
int stackTag = arguments[0].asNumber();
|
|
auto screenTags = startTransition_(stackTag);
|
|
jsi::Object screenTagsObject(rt);
|
|
jsi::Value topScreenTag, belowTopScreenTag, canStartTransition;
|
|
if (screenTags[0] > -1) {
|
|
topScreenTag = jsi::Value(screenTags[0]);
|
|
belowTopScreenTag = jsi::Value(screenTags[1]);
|
|
canStartTransition = jsi::Value(true);
|
|
} else {
|
|
topScreenTag = jsi::Value(-1);
|
|
belowTopScreenTag = jsi::Value(-1);
|
|
canStartTransition = jsi::Value(false);
|
|
}
|
|
screenTagsObject.setProperty(rt, "topScreenTag", topScreenTag);
|
|
screenTagsObject.setProperty(rt, "belowTopScreenTag", belowTopScreenTag);
|
|
screenTagsObject.setProperty(rt, "canStartTransition", canStartTransition);
|
|
return screenTagsObject;
|
|
}
|
|
|
|
JSI_HOST_FUNCTION(RNScreensTurboModule::updateTransition) {
|
|
if (count < 2) {
|
|
throw jsi::JSError(rt, "[RNScreens] `updateTransition` requires 2 arguments.");
|
|
}
|
|
int stackTag = arguments[0].asNumber();
|
|
double progress = arguments[1].asNumber();
|
|
updateTransition_(stackTag, progress);
|
|
return jsi::Value::undefined();
|
|
}
|
|
|
|
JSI_HOST_FUNCTION(RNScreensTurboModule::finishTransition) {
|
|
if (count < 2) {
|
|
throw jsi::JSError(rt, "[RNScreens] `finishTransition` requires 2 arguments.");
|
|
}
|
|
int stackTag = arguments[0].asNumber();
|
|
bool canceled = arguments[1].getBool();
|
|
finishTransition_(stackTag, canceled);
|
|
return jsi::Value::undefined();
|
|
}
|
|
|
|
JSI_HOST_FUNCTION(RNScreensTurboModule::disableSwipeBackForTopScreen) {
|
|
if (count < 1) {
|
|
throw jsi::JSError(rt, "[RNScreens] `startTransition` method requires 1 argument.");
|
|
}
|
|
int stackTag = arguments[0].asNumber();
|
|
disableSwipeBackForTopScreen_(stackTag);
|
|
return jsi::Value::undefined();
|
|
}
|
|
|
|
}
|