* Copyright (c) 2025-2025 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "priority.h"
#include "ans_inner_errors.h"
namespace OHOS {
namespace NotificationNapi {
const int ARGC_ZERO = 0;
const int ARGC_ONE = 1;
const int ARGC_TWO = 2;
napi_value ParsePriorityParameters(const napi_env &env, const napi_callback_info &info, EnabledParams ¶ms)
{
ANS_LOGD("called");
size_t argc = ARGC_ONE;
napi_value argv[ARGC_ONE] = { nullptr };
napi_value thisVar = nullptr;
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, NULL));
if (argc < ARGC_ONE) {
ANS_LOGE("Wrong number of arguments.");
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, MANDATORY_PARAMETER_ARE_LEFT_UNSPECIFIED);
return nullptr;
}
napi_valuetype valuetype = napi_undefined;
NAPI_CALL(env, napi_typeof(env, argv[PARAM0], &valuetype));
if (valuetype != napi_boolean) {
ANS_LOGE("Wrong argument type. Bool expected.");
std::string msg = "Incorrect parameter types.The type of enable must be boolean.";
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, msg);
return nullptr;
}
napi_get_value_bool(env, argv[PARAM0], ¶ms.enable);
return Common::NapiGetNull(env);
}
napi_value ParsePriorityParameters(const napi_env &env, const napi_callback_info &info, EnabledByBundleParams ¶ms)
{
ANS_LOGD("called");
size_t argc = ARGC_TWO;
napi_value argv[ARGC_TWO] = {nullptr};
napi_value thisVar = nullptr;
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, NULL));
if (argc < ARGC_TWO) {
ANS_LOGE("Wrong number of arguments.");
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, MANDATORY_PARAMETER_ARE_LEFT_UNSPECIFIED);
return nullptr;
}
napi_valuetype valuetype = napi_undefined;
NAPI_CALL(env, napi_typeof(env, argv[PARAM0], &valuetype));
if (valuetype != napi_object) {
ANS_LOGE("Parameter type error. Object expected.");
std::string msg = "Incorrect parameter types.The type of param must be object.";
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, msg);
return nullptr;
}
auto retValue = Common::GetBundleOption(env, argv[PARAM0], params.option);
if (retValue == nullptr) {
ANS_LOGE("null retValue");
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, PARAMETER_VERIFICATION_FAILED);
return nullptr;
}
NAPI_CALL(env, napi_typeof(env, argv[PARAM1], &valuetype));
if (valuetype != napi_number) {
ANS_LOGE("Wrong argument type. Number expected.");
std::string msg = "Incorrect parameter types.The type of param must be number.";
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, msg);
return nullptr;
}
int32_t status;
napi_get_value_int32(env, argv[PARAM1], &status);
if (status < static_cast<int32_t>(NotificationConstant::PriorityEnableStatus::DISABLE) ||
status > static_cast<int32_t>(NotificationConstant::PriorityEnableStatus::ENABLE)) {
ANS_LOGE("Param enableStatus out of range %{public}d.", status);
std::string msg = "Incorrect parameter types.The type of param must be PriorityEnableStatus.";
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, msg);
return nullptr;
}
params.enableStatus = static_cast<NotificationConstant::PriorityEnableStatus>(status);
return Common::NapiGetNull(env);
}
napi_value ParseIsPriorityEnabledParameters(
const napi_env &env, const napi_callback_info &info, EnabledByBundleParams ¶ms)
{
ANS_LOGD("called");
size_t argc = ARGC_ONE;
napi_value argv[ARGC_ONE] = {nullptr};
napi_value thisVar = nullptr;
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, NULL));
if (argc < ARGC_ONE) {
ANS_LOGE("Wrong number of arguments.");
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, MANDATORY_PARAMETER_ARE_LEFT_UNSPECIFIED);
return nullptr;
}
napi_valuetype valuetype = napi_undefined;
NAPI_CALL(env, napi_typeof(env, argv[PARAM0], &valuetype));
if (valuetype != napi_object) {
ANS_LOGE("Parameter type error. Object expected.");
std::string msg = "Incorrect parameter types.The type of param must be object.";
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, msg);
return nullptr;
}
auto retValue = Common::GetBundleOption(env, argv[PARAM0], params.option);
if (retValue == nullptr) {
ANS_LOGE("null retValue");
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, PARAMETER_VERIFICATION_FAILED);
return nullptr;
}
return Common::NapiGetNull(env);
}
napi_value ParsePriorityParameters(const napi_env &env, const napi_callback_info &info, ConfigByBundleParams ¶ms)
{
ANS_LOGD("called");
size_t argc = ARGC_TWO;
napi_value argv[ARGC_TWO] = {nullptr};
napi_value thisVar = nullptr;
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, NULL));
if (argc < ARGC_TWO) {
ANS_LOGE("Wrong number of arguments.");
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, MANDATORY_PARAMETER_ARE_LEFT_UNSPECIFIED);
return nullptr;
}
napi_valuetype valuetype = napi_undefined;
NAPI_CALL(env, napi_typeof(env, argv[PARAM0], &valuetype));
if (valuetype != napi_object) {
ANS_LOGE("Parameter type error. Object expected.");
std::string msg = "Incorrect parameter types.The type of param must be object.";
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, msg);
return nullptr;
}
auto retValue = Common::GetBundleOption(env, argv[PARAM0], params.option);
if (retValue == nullptr) {
ANS_LOGE("null retValue");
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, PARAMETER_VERIFICATION_FAILED);
return nullptr;
}
NAPI_CALL(env, napi_typeof(env, argv[PARAM1], &valuetype));
if (valuetype != napi_string) {
ANS_LOGE("Wrong argument type. String expected.");
std::string msg = "Incorrect parameter types. The type of configValue must be string.";
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, msg);
return nullptr;
}
char commonStr[COMMON_TEXT_SIZE] = {0};
size_t strLen = 0;
napi_get_value_string_utf8(env, argv[PARAM1], commonStr, COMMON_TEXT_SIZE - 1, &strLen);
params.configValue = commonStr;
return Common::NapiGetNull(env);
}
napi_value ParseGetPriorityConfigParameters(
const napi_env &env, const napi_callback_info &info, ConfigByBundleParams ¶ms)
{
ANS_LOGD("called");
size_t argc = ARGC_ONE;
napi_value argv[ARGC_ONE] = {nullptr};
napi_value thisVar = nullptr;
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, NULL));
if (argc < ARGC_ONE) {
ANS_LOGE("Wrong number of arguments.");
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, MANDATORY_PARAMETER_ARE_LEFT_UNSPECIFIED);
return nullptr;
}
napi_valuetype valuetype = napi_undefined;
NAPI_CALL(env, napi_typeof(env, argv[PARAM0], &valuetype));
if (valuetype != napi_object) {
ANS_LOGE("Parameter type error. Object expected.");
std::string msg = "Incorrect parameter types.The type of param must be object.";
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, msg);
return nullptr;
}
auto retValue = Common::GetBundleOption(env, argv[PARAM0], params.option);
if (retValue == nullptr) {
ANS_LOGE("null retValue");
Common::NapiThrowLegacy(env, ERROR_PARAM_INVALID, PARAMETER_VERIFICATION_FAILED);
return nullptr;
}
return Common::NapiGetNull(env);
}
}
}