19596a2c1Sopenharmony_ci/* 29596a2c1Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 39596a2c1Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 49596a2c1Sopenharmony_ci * you may not use this file except in compliance with the License. 59596a2c1Sopenharmony_ci * You may obtain a copy of the License at 69596a2c1Sopenharmony_ci * 79596a2c1Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 89596a2c1Sopenharmony_ci * 99596a2c1Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 109596a2c1Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 119596a2c1Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 129596a2c1Sopenharmony_ci * See the License for the specific language governing permissions and 139596a2c1Sopenharmony_ci * limitations under the License. 149596a2c1Sopenharmony_ci */ 159596a2c1Sopenharmony_ci 169596a2c1Sopenharmony_ci#include <vector> 179596a2c1Sopenharmony_ci#include "error_util.h" 189596a2c1Sopenharmony_ci#include "i18n_hilog.h" 199596a2c1Sopenharmony_ci#include "locale_config.h" 209596a2c1Sopenharmony_ci#include "variable_convertor.h" 219596a2c1Sopenharmony_ci#include "holiday_manager_addon.h" 229596a2c1Sopenharmony_ci 239596a2c1Sopenharmony_cinamespace OHOS { 249596a2c1Sopenharmony_cinamespace Global { 259596a2c1Sopenharmony_cinamespace I18n { 269596a2c1Sopenharmony_ciHolidayManagerAddon::HolidayManagerAddon() : env_(nullptr) {} 279596a2c1Sopenharmony_ci 289596a2c1Sopenharmony_ciHolidayManagerAddon::~HolidayManagerAddon() 299596a2c1Sopenharmony_ci{ 309596a2c1Sopenharmony_ci} 319596a2c1Sopenharmony_ci 329596a2c1Sopenharmony_civoid HolidayManagerAddon::Destructor(napi_env env, void *nativeObject, void *hint) 339596a2c1Sopenharmony_ci{ 349596a2c1Sopenharmony_ci if (!nativeObject) { 359596a2c1Sopenharmony_ci return; 369596a2c1Sopenharmony_ci } 379596a2c1Sopenharmony_ci delete reinterpret_cast<HolidayManagerAddon *>(nativeObject); 389596a2c1Sopenharmony_ci nativeObject = nullptr; 399596a2c1Sopenharmony_ci} 409596a2c1Sopenharmony_ci 419596a2c1Sopenharmony_cinapi_value HolidayManagerAddon::InitHolidayManager(napi_env env, napi_value exports) 429596a2c1Sopenharmony_ci{ 439596a2c1Sopenharmony_ci napi_status status = napi_ok; 449596a2c1Sopenharmony_ci napi_property_descriptor properties[] = { 459596a2c1Sopenharmony_ci DECLARE_NAPI_FUNCTION("isHoliday", IsHoliday), 469596a2c1Sopenharmony_ci DECLARE_NAPI_FUNCTION("getHolidayInfoItemArray", GetHolidayInfoItemArray) 479596a2c1Sopenharmony_ci }; 489596a2c1Sopenharmony_ci 499596a2c1Sopenharmony_ci napi_value constructor = nullptr; 509596a2c1Sopenharmony_ci status = napi_define_class(env, "HolidayManager", NAPI_AUTO_LENGTH, HolidayManagerConstructor, nullptr, 519596a2c1Sopenharmony_ci sizeof(properties) / sizeof(napi_property_descriptor), properties, &constructor); 529596a2c1Sopenharmony_ci if (status != napi_ok) { 539596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Define class failed when InitHolidayManager"); 549596a2c1Sopenharmony_ci return nullptr; 559596a2c1Sopenharmony_ci } 569596a2c1Sopenharmony_ci 579596a2c1Sopenharmony_ci status = napi_set_named_property(env, exports, "HolidayManager", constructor); 589596a2c1Sopenharmony_ci if (status != napi_ok) { 599596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Set property failed when InitHolidayManager"); 609596a2c1Sopenharmony_ci return nullptr; 619596a2c1Sopenharmony_ci } 629596a2c1Sopenharmony_ci return exports; 639596a2c1Sopenharmony_ci} 649596a2c1Sopenharmony_ci 659596a2c1Sopenharmony_cinapi_value HolidayManagerAddon::HolidayManagerConstructor(napi_env env, napi_callback_info info) 669596a2c1Sopenharmony_ci{ 679596a2c1Sopenharmony_ci size_t argc = 1; 689596a2c1Sopenharmony_ci napi_value argv[1] = { 0 }; 699596a2c1Sopenharmony_ci napi_value thisVar = nullptr; 709596a2c1Sopenharmony_ci void *data = nullptr; 719596a2c1Sopenharmony_ci napi_status status = napi_get_cb_info(env, info, &argc, argv, &thisVar, &data); 729596a2c1Sopenharmony_ci if (status != napi_ok) { 739596a2c1Sopenharmony_ci return nullptr; 749596a2c1Sopenharmony_ci } else if (argc < 1) { 759596a2c1Sopenharmony_ci ErrorUtil::NapiThrow(env, I18N_NOT_FOUND, "icsPath", "", true); 769596a2c1Sopenharmony_ci return nullptr; 779596a2c1Sopenharmony_ci } 789596a2c1Sopenharmony_ci napi_valuetype valueType = napi_valuetype::napi_undefined; 799596a2c1Sopenharmony_ci napi_typeof(env, argv[0], &valueType); 809596a2c1Sopenharmony_ci if (valueType != napi_valuetype::napi_string) { 819596a2c1Sopenharmony_ci ErrorUtil::NapiThrow(env, I18N_NOT_FOUND, "icsPath", "string", true); 829596a2c1Sopenharmony_ci return nullptr; 839596a2c1Sopenharmony_ci } 849596a2c1Sopenharmony_ci std::unique_ptr<HolidayManagerAddon> obj = std::make_unique<HolidayManagerAddon>(); 859596a2c1Sopenharmony_ci status = 869596a2c1Sopenharmony_ci napi_wrap(env, thisVar, reinterpret_cast<void *>(obj.get()), HolidayManagerAddon::Destructor, nullptr, nullptr); 879596a2c1Sopenharmony_ci if (status != napi_ok) { 889596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Wrap HolidayManagerAddon failed"); 899596a2c1Sopenharmony_ci return nullptr; 909596a2c1Sopenharmony_ci } 919596a2c1Sopenharmony_ci int32_t code = 0; 929596a2c1Sopenharmony_ci std::string path = VariableConvertor::GetString(env, argv[0], code); 939596a2c1Sopenharmony_ci if (code) { 949596a2c1Sopenharmony_ci return nullptr; 959596a2c1Sopenharmony_ci } 969596a2c1Sopenharmony_ci if (!obj->InitHolidayManagerContext(env, info, path.c_str())) { 979596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Init HolidayManager failed"); 989596a2c1Sopenharmony_ci return nullptr; 999596a2c1Sopenharmony_ci } 1009596a2c1Sopenharmony_ci obj.release(); 1019596a2c1Sopenharmony_ci return thisVar; 1029596a2c1Sopenharmony_ci} 1039596a2c1Sopenharmony_ci 1049596a2c1Sopenharmony_cibool HolidayManagerAddon::InitHolidayManagerContext(napi_env env, napi_callback_info info, const char* path) 1059596a2c1Sopenharmony_ci{ 1069596a2c1Sopenharmony_ci napi_value global = nullptr; 1079596a2c1Sopenharmony_ci napi_status status = napi_get_global(env, &global); 1089596a2c1Sopenharmony_ci if (status != napi_ok) { 1099596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Get global failed"); 1109596a2c1Sopenharmony_ci return false; 1119596a2c1Sopenharmony_ci } 1129596a2c1Sopenharmony_ci env_ = env; 1139596a2c1Sopenharmony_ci holidayManager_ = std::make_unique<HolidayManager>(path); 1149596a2c1Sopenharmony_ci return holidayManager_ != nullptr; 1159596a2c1Sopenharmony_ci} 1169596a2c1Sopenharmony_ci 1179596a2c1Sopenharmony_cinapi_value HolidayManagerAddon::IsHoliday(napi_env env, napi_callback_info info) 1189596a2c1Sopenharmony_ci{ 1199596a2c1Sopenharmony_ci size_t argc = 1; 1209596a2c1Sopenharmony_ci napi_value argv[1] = { 0 }; 1219596a2c1Sopenharmony_ci napi_value thisVar = nullptr; 1229596a2c1Sopenharmony_ci napi_status status = napi_get_cb_info(env, info, &argc, argv, &thisVar, NULL); 1239596a2c1Sopenharmony_ci if (status != napi_ok) { 1249596a2c1Sopenharmony_ci return nullptr; 1259596a2c1Sopenharmony_ci } 1269596a2c1Sopenharmony_ci HolidayManagerAddon *obj = nullptr; 1279596a2c1Sopenharmony_ci status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj)); 1289596a2c1Sopenharmony_ci if (status != napi_ok || !obj || !obj->holidayManager_) { 1299596a2c1Sopenharmony_ci HILOG_ERROR_I18N("IsHoliday: Get HolidayManager object failed"); 1309596a2c1Sopenharmony_ci return nullptr; 1319596a2c1Sopenharmony_ci } 1329596a2c1Sopenharmony_ci napi_value result = nullptr; 1339596a2c1Sopenharmony_ci bool flag = VariableConvertor::CheckNapiValueType(env, argv[0]); 1349596a2c1Sopenharmony_ci bool res = false; 1359596a2c1Sopenharmony_ci if (flag) { 1369596a2c1Sopenharmony_ci std::vector<int> list = ValidateParamDate(env, argv[0]); 1379596a2c1Sopenharmony_ci if (list.size() == 3) { // 3 is the number of parameters 1389596a2c1Sopenharmony_ci // 0, 1, and 2 indicate that the first, second, and third parameters of the list are read 1399596a2c1Sopenharmony_ci res = obj->holidayManager_->IsHoliday(list.at(0), list.at(1), list.at(2)); 1409596a2c1Sopenharmony_ci } 1419596a2c1Sopenharmony_ci } else { 1429596a2c1Sopenharmony_ci res = obj->holidayManager_->IsHoliday(); 1439596a2c1Sopenharmony_ci } 1449596a2c1Sopenharmony_ci status = napi_get_boolean(env, res, &result); 1459596a2c1Sopenharmony_ci return result; 1469596a2c1Sopenharmony_ci} 1479596a2c1Sopenharmony_ci 1489596a2c1Sopenharmony_cinapi_value HolidayManagerAddon::GetHolidayInfoItemArray(napi_env env, napi_callback_info info) 1499596a2c1Sopenharmony_ci{ 1509596a2c1Sopenharmony_ci size_t argc = 1; 1519596a2c1Sopenharmony_ci napi_value argv[1] = { 0 }; 1529596a2c1Sopenharmony_ci argv[0] = nullptr; 1539596a2c1Sopenharmony_ci napi_value thisVar = nullptr; 1549596a2c1Sopenharmony_ci napi_status status = napi_get_cb_info(env, info, &argc, argv, &thisVar, NULL); 1559596a2c1Sopenharmony_ci if (status != napi_ok) { 1569596a2c1Sopenharmony_ci return nullptr; 1579596a2c1Sopenharmony_ci } 1589596a2c1Sopenharmony_ci HolidayManagerAddon *obj = nullptr; 1599596a2c1Sopenharmony_ci status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&obj)); 1609596a2c1Sopenharmony_ci if (status != napi_ok || !obj || !obj->holidayManager_) { 1619596a2c1Sopenharmony_ci HILOG_ERROR_I18N("GetHolidayInfoItemArray: Get HolidayManager object failed"); 1629596a2c1Sopenharmony_ci return nullptr; 1639596a2c1Sopenharmony_ci } 1649596a2c1Sopenharmony_ci bool flag = VariableConvertor::CheckNapiValueType(env, argv[0]); 1659596a2c1Sopenharmony_ci if (flag) { 1669596a2c1Sopenharmony_ci int32_t year = ValidateParamNumber(env, argv[0]); 1679596a2c1Sopenharmony_ci std::vector<HolidayInfoItem> itemList = obj->holidayManager_->GetHolidayInfoItemArray(year); 1689596a2c1Sopenharmony_ci return GetHolidayInfoItemResult(env, itemList); 1699596a2c1Sopenharmony_ci } else { 1709596a2c1Sopenharmony_ci std::vector<HolidayInfoItem> itemList = obj->holidayManager_->GetHolidayInfoItemArray(); 1719596a2c1Sopenharmony_ci return GetHolidayInfoItemResult(env, itemList); 1729596a2c1Sopenharmony_ci } 1739596a2c1Sopenharmony_ci} 1749596a2c1Sopenharmony_ci 1759596a2c1Sopenharmony_cinapi_value HolidayManagerAddon::GetHolidayInfoItemResult(napi_env env, std::vector<HolidayInfoItem> itemList) 1769596a2c1Sopenharmony_ci{ 1779596a2c1Sopenharmony_ci napi_value result = nullptr; 1789596a2c1Sopenharmony_ci napi_status status = napi_create_array_with_length(env, itemList.size(), &result); 1799596a2c1Sopenharmony_ci if (status != napi_ok) { 1809596a2c1Sopenharmony_ci HILOG_ERROR_I18N("create HolidayInfoItem array failed."); 1819596a2c1Sopenharmony_ci return nullptr; 1829596a2c1Sopenharmony_ci } 1839596a2c1Sopenharmony_ci for (size_t i = 0; i < itemList.size(); i++) { 1849596a2c1Sopenharmony_ci napi_value item = CreateHolidayItem(env, itemList[i]); 1859596a2c1Sopenharmony_ci status = napi_set_element(env, result, i, item); 1869596a2c1Sopenharmony_ci if (status != napi_ok) { 1879596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Failed to set HolidayInfoItem element."); 1889596a2c1Sopenharmony_ci return nullptr; 1899596a2c1Sopenharmony_ci } 1909596a2c1Sopenharmony_ci } 1919596a2c1Sopenharmony_ci return result; 1929596a2c1Sopenharmony_ci} 1939596a2c1Sopenharmony_ci 1949596a2c1Sopenharmony_cistd::vector<int> HolidayManagerAddon::ValidateParamDate(napi_env &env, napi_value &argv) 1959596a2c1Sopenharmony_ci{ 1969596a2c1Sopenharmony_ci std::vector<int> list; 1979596a2c1Sopenharmony_ci napi_valuetype valueType = napi_valuetype::napi_undefined; 1989596a2c1Sopenharmony_ci napi_typeof(env, argv, &valueType); 1999596a2c1Sopenharmony_ci if (valueType != napi_valuetype::napi_object) { 2009596a2c1Sopenharmony_ci ErrorUtil::NapiThrow(env, I18N_NOT_FOUND, "date", "Date object", true); 2019596a2c1Sopenharmony_ci return list; 2029596a2c1Sopenharmony_ci } 2039596a2c1Sopenharmony_ci list.push_back(GetDateValue(env, argv, "getFullYear")); 2049596a2c1Sopenharmony_ci list.push_back(GetDateValue(env, argv, "getMonth") + MONTH_INCREASE_ONE); 2059596a2c1Sopenharmony_ci list.push_back(GetDateValue(env, argv, "getDate")); 2069596a2c1Sopenharmony_ci return list; 2079596a2c1Sopenharmony_ci} 2089596a2c1Sopenharmony_ci 2099596a2c1Sopenharmony_ciint HolidayManagerAddon::GetDateValue(napi_env env, napi_value value, const std::string method) 2109596a2c1Sopenharmony_ci{ 2119596a2c1Sopenharmony_ci int val = 0; 2129596a2c1Sopenharmony_ci if (!value) { 2139596a2c1Sopenharmony_ci return val; 2149596a2c1Sopenharmony_ci } 2159596a2c1Sopenharmony_ci napi_value funcGetDateInfo = nullptr; 2169596a2c1Sopenharmony_ci napi_status status = napi_get_named_property(env, value, method.c_str(), &funcGetDateInfo); 2179596a2c1Sopenharmony_ci if (status != napi_ok) { 2189596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Get method %{public}s failed", method.c_str()); 2199596a2c1Sopenharmony_ci return val; 2209596a2c1Sopenharmony_ci } 2219596a2c1Sopenharmony_ci napi_value ret_value = nullptr; 2229596a2c1Sopenharmony_ci status = napi_call_function(env, value, funcGetDateInfo, 0, nullptr, &ret_value); 2239596a2c1Sopenharmony_ci if (status != napi_ok) { 2249596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Get milliseconds failed"); 2259596a2c1Sopenharmony_ci return val; 2269596a2c1Sopenharmony_ci } 2279596a2c1Sopenharmony_ci 2289596a2c1Sopenharmony_ci status = napi_get_value_int32(env, ret_value, &val); 2299596a2c1Sopenharmony_ci if (status != napi_ok) { 2309596a2c1Sopenharmony_ci HILOG_ERROR_I18N("GetDateValue: Retrieve field failed"); 2319596a2c1Sopenharmony_ci return val; 2329596a2c1Sopenharmony_ci } 2339596a2c1Sopenharmony_ci return val; 2349596a2c1Sopenharmony_ci} 2359596a2c1Sopenharmony_ci 2369596a2c1Sopenharmony_ciint32_t HolidayManagerAddon::ValidateParamNumber(napi_env &env, napi_value &argv) 2379596a2c1Sopenharmony_ci{ 2389596a2c1Sopenharmony_ci napi_valuetype valueType = napi_valuetype::napi_undefined; 2399596a2c1Sopenharmony_ci napi_typeof(env, argv, &valueType); 2409596a2c1Sopenharmony_ci if (valueType != napi_valuetype::napi_number) { 2419596a2c1Sopenharmony_ci ErrorUtil::NapiThrow(env, I18N_NOT_FOUND, "year", "number", true); 2429596a2c1Sopenharmony_ci return -1; 2439596a2c1Sopenharmony_ci } 2449596a2c1Sopenharmony_ci int32_t val = 0; 2459596a2c1Sopenharmony_ci napi_status status = napi_get_value_int32(env, argv, &val); 2469596a2c1Sopenharmony_ci if (status != napi_ok) { 2479596a2c1Sopenharmony_ci HILOG_ERROR_I18N("ValidateParamNumber: Retrieve field failed"); 2489596a2c1Sopenharmony_ci return -1; 2499596a2c1Sopenharmony_ci } 2509596a2c1Sopenharmony_ci if (val < 0) { 2519596a2c1Sopenharmony_ci ErrorUtil::NapiThrow(env, I18N_NOT_VALID, "year", "a non-negative number", true); 2529596a2c1Sopenharmony_ci return -1; 2539596a2c1Sopenharmony_ci } 2549596a2c1Sopenharmony_ci return val; 2559596a2c1Sopenharmony_ci} 2569596a2c1Sopenharmony_ci 2579596a2c1Sopenharmony_cinapi_value HolidayManagerAddon::CreateHolidayItem(napi_env env, const HolidayInfoItem &holidayItem) 2589596a2c1Sopenharmony_ci{ 2599596a2c1Sopenharmony_ci napi_value result; 2609596a2c1Sopenharmony_ci napi_status status = napi_create_object(env, &result); 2619596a2c1Sopenharmony_ci if (status != napi_ok) { 2629596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Create Holiday Item object failed."); 2639596a2c1Sopenharmony_ci return nullptr; 2649596a2c1Sopenharmony_ci } 2659596a2c1Sopenharmony_ci status = napi_set_named_property(env, result, "baseName", 2669596a2c1Sopenharmony_ci VariableConvertor::CreateString(env, holidayItem.baseName)); 2679596a2c1Sopenharmony_ci if (status != napi_ok) { 2689596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Failed to set element baseName."); 2699596a2c1Sopenharmony_ci return nullptr; 2709596a2c1Sopenharmony_ci } 2719596a2c1Sopenharmony_ci status = napi_set_named_property(env, result, "year", 2729596a2c1Sopenharmony_ci VariableConvertor::CreateNumber(env, holidayItem.year)); 2739596a2c1Sopenharmony_ci if (status != napi_ok) { 2749596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Failed to set element year."); 2759596a2c1Sopenharmony_ci return nullptr; 2769596a2c1Sopenharmony_ci } 2779596a2c1Sopenharmony_ci status = napi_set_named_property(env, result, "month", 2789596a2c1Sopenharmony_ci VariableConvertor::CreateNumber(env, holidayItem.month)); 2799596a2c1Sopenharmony_ci if (status != napi_ok) { 2809596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Failed to set element month."); 2819596a2c1Sopenharmony_ci return nullptr; 2829596a2c1Sopenharmony_ci } 2839596a2c1Sopenharmony_ci status = napi_set_named_property(env, result, "day", 2849596a2c1Sopenharmony_ci VariableConvertor::CreateNumber(env, holidayItem.day)); 2859596a2c1Sopenharmony_ci if (status != napi_ok) { 2869596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Failed to set element day."); 2879596a2c1Sopenharmony_ci return nullptr; 2889596a2c1Sopenharmony_ci } 2899596a2c1Sopenharmony_ci napi_value localNames = HolidayLocalNameItem(env, holidayItem.localNames); 2909596a2c1Sopenharmony_ci if (localNames != nullptr) { 2919596a2c1Sopenharmony_ci status = napi_set_named_property(env, result, "localNames", localNames); 2929596a2c1Sopenharmony_ci if (status != napi_ok) { 2939596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Failed to set element localNames."); 2949596a2c1Sopenharmony_ci return nullptr; 2959596a2c1Sopenharmony_ci } 2969596a2c1Sopenharmony_ci } 2979596a2c1Sopenharmony_ci return result; 2989596a2c1Sopenharmony_ci} 2999596a2c1Sopenharmony_ci 3009596a2c1Sopenharmony_cinapi_value HolidayManagerAddon::HolidayLocalNameItem(napi_env env, const std::vector<HolidayLocalName> localNames) 3019596a2c1Sopenharmony_ci{ 3029596a2c1Sopenharmony_ci napi_value result = nullptr; 3039596a2c1Sopenharmony_ci napi_status status = napi_create_array_with_length(env, localNames.size(), &result); 3049596a2c1Sopenharmony_ci if (status != napi_ok) { 3059596a2c1Sopenharmony_ci HILOG_ERROR_I18N("create HolidayLocalName array failed."); 3069596a2c1Sopenharmony_ci return nullptr; 3079596a2c1Sopenharmony_ci } 3089596a2c1Sopenharmony_ci for (size_t i = 0; i < localNames.size(); i++) { 3099596a2c1Sopenharmony_ci napi_value localNameItem; 3109596a2c1Sopenharmony_ci status = napi_create_object(env, &localNameItem); 3119596a2c1Sopenharmony_ci if (status != napi_ok) { 3129596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Create HolidayLocalName Item object failed."); 3139596a2c1Sopenharmony_ci return nullptr; 3149596a2c1Sopenharmony_ci } 3159596a2c1Sopenharmony_ci status = napi_set_named_property(env, localNameItem, "language", 3169596a2c1Sopenharmony_ci VariableConvertor::CreateString(env, localNames[i].language)); 3179596a2c1Sopenharmony_ci if (status != napi_ok) { 3189596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Create HolidayLocalName.language Item object failed."); 3199596a2c1Sopenharmony_ci return nullptr; 3209596a2c1Sopenharmony_ci } 3219596a2c1Sopenharmony_ci status = napi_set_named_property(env, localNameItem, "name", 3229596a2c1Sopenharmony_ci VariableConvertor::CreateString(env, localNames[i].name)); 3239596a2c1Sopenharmony_ci if (status != napi_ok) { 3249596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Create HolidayLocalName.name Item object failed."); 3259596a2c1Sopenharmony_ci return nullptr; 3269596a2c1Sopenharmony_ci } 3279596a2c1Sopenharmony_ci status = napi_set_element(env, result, i, localNameItem); 3289596a2c1Sopenharmony_ci if (status != napi_ok) { 3299596a2c1Sopenharmony_ci HILOG_ERROR_I18N("Failed to set HolidayLocalName element."); 3309596a2c1Sopenharmony_ci return nullptr; 3319596a2c1Sopenharmony_ci } 3329596a2c1Sopenharmony_ci } 3339596a2c1Sopenharmony_ci return result; 3349596a2c1Sopenharmony_ci} 3359596a2c1Sopenharmony_ci} // namespace I18n 3369596a2c1Sopenharmony_ci} // namespace Global 3379596a2c1Sopenharmony_ci} // namespace OHOS