From 21962afd33f9ac897e30bfc1f7d039e837aab6da Mon Sep 17 00:00:00 2001 From: xiekaiming Date: Sat, 21 Oct 2023 14:52:10 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=87=BD=E6=95=B0=E4=BD=93?= =?UTF-8?q?=E8=B6=85=E5=A4=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiekaiming --- .../kits/js/include/config_policy_napi.h | 2 +- interfaces/kits/js/src/config_policy_napi.cpp | 39 +++++++++---------- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/interfaces/kits/js/include/config_policy_napi.h b/interfaces/kits/js/include/config_policy_napi.h index cf7d81b..458f1ff 100644 --- a/interfaces/kits/js/include/config_policy_napi.h +++ b/interfaces/kits/js/include/config_policy_napi.h @@ -70,7 +70,7 @@ private: static napi_value NativeGetCfgDirListSync(napi_env env, std::shared_ptr context); static void NativeCallbackComplete(napi_env env, napi_status status, void *data); static napi_value ParseRelPath(napi_env env, std::string ¶m, napi_value args); - static napi_value ParseFollowMode(napi_env env, int32_t ¶m, napi_value args); + static napi_value ParseFollowMode(napi_env env, int32_t ¶m, napi_value args, bool hasExtra); static napi_value ParseExtra(napi_env env, std::string ¶m, napi_value args); static napi_value CreateArraysValue(napi_env env, std::shared_ptr context); static void CreateArraysValueFunc(ConfigAsyncContext &context); diff --git a/interfaces/kits/js/src/config_policy_napi.cpp b/interfaces/kits/js/src/config_policy_napi.cpp index 6865155..1e1c9aa 100644 --- a/interfaces/kits/js/src/config_policy_napi.cpp +++ b/interfaces/kits/js/src/config_policy_napi.cpp @@ -108,21 +108,19 @@ napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFilesSync(napi_env env, napi_c auto asyncContext = std::make_shared(); asyncContext->followMode_ = FOLLOWX_MODE_DEFAULT; + bool hasExtra = false; if (ParseRelPath(env, asyncContext->relPath_, argv[ARR_INDEX_ZERO]) == nullptr) { return nullptr; } if (argc == ARGS_SIZE_TWO) { - if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr) { + if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE], hasExtra) == nullptr) { return nullptr; } - if (asyncContext->followMode_ == FOLLOWX_MODE_USER_DEFINED) { - return ThrowNapiError(env, PARAM_ERROR, - "Parameter error. The followMode is USER_DEFINED, extra must be set."); - } } if (argc >= ARGS_SIZE_THREE) { - if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr || + hasExtra = true; + if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE], hasExtra) == nullptr || ParseExtra(env, asyncContext->extra_, argv[ARR_INDEX_TWO]) == nullptr) { return nullptr; } @@ -144,6 +142,7 @@ napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFiles(napi_env env, napi_callb auto asyncContext = std::make_unique(); asyncContext->followMode_ = FOLLOWX_MODE_DEFAULT; + bool hasExtra = false; if (ParseRelPath(env, asyncContext->relPath_, argv[ARR_INDEX_ZERO]) == nullptr) { return nullptr; } @@ -151,35 +150,29 @@ napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFiles(napi_env env, napi_callb if (MatchValueType(env, argv[ARR_INDEX_ONE], napi_function)) { napi_create_reference(env, argv[ARR_INDEX_ONE], NAPI_RETURN_ONE, &asyncContext->callbackRef_); } else { - if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr) { + if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE], hasExtra) == nullptr) { return nullptr; } - if (asyncContext->followMode_ == FOLLOWX_MODE_USER_DEFINED) { - return ThrowNapiError(env, PARAM_ERROR, - "Parameter error. The followMode is USER_DEFINED, extra must be set."); - } } } if (argc == ARGS_SIZE_THREE) { - if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr) { - return nullptr; - } if (MatchValueType(env, argv[ARR_INDEX_TWO], napi_function)) { - if (asyncContext->followMode_ == FOLLOWX_MODE_USER_DEFINED) { - return ThrowNapiError(env, PARAM_ERROR, - "Parameter error. The followMode is USER_DEFINED, extra must be set."); - } napi_create_reference(env, argv[ARR_INDEX_TWO], NAPI_RETURN_ONE, &asyncContext->callbackRef_); } else { if (ParseExtra(env, asyncContext->extra_, argv[ARR_INDEX_TWO]) == nullptr) { return nullptr; } + hasExtra = true; + } + if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE], hasExtra) == nullptr) { + return nullptr; } } if (argc == ARGS_SIZE_FOUR) { - if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr || + hasExtra = true; + if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE], hasExtra) == nullptr || ParseExtra(env, asyncContext->extra_, argv[ARR_INDEX_TWO]) == nullptr) { return nullptr; } @@ -473,7 +466,7 @@ napi_value ConfigPolicyNapi::ParseExtra(napi_env env, std::string ¶m, napi_v return result; } -napi_value ConfigPolicyNapi::ParseFollowMode(napi_env env, int32_t ¶m, napi_value args) +napi_value ConfigPolicyNapi::ParseFollowMode(napi_env env, int32_t ¶m, napi_value args, bool hasExtra) { bool matchFlag = MatchValueType(env, args, napi_number); if (!matchFlag) { @@ -494,8 +487,12 @@ napi_value ConfigPolicyNapi::ParseFollowMode(napi_env env, int32_t ¶m, napi_ case FOLLOWX_MODE_SIM_1: [[fallthrough]]; case FOLLOWX_MODE_SIM_2: - [[fallthrough]]; + break; case FOLLOWX_MODE_USER_DEFINED: + if (!hasExtra) { + return ThrowNapiError(env, PARAM_ERROR, + "Parameter error. The followMode is USER_DEFINED, extra must be set."); + } break; default: return ThrowNapiError(env, PARAM_ERROR, -- Gitee