1/*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15#ifndef BASE_LOCATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_INCLUDE_COMMON_H
16#define BASE_LOCATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_INCLUDE_COMMON_H
17
18#include "location_log.h"
19#include "napi/native_api.h"
20#include "napi/native_node_api.h"
21#include "notification_button_option.h"
22#include "notification_helper.h"
23#include "notification_local_live_view_button.h"
24#include "notification_progress.h"
25#include "notification_time.h"
26#include "ans_convert_enum.h"
27
28namespace OHOS {
29namespace Location {
30using namespace OHOS::Notification;
31using namespace OHOS::NotificationNapi;
32
33constexpr int32_t STR_MAX_SIZE = 200;
34constexpr int32_t LONG_STR_MAX_SIZE = 1024;
35constexpr uint8_t OPERATION_MAX_TYPE = 3;
36constexpr int8_t NO_ERROR = 0;
37constexpr int8_t ERROR = -1;
38
39enum class SemanticActionButton {
40    NONE_ACTION_BUTTON,
41    REPLY_ACTION_BUTTON,
42    READ_ACTION_BUTTON,
43    UNREAD_ACTION_BUTTON,
44    DELETE_ACTION_BUTTON,
45    ARCHIVE_ACTION_BUTTON,
46    MUTE_ACTION_BUTTON,
47    UNMUTE_ACTION_BUTTON,
48    THUMBS_UP_ACTION_BUTTON,
49    THUMBS_DOWN_ACTION_BUTTON,
50    CALL_ACTION_BUTTON
51};
52
53enum class InputsSource {
54    FREE_FORM_INPUT,
55    OPTION
56};
57
58enum class DisturbMode {
59    ALLOW_UNKNOWN,
60    ALLOW_ALL,
61    ALLOW_PRIORITY,
62    ALLOW_NONE,
63    ALLOW_ALARMS
64};
65
66enum class InputEditType {
67    EDIT_AUTO,
68    EDIT_DISABLED,
69    EDIT_ENABLED
70};
71
72
73enum class NotificationFlagStatus {
74    TYPE_NONE,
75    TYPE_OPEN,
76    TYPE_CLOSE
77};
78
79struct NotificationSubscribeInfo {
80    std::vector<std::string> bundleNames;
81    int32_t userId = 0;
82    bool hasSubscribeInfo = false;
83};
84
85struct CallbackPromiseInfo {
86    napi_ref callback = nullptr;
87    napi_deferred deferred = nullptr;
88    bool isCallback = false;
89    int32_t errorCode = 0;
90};
91
92class NotificationNapi {
93    NotificationNapi();
94
95    ~NotificationNapi();
96
97public:
98    /**
99     * @brief Gets a napi value that is used to represent specified bool value
100     *
101     * @param env Indicates the environment that the API is invoked under
102     * @param isValue Indicates a bool value
103     * @return Returns a napi value that is used to represent specified bool value
104     */
105    static napi_value NapiGetBoolean(napi_env env, const bool &isValue);
106
107    /**
108     * @brief Gets the napi value that is used to represent the null object
109     *
110     * @param env Indicates the environment that the API is invoked under
111     * @return Returns the napi value that is used to represent the null object
112     */
113    static napi_value NapiGetNull(napi_env env);
114
115    /**
116     * @brief Gets the napi value that is used to represent the undefined object
117     *
118     * @param env Indicates the environment that the API is invoked under
119     * @return Returns the napi value that is used to represent the undefined object
120     */
121    static napi_value NapiGetUndefined(napi_env env);
122
123    /**
124     * @brief Gets a napi value with specified error code for callback
125     *
126     * @param env Indicates the environment that the API is invoked under
127     * @param errCode Indicates specified err code
128     * @return Returns a napi value with specified error code for callback
129     */
130    static napi_value GetCallbackErrorValue(napi_env env, int32_t errCode);
131
132    /**
133     * @brief Pads the CallbackPromiseInfo struct
134     *
135     * @param env Indicates the environment that the API is invoked under
136     * @param callback Indicates a napi_ref for callback
137     * @param info Indicates the CallbackPromiseInfo struct to be padded
138     * @param promise Indicates the promise to be created when the callback is null
139     */
140    static void PaddingCallbackPromiseInfo(
141        const napi_env &env, const napi_ref &callback, CallbackPromiseInfo &info, napi_value &promise);
142
143    /**
144     * @brief Gets the returned result by the CallbackPromiseInfo struct
145     *
146     * @param env Indicates the environment that the API is invoked under
147     * @param info Indicates the CallbackPromiseInfo struct
148     * @param result Indicates the returned result
149     */
150    static void ReturnCallbackPromise(const napi_env &env, const CallbackPromiseInfo &info, const napi_value &result);
151
152    /**
153     * @brief Calls the callback with the result and error code
154     *
155     * @param env Indicates the environment that the API is invoked under
156     * @param callbackIn Indicates the callback to be called
157     * @param errCode Indicates the error code returned by the callback
158     * @param result Indicates the result returned by the callback
159     */
160    static void SetCallback(const napi_env &env,
161        const napi_ref &callbackIn, const int32_t &errorCode, const napi_value &result, bool newType);
162
163    /**
164     * @brief Calls the callback with the result
165     *
166     * @param env Indicates the environment that the API is invoked under
167     * @param callbackIn Indicates the callback to be called
168     * @param result Indicates the result returned by the callback
169     */
170    static void SetCallback(
171        const napi_env &env, const napi_ref &callbackIn, const napi_value &result);
172
173    /**
174     * @brief Calls the callback with the result
175     *
176     * @param env Indicates the environment that the API is invoked under
177     * @param callbackIn Indicates the callback to be called
178     * @param result Indicates the result returned by the callback
179     */
180    static void SetCallbackArg2(
181        const napi_env &env, const napi_ref &callbackIn, const napi_value &result0, const napi_value &result1);
182
183    /**
184     * @brief Processes the promise with the result and error code
185     *
186     * @param env Indicates the environment that the API is invoked under
187     * @param deferred Indicates the deferred object whose associated promise to resolve
188     * @param errorCode Indicates the error code returned by the callback
189     * @param result Indicates the result returned by the callback
190     */
191    static void SetPromise(const napi_env &env,
192        const napi_deferred &deferred, const int32_t &errorCode, const napi_value &result, bool newType);
193
194    /**
195     * @brief Gets the returned result by the callback when an error occurs
196     *
197     * @param env Indicates the environment that the API is invoked under
198     * @param callback Indicates a napi_ref for callback
199     * @return Returns the null object
200     */
201    static napi_value JSParaError(const napi_env &env, const napi_ref &callback);
202
203    /**
204     * @brief Parses a single parameter for callback
205     *
206     * @param env Indicates the environment that the API is invoked under
207     * @param info Indicates the callback info passed into the callback function
208     * @param callback Indicates the napi_ref for the callback parameter
209     * @return Returns the null object if success, returns the null value otherwise
210     */
211    static napi_value ParseParaOnlyCallback(const napi_env &env, const napi_callback_info &info, napi_ref &callback);
212
213    /**
214     * @brief Gets a NotificationSubscribeInfo object from specified js object
215     *
216     * @param env Indicates the environment that the API is invoked under
217     * @param value Indicates a js object to be converted
218     * @param result Indicates a NotificationSubscribeInfo object from specified js object
219     * @return Returns the null object if success, returns the null value otherwise
220     */
221    static napi_value GetNotificationSubscriberInfo(
222        const napi_env &env, const napi_value &value, NotificationSubscribeInfo &result);
223
224    /**
225     * @brief Gets a NotificationRequest object from specified js object
226     *
227     * @param env Indicates the environment that the API is invoked under
228     * @param value Indicates a js object to be converted
229     * @param result Indicates a NotificationRequest object from specified js object
230     * @return Returns the null object if success, returns the null value otherwise
231     */
232    static napi_value GetNotificationRequest(
233        const napi_env &env, const napi_value &value, NotificationRequest &request);
234
235    /**
236     * @brief Gets a NotificationRequest object by number type from specified js object
237     *
238     * @param env Indicates the environment that the API is invoked under
239     * @param value Indicates a js object to be converted
240     * @param request Indicates a NotificationRequest object from specified js object
241     * @return Returns the null object if success, returns the null value otherwise
242     */
243    static napi_value GetNotificationRequestByNumber(
244        const napi_env &env, const napi_value &value, NotificationRequest &request);
245
246    /**
247     * @brief Gets a NotificationRequest object by string type from specified js object
248     *
249     * @param env Indicates the environment that the API is invoked under
250     * @param value Indicates a js object to be converted
251     * @param request Indicates a NotificationRequest object from specified js object
252     * @return Returns the null object if success, returns the null value otherwise
253     */
254    static napi_value GetNotificationRequestByString(
255        const napi_env &env, const napi_value &value, NotificationRequest &request);
256
257    /**
258     * @brief Gets a NotificationRequest object by bool type from specified js object
259     *
260     * @param env Indicates the environment that the API is invoked under
261     * @param value Indicates a js object to be converted
262     * @param request Indicates a NotificationRequest object from specified js object
263     * @return Returns the null object if success, returns the null value otherwise
264     */
265    static napi_value GetNotificationRequestByBool(
266        const napi_env &env, const napi_value &value, NotificationRequest &request);
267
268    /**
269     * @brief Gets a NotificationRequest object by custom type from specified js object
270     *
271     * @param env Indicates the environment that the API is invoked under
272     * @param value Indicates a js object to be converted
273     * @param request Indicates a NotificationRequest object from specified js object
274     * @return Returns the null object if success, returns the null value otherwise
275     */
276    static napi_value GetNotificationRequestByCustom(
277        const napi_env &env, const napi_value &value, NotificationRequest &request);
278
279    /**
280     * @brief Gets the id of NotificationRequest object from specified js object
281     *
282     * @param env Indicates the environment that the API is invoked under
283     * @param value Indicates a js object to be converted
284     * @param request Indicates a NotificationRequest object from specified js object
285     * @return Returns the null object if success, returns the null value otherwise
286     */
287    static napi_value GetNotificationId(const napi_env &env, const napi_value &value, NotificationRequest &request);
288
289    /**
290     * @brief Gets the slot type of NotificationRequest object from specified js object
291     *
292     * @param env Indicates the environment that the API is invoked under
293     * @param value Indicates a js object to be converted
294     * @param request Indicates a NotificationRequest object from specified js object
295     * @return Returns the null object if success, returns the null value otherwise
296     */
297    static napi_value GetNotificationSlotType(
298        const napi_env &env, const napi_value &value, NotificationRequest &request);
299
300    /**
301     * @brief Gets the isOngoing flag of NotificationRequest object from specified js object
302     *
303     * @param env Indicates the environment that the API is invoked under
304     * @param value Indicates a js object to be converted
305     * @param request Indicates a NotificationRequest object from specified js object
306     * @return Returns the null object if success, returns the null value otherwise
307     */
308    static napi_value GetNotificationIsOngoing(
309        const napi_env &env, const napi_value &value, NotificationRequest &request);
310
311    /**
312     * @brief Gets the isUnremovable flag of NotificationRequest object from specified js object
313     *
314     * @param env Indicates the environment that the API is invoked under
315     * @param value Indicates a js object to be converted
316     * @param request Indicates a NotificationRequest object from specified js object
317     * @return Returns the null object if success, returns the null value otherwise
318     */
319    static napi_value GetNotificationIsUnremovable(
320        const napi_env &env, const napi_value &value, NotificationRequest &request);
321
322    /**
323     * @brief Gets the delivery time of NotificationRequest object from specified js object
324     *
325     * @param env Indicates the environment that the API is invoked under
326     * @param value Indicates a js object to be converted
327     * @param request Indicates a NotificationRequest object from specified js object
328     * @return Returns the null object if success, returns the null value otherwise
329     */
330    static napi_value GetNotificationDeliveryTime(
331        const napi_env &env, const napi_value &value, NotificationRequest &request);
332
333    /**
334     * @brief Gets the tapDismissed flag of NotificationRequest object from specified js object
335     *
336     * @param env Indicates the environment that the API is invoked under
337     * @param value Indicates a js object to be converted
338     * @param request Indicates a NotificationRequest object from specified js object
339     * @return Returns the null object if success, returns the null value otherwise
340     */
341    static napi_value GetNotificationtapDismissed(
342        const napi_env &env, const napi_value &value, NotificationRequest &request);
343
344    /**
345     * @brief Gets the extra information of NotificationRequest object from specified js object
346     *
347     * @param env Indicates the environment that the API is invoked under
348     * @param value Indicates a js object to be converted
349     * @param request Indicates a NotificationRequest object from specified js object
350     * @return Returns the null object if success, returns the null value otherwise
351     */
352    static napi_value GetNotificationExtraInfo(
353        const napi_env &env, const napi_value &value, NotificationRequest &request);
354
355    /**
356     * @brief Gets the group name of NotificationRequest object from specified js object
357     *
358     * @param env Indicates the environment that the API is invoked under
359     * @param value Indicates a js object to be converted
360     * @param request Indicates a NotificationRequest object from specified js object
361     * @return Returns the null object if success, returns the null value otherwise
362     */
363    static napi_value GetNotificationGroupName(
364        const napi_env &env, const napi_value &value, NotificationRequest &request);
365
366    /**
367     * @brief Gets the removal WantAgent object of NotificationRequest object from specified js object
368     *
369     * @param env Indicates the environment that the API is invoked under
370     * @param value Indicates a js object to be converted
371     * @param request Indicates a NotificationRequest object from specified js object
372     * @return Returns the null object if success, returns the null value otherwise
373     */
374    static napi_value GetNotificationRemovalWantAgent(
375        const napi_env &env, const napi_value &value, NotificationRequest &request);
376
377    /**
378     * @brief Gets the max screen WantAgent object of NotificationRequest object from specified js object
379     *
380     * @param env Indicates the environment that the API is invoked under
381     * @param value Indicates a js object to be converted
382     * @param request Indicates a NotificationRequest object from specified js object
383     * @return Returns the null object if success, returns the null value otherwise
384     */
385    static napi_value GetNotificationMaxScreenWantAgent(
386        const napi_env &env, const napi_value &value, NotificationRequest &request);
387
388    /**
389     * @brief Gets the auto deleted time of NotificationRequest object from specified js object
390     *
391     * @param env Indicates the environment that the API is invoked under
392     * @param value Indicates a js object to be converted
393     * @param request Indicates a NotificationRequest object from specified js object
394     * @return Returns the null object if success, returns the null value otherwise
395     */
396    static napi_value GetNotificationAutoDeletedTime(
397        const napi_env &env, const napi_value &value, NotificationRequest &request);
398
399    /**
400     * @brief Gets the classification of NotificationRequest object from specified js object
401     *
402     * @param env Indicates the environment that the API is invoked under
403     * @param value Indicates a js object to be converted
404     * @param request Indicates a NotificationRequest object from specified js object
405     * @return Returns the null object if success, returns the null value otherwise
406     */
407    static napi_value GetNotificationClassification(
408        const napi_env &env, const napi_value &value, NotificationRequest &request);
409
410    /**
411     * @brief Gets the appMessageId of NotificationRequest object from specified js object
412     *
413     * @param env Indicates the environment that the API is invoked under
414     * @param value Indicates a js object to be converted
415     * @param request Indicates a NotificationRequest object from specified js object
416     * @return Returns the null object if success, returns the null value otherwise
417     */
418    static napi_value GetNotificationAppMessageId(
419        const napi_env &env, const napi_value &value, NotificationRequest &request);
420
421    /**
422     * @brief Gets the color of NotificationRequest object from specified js object
423     *
424     * @param env Indicates the environment that the API is invoked under
425     * @param value Indicates a js object to be converted
426     * @param request Indicates a NotificationRequest object from specified js object
427     * @return Returns the null object if success, returns the null value otherwise
428     */
429    static napi_value GetNotificationColor(const napi_env &env, const napi_value &value, NotificationRequest &request);
430
431    /**
432     * @brief Gets the colorEnabled flag of NotificationRequest object from specified js object
433     *
434     * @param env Indicates the environment that the API is invoked under
435     * @param value Indicates a js object to be converted
436     * @param request Indicates a NotificationRequest object from specified js object
437     * @return Returns the null object if success, returns the null value otherwise
438     */
439    static napi_value GetNotificationColorEnabled(
440        const napi_env &env, const napi_value &value, NotificationRequest &request);
441
442    /**
443     * @brief Gets the isAlertOnce flag of NotificationRequest object from specified js object
444     *
445     * @param env Indicates the environment that the API is invoked under
446     * @param value Indicates a js object to be converted
447     * @param request Indicates a NotificationRequest object from specified js object
448     * @return Returns the null object if success, returns the null value otherwise
449     */
450    static napi_value GetNotificationIsAlertOnce(
451        const napi_env &env, const napi_value &value, NotificationRequest &request);
452
453    /**
454     * @brief Gets the isStopwatch flag of NotificationRequest object from specified js object
455     *
456     * @param env Indicates the environment that the API is invoked under
457     * @param value Indicates a js object to be converted
458     * @param request Indicates a NotificationRequest object from specified js object
459     * @return Returns the null object if success, returns the null value otherwise
460     */
461    static napi_value GetNotificationIsStopwatch(
462        const napi_env &env, const napi_value &value, NotificationRequest &request);
463
464    /**
465     * @brief Gets the isCountDown flag of NotificationRequest object from specified js object
466     *
467     * @param env Indicates the environment that the API is invoked under
468     * @param value Indicates a js object to be converted
469     * @param request Indicates a NotificationRequest object from specified js object
470     * @return Returns the null object if success, returns the null value otherwise
471     */
472    static napi_value GetNotificationIsCountDown(
473        const napi_env &env, const napi_value &value, NotificationRequest &request);
474
475    /**
476     * @brief Gets the status bar text of NotificationRequest object from specified js object
477     *
478     * @param env Indicates the environment that the API is invoked under
479     * @param value Indicates a js object to be converted
480     * @param request Indicates a NotificationRequest object from specified js object
481     * @return Returns the null object if success, returns the null value otherwise
482     */
483    static napi_value GetNotificationStatusBarText(
484        const napi_env &env, const napi_value &value, NotificationRequest &request);
485
486    /**
487     * @brief Gets the label of NotificationRequest object from specified js object
488     *
489     * @param env Indicates the environment that the API is invoked under
490     * @param value Indicates a js object to be converted
491     * @param request Indicates a NotificationRequest object from specified js object
492     * @return Returns the null object if success, returns the null value otherwise
493     */
494    static napi_value GetNotificationLabel(const napi_env &env, const napi_value &value, NotificationRequest &request);
495
496    /**
497     * @brief Gets the badge icon style of NotificationRequest object from specified js object
498     *
499     * @param env Indicates the environment that the API is invoked under
500     * @param value Indicates a js object to be converted
501     * @param request Indicates a NotificationRequest object from specified js object
502     * @return Returns the null object if success, returns the null value otherwise
503     */
504    static napi_value GetNotificationBadgeIconStyle(
505        const napi_env &env, const napi_value &value, NotificationRequest &request);
506
507    /**
508     * @brief Gets the showDeliveryTime flag of NotificationRequest object from specified js object
509     *
510     * @param env Indicates the environment that the API is invoked under
511     * @param value Indicates a js object to be converted
512     * @param request Indicates a NotificationRequest object from specified js object
513     * @return Returns the null object if success, returns the null value otherwise
514     */
515    static napi_value GetNotificationShowDeliveryTime(
516        const napi_env &env, const napi_value &value, NotificationRequest &request);
517
518    static napi_value GetNotificationIsRemoveAllowed(
519        const napi_env &env, const napi_value &value, NotificationRequest &request);
520
521    /**
522     * @brief Gets the content of NotificationRequest object from specified js object
523     *
524     * @param env Indicates the environment that the API is invoked under
525     * @param value Indicates a js object to be converted
526     * @param request Indicates a NotificationRequest object from specified js object
527     * @return Returns the null object if success, returns the null value otherwise
528     */
529    static napi_value GetNotificationContent(
530        const napi_env &env, const napi_value &value, NotificationRequest &request);
531
532    /**
533     * @brief Gets the WantAgent object of NotificationRequest object from specified js object
534     *
535     * @param env Indicates the environment that the API is invoked under
536     * @param value Indicates a js object to be converted
537     * @param request Indicates a NotificationRequest object from specified js object
538     * @return Returns the null object if success, returns the null value otherwise
539     */
540    static napi_value GetNotificationWantAgent(
541        const napi_env &env, const napi_value &value, NotificationRequest &request);
542
543    /**
544     * @brief Gets a NotificationSlot object from specified js object
545     *
546     * @param env Indicates the environment that the API is invoked under
547     * @param value Indicates a js object to be converted
548     * @param slot Indicates a NotificationSlot object from specified js object
549     * @return Returns the null object if success, returns the null value otherwise
550     */
551    static napi_value GetNotificationSlot(
552        const napi_env &env, const napi_value &value, NotificationSlot &slot);
553
554    /**
555     * @brief Gets the string objects of NotificationSlot object from specified js object
556     *
557     * @param env Indicates the environment that the API is invoked under
558     * @param value Indicates a js object to be converted
559     * @param slot Indicates a NotificationSlot object from specified js object
560     * @return Returns the null object if success, returns the null value otherwise
561     */
562    static napi_value GetNotificationSlotByString(
563        const napi_env &env, const napi_value &value, NotificationSlot &slot);
564
565    /**
566     * @brief Gets the bool objects of NotificationSlot object from specified js object
567     *
568     * @param env Indicates the environment that the API is invoked under
569     * @param value Indicates a js object to be converted
570     * @param slot Indicates a NotificationSlot object from specified js object
571     * @return Returns the null object if success, returns the null value otherwise
572     */
573    static napi_value GetNotificationSlotByBool(
574        const napi_env &env, const napi_value &value, NotificationSlot &slot);
575
576    /**
577     * @brief Gets the number objects of NotificationSlot object from specified js object
578     *
579     * @param env Indicates the environment that the API is invoked under
580     * @param value Indicates a js object to be converted
581     * @param slot Indicates a NotificationSlot object from specified js object
582     * @return Returns the null object if success, returns the null value otherwise
583     */
584    static napi_value GetNotificationSlotByNumber(
585        const napi_env &env, const napi_value &value, NotificationSlot &slot);
586
587    /**
588     * @brief Gets the vibration of NotificationSlot object from specified js object
589     *
590     * @param env Indicates the environment that the API is invoked under
591     * @param value Indicates a js object to be converted
592     * @param slot Indicates a NotificationSlot object from specified js object
593     * @return Returns the null object if success, returns the null value otherwise
594     */
595    static napi_value GetNotificationSlotByVibration(
596        const napi_env &env, const napi_value &value, NotificationSlot &slot);
597
598    /**
599     * @brief Gets the action buttons of NotificationRequest object from specified js object
600     *
601     * @param env Indicates the environment that the API is invoked under
602     * @param value Indicates a js object to be converted
603     * @param request Indicates a NotificationRequest object from specified js object
604     * @return Returns the null object if success, returns the null value otherwise
605     */
606    static napi_value GetNotificationActionButtons(
607        const napi_env &env, const napi_value &value, NotificationRequest &request);
608
609    /**
610     * @brief Gets a NotificationActionButton object from specified js object
611     *
612     * @param env Indicates the environment that the API is invoked under
613     * @param actionButton Indicates a js object to be converted
614     * @param pActionButton Indicates a NotificationActionButton object from specified js object
615     * @return Returns the null object if success, returns the null value otherwise
616     */
617    static napi_value GetNotificationActionButtonsDetailed(
618        const napi_env &env, const napi_value &actionButton, std::shared_ptr<NotificationActionButton> &pActionButton);
619
620    /**
621     * @brief Gets the basic information of NotificationActionButton object from specified js object
622     *
623     * @param env Indicates the environment that the API is invoked under
624     * @param actionButton Indicates a js object to be converted
625     * @param pActionButton Indicates a NotificationActionButton object from specified js object
626     * @return Returns the null object if success, returns the null value otherwise
627     */
628    static napi_value GetNotificationActionButtonsDetailedBasicInfo(
629        const napi_env &env, const napi_value &actionButton, std::shared_ptr<NotificationActionButton> &pActionButton);
630
631    /**
632     * @brief Gets the extras of NotificationActionButton object from specified js object
633     *
634     * @param env Indicates the environment that the API is invoked under
635     * @param actionButton Indicates a js object to be converted
636     * @param pActionButton Indicates a NotificationActionButton object from specified js object
637     * @return Returns the null object if success, returns the null value otherwise
638     */
639    static napi_value GetNotificationActionButtonsDetailedByExtras(
640        const napi_env &env, const napi_value &actionButton, std::shared_ptr<NotificationActionButton> &pActionButton);
641
642    /**
643     * @brief Gets the user input of NotificationActionButton object from specified js object
644     *
645     * @param env Indicates the environment that the API is invoked under
646     * @param actionButton Indicates a js object to be converted
647     * @param pActionButton Indicates a NotificationActionButton object from specified js object
648     * @return Returns the null object if success, returns the null value otherwise
649     */
650    static napi_value GetNotificationUserInput(
651        const napi_env &env, const napi_value &actionButton, std::shared_ptr<NotificationActionButton> &pActionButton);
652
653    /**
654     * @brief Gets the input key of NotificationUserInput object from specified js object
655     *
656     * @param env Indicates the environment that the API is invoked under
657     * @param userInputResult Indicates a js object to be converted
658     * @param userInput Indicates a NotificationUserInput object from specified js object
659     * @return Returns the null object if success, returns the null value otherwise
660     */
661    static napi_value GetNotificationUserInputByInputKey(
662        const napi_env &env, const napi_value &userInputResult, std::shared_ptr<NotificationUserInput> &userInput);
663
664    /**
665     * @brief Gets the tag of NotificationUserInput object from specified js object
666     *
667     * @param env Indicates the environment that the API is invoked under
668     * @param userInputResult Indicates a js object to be converted
669     * @param userInput Indicates a NotificationUserInput object from specified js object
670     * @return Returns the null object if success, returns the null value otherwise
671     */
672    static napi_value GetNotificationUserInputByTag(
673        const napi_env &env, const napi_value &userInputResult, std::shared_ptr<NotificationUserInput> &userInput);
674
675    /**
676     * @brief Gets the options of NotificationUserInput object from specified js object
677     *
678     * @param env Indicates the environment that the API is invoked under
679     * @param userInputResult Indicates a js object to be converted
680     * @param userInput Indicates a NotificationUserInput object from specified js object
681     * @return Returns the null object if success, returns the null value otherwise
682     */
683    static napi_value GetNotificationUserInputByOptions(
684        const napi_env &env, const napi_value &userInputResult, std::shared_ptr<NotificationUserInput> &userInput);
685
686    /**
687     * @brief Gets the permit mime types of NotificationUserInput object from specified js object
688     *
689     * @param env Indicates the environment that the API is invoked under
690     * @param userInputResult Indicates a js object to be converted
691     * @param userInput Indicates a NotificationUserInput object from specified js object
692     * @return Returns the null object if success, returns the null value otherwise
693     */
694    static napi_value GetNotificationUserInputByPermitMimeTypes(
695        const napi_env &env, const napi_value &userInputResult, std::shared_ptr<NotificationUserInput> &userInput);
696
697    /**
698     * @brief Gets the permit free from input of NotificationUserInput object from specified js object
699     *
700     * @param env Indicates the environment that the API is invoked under
701     * @param userInputResult Indicates a js object to be converted
702     * @param userInput Indicates a NotificationUserInput object from specified js object
703     * @return Returns the null object if success, returns the null value otherwise
704     */
705    static napi_value GetNotificationUserInputByPermitFreeFormInput(
706        const napi_env &env, const napi_value &userInputResult, std::shared_ptr<NotificationUserInput> &userInput);
707
708    /**
709     * @brief Gets the edit type of NotificationUserInput object from specified js object
710     *
711     * @param env Indicates the environment that the API is invoked under
712     * @param userInputResult Indicates a js object to be converted
713     * @param userInput Indicates a NotificationUserInput object from specified js object
714     * @return Returns the null object if success, returns the null value otherwise
715     */
716    static napi_value GetNotificationUserInputByEditType(
717        const napi_env &env, const napi_value &userInputResult, std::shared_ptr<NotificationUserInput> &userInput);
718
719    /**
720     * @brief Gets the additional data of NotificationUserInput object from specified js object
721     *
722     * @param env Indicates the environment that the API is invoked under
723     * @param userInputResult Indicates a js object to be converted
724     * @param userInput Indicates a NotificationUserInput object from specified js object
725     * @return Returns the null object if success, returns the null value otherwise
726     */
727    static napi_value GetNotificationUserInputByAdditionalData(
728        const napi_env &env, const napi_value &userInputResult, std::shared_ptr<NotificationUserInput> &userInput);
729
730    /**
731     * @brief Gets the small icon of NotificationRequest object from specified js object
732     *
733     * @param env Indicates the environment that the API is invoked under
734     * @param value Indicates a js object to be converted
735     * @param request Indicates a NotificationRequest object from specified js object
736     * @return Returns the null object if success, returns the null value otherwise
737     */
738    static napi_value GetNotificationSmallIcon(
739        const napi_env &env, const napi_value &value, NotificationRequest &request);
740
741    /**
742     * @brief Gets the large icon of NotificationRequest object from specified js object
743     *
744     * @param env Indicates the environment that the API is invoked under
745     * @param value Indicates a js object to be converted
746     * @param request Indicates a NotificationRequest object from specified js object
747     * @return Returns the null object if success, returns the null value otherwise
748     */
749    static napi_value GetNotificationLargeIcon(
750        const napi_env &env, const napi_value &value, NotificationRequest &request);
751
752    /**
753     * @brief Gets the overlay icon of NotificationRequest object from specified js object
754     *
755     * @param env Indicates the environment that the API is invoked under
756     * @param value Indicates a js object to be converted
757     * @param request Indicates a NotificationRequest object from specified js object
758     * @return Returns the null object if success, returns the null value otherwise
759     */
760    static napi_value GetNotificationOverlayIcon(
761        const napi_env &env, const napi_value &value, NotificationRequest &request);
762
763    /**
764     * @brief Gets the distributed options of NotificationRequest object from specified js object
765     *
766     * @param env Indicates the environment that the API is invoked under
767     * @param value Indicates a js object to be converted
768     * @param request Indicates a NotificationRequest object from specified js object
769     * @return Returns the null object if success, returns the null value otherwise
770     */
771    static napi_value GetNotificationRequestDistributedOptions(
772        const napi_env &env, const napi_value &value, NotificationRequest &request);
773
774    /**
775     * @brief Gets the isDistributed flag of NotificationRequest object from specified js object
776     *
777     * @param env Indicates the environment that the API is invoked under
778     * @param value Indicates a js object to be converted
779     * @param request Indicates a NotificationRequest object from specified js object
780     * @return Returns the null object if success, returns the null value otherwise
781     */
782    static napi_value GetNotificationIsDistributed(
783        const napi_env &env, const napi_value &value, NotificationRequest &request);
784
785    /**
786     * @brief Gets the devices that support display of NotificationRequest object from specified js object
787     *
788     * @param env Indicates the environment that the API is invoked under
789     * @param value Indicates a js object to be converted
790     * @param request Indicates a NotificationRequest object from specified js object
791     * @return Returns the null object if success, returns the null value otherwise
792     */
793    static napi_value GetNotificationSupportDisplayDevices(
794        const napi_env &env, const napi_value &value, NotificationRequest &request);
795
796    /**
797     * @brief Gets the devices that support operation of NotificationRequest object from specified js object
798     *
799     * @param env Indicates the environment that the API is invoked under
800     * @param value Indicates a js object to be converted
801     * @param request Indicates a NotificationRequest object from specified js object
802     * @return Returns the null object if success, returns the null value otherwise
803     */
804    static napi_value GetNotificationSupportOperateDevices(
805        const napi_env &env, const napi_value &value, NotificationRequest &request);
806
807    /**
808     * @brief Gets a content type of notification from specified js object
809     *
810     * @param env Indicates the environment that the API is invoked under
811     * @param value Indicates a js object to be converted
812     * @param type Indicates a the content type of notification from specified js object
813     * @return Returns the null object if success, returns the null value otherwise
814     */
815    static napi_value GetNotificationContentType(const napi_env &env, const napi_value &result, int32_t &type);
816
817    /**
818     * @brief Gets a basic content of NotificationRequest object from specified js object
819     *
820     * @param env Indicates the environment that the API is invoked under
821     * @param value Indicates a js object to be converted
822     * @param request Indicates a NotificationRequest object from specified js object
823     * @return Returns the null object if success, returns the null value otherwise
824     */
825    static napi_value GetNotificationBasicContent(
826        const napi_env &env, const napi_value &result, NotificationRequest &request);
827
828    /**
829     * @brief Gets a NotificationBasicContent object from specified js object
830     *
831     * @param env Indicates the environment that the API is invoked under
832     * @param contentResult Indicates a js object to be converted
833     * @param basicContent Indicates a NotificationBasicContent object from specified js object
834     * @return Returns the null object if success, returns the null value otherwise
835     */
836    static napi_value GetNotificationBasicContentDetailed(
837        const napi_env &env, const napi_value &contentResult, std::shared_ptr<NotificationBasicContent> basicContent);
838
839    /**
840     * @brief Gets a long-text content of NotificationRequest object from specified js object
841     *
842     * @param env Indicates the environment that the API is invoked under
843     * @param value Indicates a js object to be converted
844     * @param request Indicates a NotificationRequest object from specified js object
845     * @return Returns the null object if success, returns the null value otherwise
846     */
847    static napi_value GetNotificationLongTextContent(
848        const napi_env &env, const napi_value &result, NotificationRequest &request);
849
850    /**
851     * @brief Gets a NotificationLongTextContent object from specified js object
852     *
853     * @param env Indicates the environment that the API is invoked under
854     * @param contentResult Indicates a js object to be converted
855     * @param longContent Indicates a NotificationLongTextContent object from specified js object
856     * @return Returns the null object if success, returns the null value otherwise
857     */
858    static napi_value GetNotificationLongTextContentDetailed(
859        const napi_env &env, const napi_value &contentResult,
860        std::shared_ptr<OHOS::Notification::NotificationLongTextContent> &longContent);
861
862    /**
863     * @brief Gets a picture content of NotificationRequest object from specified js object
864     *
865     * @param env Indicates the environment that the API is invoked under
866     * @param result Indicates a js object to be converted
867     * @param request Indicates a NotificationRequest object from specified js object
868     * @return Returns the null object if success, returns the null value otherwise
869     */
870    static napi_value GetNotificationPictureContent(
871        const napi_env &env, const napi_value &result, NotificationRequest &request);
872
873    /**
874     * @brief Gets a NotificationPictureContent object from specified js object
875     *
876     * @param env Indicates the environment that the API is invoked under
877     * @param contentResult Indicates a js object to be converted
878     * @param pictureContent Indicates a NotificationPictureContent object from specified js object
879     * @return Returns the null object if success, returns the null value otherwise
880     */
881    static napi_value GetNotificationPictureContentDetailed(
882        const napi_env &env, const napi_value &contentResult,
883        std::shared_ptr<OHOS::Notification::NotificationPictureContent> &pictureContent);
884
885    /**
886     * @brief Gets a NotificationLocalLiveViewContent object from specified js object
887     *
888     * @param env Indicates the environment that the API is invoked under
889     * @param result Indicates a js object to be converted
890     * @param request Indicates a NotificationLocalLiveViewContent object from specified js object
891     * @return Returns the null object if success, returns the null value otherwise
892     */
893    static napi_value GetNotificationLocalLiveViewContent(
894        const napi_env &env, const napi_value &result, NotificationRequest &request);
895
896    /**
897     * @brief Gets a capsule of NotificationLocalLiveViewContent object from specified js object
898     *
899     * @param env Indicates the environment that the API is invoked under
900     * @param contentResult Indicates a js object to be converted
901     * @param content Indicates a capsule object from specified js object
902     * @return Returns the null object if success, returns the null value otherwise
903     */
904    static napi_value GetNotificationLocalLiveViewCapsule(
905        const napi_env &env, const napi_value &contentResult,
906        std::shared_ptr<OHOS::Notification::NotificationLocalLiveViewContent> content);
907
908    /**
909     * @brief Gets a button of NotificationLocalLiveViewContent object from specified js object
910     *
911     * @param env Indicates the environment that the API is invoked under
912     * @param contentResult Indicates a js object to be converted
913     * @param content Indicates a button object from specified js object
914     * @return Returns the null object if success, returns the null value otherwise
915     */
916    static napi_value GetNotificationLocalLiveViewButton(
917        const napi_env &env, const napi_value &contentResult,
918        std::shared_ptr<OHOS::Notification::NotificationLocalLiveViewContent> content);
919
920    /**
921     * @brief Gets a time of NotificationLocalLiveViewContent object from specified js object
922     *
923     * @param env Indicates the environment that the API is invoked under
924     * @param contentResult Indicates a js object to be converted
925     * @param content Indicates a time object from specified js object
926     * @return Returns the null object if success, returns the null value otherwise
927     */
928    static napi_value GetNotificationLocalLiveViewTime(
929        const napi_env &env, const napi_value &contentResult,
930        std::shared_ptr<OHOS::Notification::NotificationLocalLiveViewContent> content);
931
932    /**
933     * @brief Gets a progress of NotificationLocalLiveViewContent object from specified js object
934     *
935     * @param env Indicates the environment that the API is invoked under
936     * @param contentResult Indicates a js object to be converted
937     * @param content Indicates a progress object from specified js object
938     * @return Returns the null object if success, returns the null value otherwise
939     */
940    static napi_value GetNotificationLocalLiveViewProgress(
941        const napi_env &env, const napi_value &contentResult,
942        std::shared_ptr<OHOS::Notification::NotificationLocalLiveViewContent> content);
943
944    /**
945     * @brief Gets a NotificationLocalLiveViewContent object from specified js object
946     *
947     * @param env Indicates the environment that the API is invoked under
948     * @param contentResult Indicates a js object to be converted
949     * @param content Indicates a NotificationLocalLiveViewContent object from specified js object
950     * @return Returns the null object if success, returns the null value otherwise
951     */
952    static napi_value GetNotificationLocalLiveViewContentDetailed(
953        const napi_env &env, const napi_value &contentResult,
954        std::shared_ptr<OHOS::Notification::NotificationLocalLiveViewContent> content);
955
956    /**
957     * @brief Gets a conversational content of NotificationRequest object from specified js object
958     *
959     * @param env Indicates the environment that the API is invoked under
960     * @param result Indicates a js object to be converted
961     * @param request Indicates a NotificationRequest object from specified js object
962     * @return Returns the null object if success, returns the null value otherwise
963     */
964    static napi_value GetNotificationConversationalContent(
965        const napi_env &env, const napi_value &result, NotificationRequest &request);
966
967    /**
968     * @brief Gets the user of NotificationConversationalContent object from specified js object
969     *
970     * @param env Indicates the environment that the API is invoked under
971     * @param contentResult Indicates a js object to be converted
972     * @param user Indicates a MessageUser object from specified js object
973     * @return Returns the null object if success, returns the null value otherwise
974     */
975    static napi_value GetNotificationConversationalContentByUser(
976        const napi_env &env, const napi_value &contentResult, MessageUser &user);
977
978    /**
979     * @brief Gets the title of NotificationConversationalContent object from specified js object
980     *
981     * @param env Indicates the environment that the API is invoked under
982     * @param contentResult Indicates a js object to be converted
983     * @param conversationalContent Indicates a NotificationConversationalContent object from specified js object
984     * @return Returns the null object if success, returns the null value otherwise
985     */
986    static napi_value GetNotificationConversationalContentTitle(
987        const napi_env &env, const napi_value &contentResult,
988        std::shared_ptr<OHOS::Notification::NotificationConversationalContent> &conversationalContent);
989
990    /**
991     * @brief Gets the group of NotificationConversationalContent object from specified js object
992     *
993     * @param env Indicates the environment that the API is invoked under
994     * @param contentResult Indicates a js object to be converted
995     * @param conversationalContent Indicates a NotificationConversationalContent object from specified js object
996     * @return Returns the null object if success, returns the null value otherwise
997     */
998    static napi_value GetNotificationConversationalContentGroup(
999        const napi_env &env, const napi_value &contentResult,
1000        std::shared_ptr<OHOS::Notification::NotificationConversationalContent> &conversationalContent);
1001
1002    /**
1003     * @brief Gets the messages of NotificationConversationalContent object from specified js object
1004     *
1005     * @param env Indicates the environment that the API is invoked under
1006     * @param contentResult Indicates a js object to be converted
1007     * @param conversationalContent Indicates a NotificationConversationalContent object from specified js object
1008     * @return Returns the null object if success, returns the null value otherwise
1009     */
1010    static napi_value GetNotificationConversationalContentMessages(
1011        const napi_env &env, const napi_value &contentResult,
1012        std::shared_ptr<OHOS::Notification::NotificationConversationalContent> &conversationalContent);
1013
1014    /**
1015     * @brief Gets a NotificationConversationalMessage object from specified js object
1016     *
1017     * @param env Indicates the environment that the API is invoked under
1018     * @param conversationalMessage Indicates a js object to be converted
1019     * @param message Indicates a NotificationConversationalMessage object from specified js object
1020     * @return Returns the null object if success, returns the null value otherwise
1021     */
1022    static napi_value GetConversationalMessage(
1023        const napi_env &env, const napi_value &conversationalMessage,
1024        std::shared_ptr<NotificationConversationalMessage> &message);
1025
1026    /**
1027     * @brief Gets the basic information of NotificationConversationalMessage object from specified js object
1028     *
1029     * @param env Indicates the environment that the API is invoked under
1030     * @param conversationalMessage Indicates a js object to be converted
1031     * @param message Indicates a NotificationConversationalMessage object from specified js object
1032     * @return Returns the null object if success, returns the null value otherwise
1033     */
1034    static napi_value GetConversationalMessageBasicInfo(
1035        const napi_env &env, const napi_value &conversationalMessage,
1036        std::shared_ptr<NotificationConversationalMessage> &message);
1037
1038    /**
1039     * @brief Gets the other information of NotificationConversationalMessage object from specified js object
1040     *
1041     * @param env Indicates the environment that the API is invoked under
1042     * @param conversationalMessage Indicates a js object to be converted
1043     * @param message Indicates a NotificationConversationalMessage object from specified js object
1044     * @return Returns the null object if success, returns the null value otherwise
1045     */
1046    static napi_value GetConversationalMessageOtherInfo(
1047        const napi_env &env, const napi_value &conversationalMessage,
1048        std::shared_ptr<NotificationConversationalMessage> &message);
1049
1050    /**
1051     * @brief Gets a MessageUser object from specified js object
1052     *
1053     * @param env Indicates the environment that the API is invoked under
1054     * @param result Indicates a js object to be converted
1055     * @param messageUser Indicates a MessageUser object from specified js object
1056     * @return Returns the null object if success, returns the null value otherwise
1057     */
1058    static napi_value GetMessageUser(const napi_env &env, const napi_value &result, MessageUser &messageUser);
1059
1060    /**
1061     * @brief Gets a MessageUser object from specified js object
1062     *
1063     * @param env Indicates the environment that the API is invoked under
1064     * @param result Indicates a js object to be converted
1065     * @param messageUser Indicates a MessageUser object from specified js object
1066     * @return Returns the null object if success, returns the null value otherwise
1067     */
1068    static napi_value GetMessageUserByString(const napi_env &env, const napi_value &result, MessageUser &messageUser);
1069
1070    /**
1071     * @brief Gets the bool objects of MessageUser object from specified js object
1072     *
1073     * @param env Indicates the environment that the API is invoked under
1074     * @param result Indicates a js object to be converted
1075     * @param messageUser Indicates a MessageUser object from specified js object
1076     * @return Returns the null object if success, returns the null value otherwise
1077     */
1078    static napi_value GetMessageUserByBool(const napi_env &env, const napi_value &result, MessageUser &messageUser);
1079
1080    /**
1081     * @brief Gets the custom objects of MessageUser object from specified js object
1082     *
1083     * @param env Indicates the environment that the API is invoked under
1084     * @param result Indicates a js object to be converted
1085     * @param messageUser Indicates a MessageUser object from specified js object
1086     * @return Returns the null object if success, returns the null value otherwise
1087     */
1088    static napi_value GetMessageUserByCustom(const napi_env &env, const napi_value &result, MessageUser &messageUser);
1089
1090    /**
1091     * @brief Gets the multi-line content of NotificationRequest object from specified js object
1092     *
1093     * @param env Indicates the environment that the API is invoked under
1094     * @param result Indicates a js object to be converted
1095     * @param request Indicates a NotificationRequest object from specified js object
1096     * @return Returns the null object if success, returns the null value otherwise
1097     */
1098    static napi_value GetNotificationMultiLineContent(
1099        const napi_env &env, const napi_value &result, NotificationRequest &request);
1100
1101    /**
1102     * @brief Gets the lines of NotificationMultiLineContent object from specified js object
1103     *
1104     * @param env Indicates the environment that the API is invoked under
1105     * @param result Indicates a js object to be converted
1106     * @param multiLineContent Indicates a NotificationMultiLineContent object from specified js object
1107     * @return Returns the null object if success, returns the null value otherwise
1108     */
1109    static napi_value GetNotificationMultiLineContentLines(const napi_env &env, const napi_value &result,
1110        std::shared_ptr<OHOS::Notification::NotificationMultiLineContent> &multiLineContent);
1111
1112    /**
1113     * @brief Gets the liveView content of NotificationRequest object from specified js object
1114     *
1115     * @param env Indicates the environment that the API is invoked under
1116     * @param result Indicates a js object to be converted
1117     * @param request Indicates a NotificationRequest object from specified js object
1118     * @return Returns the null object if success, returns the null value otherwise
1119     */
1120    static napi_value GetNotificationLiveViewContent(
1121        const napi_env &env, const napi_value &result, NotificationRequest &request);
1122
1123    /**
1124     * @brief Gets a NotificationLiveViewContent object from specified js object
1125     *
1126     * @param env Indicates the environment that the API is invoked under
1127     * @param contentResult Indicates a js object to be converted
1128     * @param liveViewContent Indicates a NotificationMultiLineContent object from specified js object
1129     * @return Returns the null object if success, returns the null value otherwise
1130     */
1131    static napi_value GetNotificationLiveViewContentDetailed(const napi_env &env, const napi_value &contentResult,
1132        std::shared_ptr<NotificationLiveViewContent> &liveViewContent);
1133
1134    /**
1135     * @brief Gets a GetLiveViewPictures from specified js object
1136     *
1137     * @param env Indicates the environment that the API is invoked under
1138     * @param picturesObj Indicates a js object to be converted
1139     * @param pictures Indicates pictures object from specified js object
1140     * @return Returns the null object if success, returns the null value otherwise
1141     */
1142    static napi_value GetLiveViewPictures(const napi_env &env, const napi_value &picturesObj,
1143        std::vector<std::shared_ptr<Media::PixelMap>> &pictures);
1144
1145    /**
1146     * @brief Gets a GetLiveViewPictures from specified js object
1147     *
1148     * @param env Indicates the environment that the API is invoked under
1149     * @param pictureMapObj Indicates a js object to be converted
1150     * @param pictureMap Indicates picturemap from specified js object
1151     * @return Returns the null object if success, returns the null value otherwise
1152     */
1153    static napi_value GetLiveViewPictureInfo(const napi_env &env, const napi_value &pictureMapObj,
1154        std::map<std::string, std::vector<std::shared_ptr<Media::PixelMap>>> &pictureMap);
1155
1156    /**
1157     * @brief Gets a NotificationBundleOption object from specified js object
1158     *
1159     * @param env Indicates the environment that the API is invoked under
1160     * @param value Indicates a js object to be converted
1161     * @param option Indicates a NotificationBundleOption object from specified js object
1162     * @return Returns the null object if success, returns the null value otherwise
1163     */
1164    static napi_value GetBundleOption(const napi_env &env, const napi_value &value, NotificationBundleOption &option);
1165
1166    /**
1167     * @brief Gets a NotificationButtonOption object from specified js object
1168     *
1169     * @param env Indicates the environment that the API is invoked under
1170     * @param value Indicates a js object to be converted
1171     * @param option Indicates a NotificationButtonOption object from specified js object
1172     * @return Returns the null object if success, returns the null value otherwise
1173     */
1174    static napi_value GetButtonOption(const napi_env &env, const napi_value &value, NotificationButtonOption &option);
1175
1176    static napi_value GetHashCodes(const napi_env &env, const napi_value &value, std::vector<std::string> &hashCodes);
1177
1178    /**
1179     * @brief Gets a NotificationKey object from specified js object
1180     *
1181     * @param env Indicates the environment that the API is invoked under
1182     * @param value Indicates a js object to be converted
1183     * @param key Indicates a NotificationKey object from specified js object
1184     * @return Returns the null object if success, returns the null value otherwise
1185     */
1186    static napi_value GetNotificationKey(const napi_env &env, const napi_value &value, NotificationKey &key);
1187
1188    /**
1189     * @brief Gets the template of NotificationRequest object from specified js object
1190     *
1191     * @param env Indicates the environment that the API is invoked under
1192     * @param value Indicates a js object to be converted
1193     * @param request Indicates a NotificationRequest object from specified js object
1194     * @return Returns the null object if success, returns the null value otherwise
1195     */
1196    static napi_value GetNotificationTemplate(
1197        const napi_env &env, const napi_value &value, NotificationRequest &request);
1198
1199    /**
1200     * @brief Gets a NotificationTemplate object from specified js object
1201     *
1202     * @param env Indicates the environment that the API is invoked under
1203     * @param value Indicates a js object to be converted
1204     * @param templ Indicates a NotificationTemplate object from specified js object
1205     * @return Returns the null object if success, returns the null value otherwise
1206     */
1207    static napi_value GetNotificationTemplateInfo(const napi_env &env, const napi_value &value,
1208        std::shared_ptr<NotificationTemplate> &templ);
1209
1210    /**
1211     * @brief Gets the number of badge of NotificationRequest object from specified js object
1212     *
1213     * @param env Indicates the environment that the API is invoked under
1214     * @param value Indicates a js object to be converted
1215     * @param request Indicates a NotificationRequest object from specified js object
1216     * @return Returns the null object if success, returns the null value otherwise
1217     */
1218    static napi_value GetNotificationBadgeNumber(
1219        const napi_env &env, const napi_value &value, NotificationRequest &request);
1220
1221    /**
1222     * @brief Gets a NotificationUnifiedGroupInfo object from specified js object
1223     *
1224     * @param env Indicates the environment that the API is invoked under
1225     * @param value Indicates a js object to be converted
1226     * @param templ Indicates a NotificationUnifiedGroupInfo object from specified js object
1227     * @return Returns the null object if success, returns the null value otherwise
1228     */
1229    static napi_value GetNotificationUnifiedGroupInfo(
1230        const napi_env &env, const napi_value &value, NotificationRequest &request);
1231
1232    /**
1233     * @brief Gets the notification control flags of NotificationRequest object from specified js object.
1234     *
1235     * @param env Indicates the environment that the API is invoked under
1236     * @param value Indicates a js object to be converted
1237     * @param request Indicates a NotificationRequest object from specified js object
1238     * @return Returns the null object if success, returns the null value otherwise
1239     */
1240    static napi_value GetNotificationControlFlags(
1241        const napi_env &env, const napi_value &value, NotificationRequest &request);
1242
1243    /**
1244     * @brief Create a napi value with specified error object for callback
1245     *
1246     * @param env Indicates the environment that the API is invoked under
1247     * @param errCode Indicates specified err code
1248     * @return Returns a napi value with specified error object for callback
1249     */
1250    static napi_value CreateErrorValue(napi_env env, int32_t errCode, bool newType);
1251
1252    /**
1253     * @brief Gets the notificationBundleOption of NotificationRequest object from specified js object
1254     *
1255     * @param env Indicates the environment that the API is invoked under
1256     * @param value Indicates a js object to be converted
1257     * @param request Indicates a NotificationRequest object from specified js object
1258     * @return Returns the null object if success, returns the null value otherwise
1259     */
1260    static napi_value GetNotificationBundleOption(
1261        const napi_env &env, const napi_value &value, NotificationRequest &request);
1262    static bool IsValidRemoveReason(int32_t reasonType);
1263    static void NapiThrow(napi_env env, int32_t errCode);
1264    static napi_value GetLockScreenPicture(
1265        const napi_env &env, const napi_value &contentResult, std::shared_ptr<NotificationBasicContent> basicContent);
1266
1267private:
1268    static const int32_t ARGS_ONE = 1;
1269    static const int32_t ARGS_TWO = 2;
1270    static const int32_t ONLY_CALLBACK_MAX_PARA = 1;
1271    static const int32_t ONLY_CALLBACK_MIN_PARA = 0;
1272    static std::set<std::shared_ptr<AbilityRuntime::WantAgent::WantAgent>> wantAgent_;
1273    static std::mutex mutex_;
1274    static const char *GetPropertyNameByContentType(ContentType type);
1275};
1276}  // namespace Location
1277}  // namespace OHOS
1278
1279#endif  // BASE_LOCATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_INCLUDE_COMMON_H
1280