1 /*
2  * Copyright (c) 2022 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_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_SLOT_H
16 #define BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_SLOT_H
17 
18 #include "common.h"
19 
20 namespace OHOS {
21 namespace NotificationNapi {
22 using namespace OHOS::Notification;
23 
24 struct ParametersInfoAddSlot {
25     NotificationSlot slot;
26     NotificationConstant::SlotType inType = NotificationConstant::SlotType::OTHER;
27     bool isAddSlotByType = false;
28     napi_ref callback = nullptr;
29 };
30 
31 struct AsyncCallbackInfoAddSlot {
32     napi_env env = nullptr;
33     napi_async_work asyncWork = nullptr;
34     NotificationSlot slot;
35     NotificationConstant::SlotType inType = NotificationConstant::SlotType::OTHER;
36     bool isAddSlotByType = false;
37     CallbackPromiseInfo info;
38 };
39 
40 struct ParametersInfoAddSlots {
41     std::vector<NotificationSlot> slots;
42     napi_ref callback = nullptr;
43 };
44 
45 struct AsyncCallbackInfoAddSlots {
46     napi_env env = nullptr;
47     napi_async_work asyncWork = nullptr;
48     std::vector<NotificationSlot> slots;
49     CallbackPromiseInfo info;
50 };
51 
52 struct ParametersInfoSetSlotByBundle {
53     NotificationBundleOption option;
54     std::vector<sptr<NotificationSlot>> slots;
55     napi_ref callback = nullptr;
56 };
57 
58 struct AsyncCallbackInfoSetSlotByBundle {
59     napi_env env = nullptr;
60     napi_async_work asyncWork = nullptr;
61     ParametersInfoSetSlotByBundle params;
62     CallbackPromiseInfo info;
63 };
64 
65 struct ParametersInfoGetSlot {
66     NotificationConstant::SlotType outType = NotificationConstant::SlotType::OTHER;
67     napi_ref callback = nullptr;
68 };
69 
70 struct AsyncCallbackInfoGetSlot {
71     napi_env env = nullptr;
72     napi_async_work asyncWork = nullptr;
73     NotificationConstant::SlotType outType = NotificationConstant::SlotType::OTHER;
74     CallbackPromiseInfo info;
75     sptr<NotificationSlot> slot = nullptr;
76 };
77 
78 struct ParametersInfoGetSlotNumByBundle {
79     NotificationBundleOption option;
80     napi_ref callback = nullptr;
81 };
82 
83 struct AsyncCallbackInfoGetSlotNumByBundle {
84     napi_env env = nullptr;
85     napi_async_work asyncWork = nullptr;
86     ParametersInfoGetSlotNumByBundle params;
87     CallbackPromiseInfo info;
88     uint64_t num = 0;
89 };
90 
91 struct AsyncCallbackInfoGetSlots {
92     napi_env env = nullptr;
93     napi_async_work asyncWork = nullptr;
94     CallbackPromiseInfo info;
95     std::vector<sptr<NotificationSlot>> slots;
96 };
97 
98 struct ParametersInfoGetSlotsByBundle {
99     NotificationBundleOption option;
100     napi_ref callback = nullptr;
101 };
102 
103 struct AsyncCallbackInfoGetSlotsByBundle {
104     napi_env env = nullptr;
105     napi_async_work asyncWork = nullptr;
106     ParametersInfoGetSlotsByBundle params;
107     CallbackPromiseInfo info;
108     std::vector<sptr<NotificationSlot>> slots;
109 };
110 
111 struct ParametersInfoGetSlotByBundle {
112     NotificationBundleOption option;
113     NotificationConstant::SlotType outType = NotificationConstant::SlotType::OTHER;
114     napi_ref callback = nullptr;
115 };
116 
117 struct AsyncCallbackInfoGetSlotByBundle {
118     napi_env env = nullptr;
119     napi_async_work asyncWork = nullptr;
120     ParametersInfoGetSlotByBundle params;
121     CallbackPromiseInfo info;
122     sptr<NotificationSlot> slot;
123 };
124 
125 struct ParametersInfoRemoveSlot {
126     NotificationConstant::SlotType outType = NotificationConstant::SlotType::OTHER;
127     napi_ref callback = nullptr;
128 };
129 
130 struct AsyncCallbackInfoRemoveSlot {
131     napi_env env = nullptr;
132     napi_async_work asyncWork = nullptr;
133     NotificationConstant::SlotType outType = NotificationConstant::SlotType::OTHER;
134     CallbackPromiseInfo info;
135 };
136 
137 struct AsyncCallbackInfoRemoveAllSlots {
138     napi_env env = nullptr;
139     napi_async_work asyncWork = nullptr;
140     CallbackPromiseInfo info;
141 };
142 
143 struct ParametersInfoEnableSlot {
144     NotificationBundleOption option;
145     NotificationConstant::SlotType outType = NotificationConstant::SlotType::OTHER;
146     bool enable = false;
147     bool isForceControl = false;
148     napi_ref callback = nullptr;
149 };
150 
151 struct AsyncCallbackInfoInfoEnableSlot {
152     napi_env env = nullptr;
153     napi_async_work asyncWork = nullptr;
154     ParametersInfoEnableSlot params;
155     CallbackPromiseInfo info;
156 };
157 
158 struct ParametersInfoIsEnableSlot {
159     NotificationBundleOption option;
160     NotificationConstant::SlotType outType = NotificationConstant::SlotType::OTHER;
161     napi_ref callback = nullptr;
162 };
163 
164 struct AsyncCallbackInfoInfoIsEnableSlot {
165     napi_env env = nullptr;
166     napi_async_work asyncWork = nullptr;
167     ParametersInfoIsEnableSlot params;
168     bool isEnable = false;
169     CallbackPromiseInfo info;
170 };
171 
172 struct ParametersInfoSetSlotFlagsByBundle {
173     NotificationBundleOption option;
174     uint32_t slotFlags;
175     napi_ref callback = nullptr;
176 };
177 
178 struct ParametersInfoGetSlotFlagsByBundle {
179     NotificationBundleOption option;
180     napi_ref callback = nullptr;
181 };
182 
183 struct AsyncCallbackInfoSetSlotFlagsByBundle {
184     napi_env env = nullptr;
185     napi_async_work asyncWork = nullptr;
186     ParametersInfoSetSlotFlagsByBundle params;
187     CallbackPromiseInfo info;
188 };
189 
190 struct AsyncCallbackInfoGetSlotFlagsByBundle {
191     napi_env env = nullptr;
192     napi_async_work asyncWork = nullptr;
193     ParametersInfoGetSlotFlagsByBundle params;
194     CallbackPromiseInfo info;
195     uint32_t slotFlags = 0;
196 };
197 
198 napi_value NapiAddSlot(napi_env env, napi_callback_info info);
199 napi_value NapiAddSlots(napi_env env, napi_callback_info info);
200 napi_value NapiSetSlotByBundle(napi_env env, napi_callback_info info);
201 napi_value NapiGetSlot(napi_env env, napi_callback_info info);
202 napi_value NapiGetSlotNumByBundle(napi_env env, napi_callback_info info);
203 napi_value NapiGetSlots(napi_env env, napi_callback_info info);
204 napi_value NapiGetSlotsByBundle(napi_env env, napi_callback_info info);
205 napi_value NapiGetSlotByBundle(napi_env env, napi_callback_info info);
206 napi_value NapiRemoveSlot(napi_env env, napi_callback_info info);
207 napi_value NapiRemoveAllSlots(napi_env env, napi_callback_info info);
208 napi_value NapiEnableNotificationSlot(napi_env env, napi_callback_info info);
209 napi_value NapiIsEnableNotificationSlot(napi_env env, napi_callback_info info);
210 napi_value NapiSetSlotFlagsByBundle(napi_env env, napi_callback_info info);
211 napi_value NapiGetSlotFlagsByBundle(napi_env env, napi_callback_info info);
212 
213 napi_value ParseParametersByAddSlot(const napi_env &env, const napi_callback_info &info, ParametersInfoAddSlot &paras);
214 napi_value ParseParametersByAddSlots(
215     const napi_env &env, const napi_callback_info &info, ParametersInfoAddSlots &paras);
216 napi_value ParseParametersSetSlotByBundle(
217     const napi_env &env, const napi_callback_info &info, ParametersInfoSetSlotByBundle &params);
218 napi_value ParseParametersByGetSlot(const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlot &paras);
219 napi_value ParseParametersGetSlotNumByBundle(
220     const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotNumByBundle &params);
221 napi_value ParseParametersGetSlotsByBundle(
222     const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotsByBundle &params);
223 napi_value ParseParametersGetSlotByBundle(
224     const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotByBundle &params);
225 napi_value ParseParametersByRemoveSlot(
226     const napi_env &env, const napi_callback_info &info, ParametersInfoRemoveSlot &paras);
227 napi_value ParseParametersEnableSlot(
228     const napi_env &env, const napi_callback_info &info, ParametersInfoEnableSlot &params);
229 napi_value ParseParametersIsEnableSlot(
230     const napi_env &env, const napi_callback_info &info, ParametersInfoIsEnableSlot &params);
231 napi_value ParseParametersSetSlotFlagsByBundle(
232     const napi_env &env, const napi_callback_info &info, ParametersInfoSetSlotFlagsByBundle &params);
233 napi_value ParseParametersGetSlotFlagsByBundle(
234     const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotFlagsByBundle &params);
235 }  // namespace NotificationNapi
236 }  // namespace OHOS
237 
238 #endif  // BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_SLOT_H