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 ¶s); 214 napi_value ParseParametersByAddSlots( 215 const napi_env &env, const napi_callback_info &info, ParametersInfoAddSlots ¶s); 216 napi_value ParseParametersSetSlotByBundle( 217 const napi_env &env, const napi_callback_info &info, ParametersInfoSetSlotByBundle ¶ms); 218 napi_value ParseParametersByGetSlot(const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlot ¶s); 219 napi_value ParseParametersGetSlotNumByBundle( 220 const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotNumByBundle ¶ms); 221 napi_value ParseParametersGetSlotsByBundle( 222 const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotsByBundle ¶ms); 223 napi_value ParseParametersGetSlotByBundle( 224 const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotByBundle ¶ms); 225 napi_value ParseParametersByRemoveSlot( 226 const napi_env &env, const napi_callback_info &info, ParametersInfoRemoveSlot ¶s); 227 napi_value ParseParametersEnableSlot( 228 const napi_env &env, const napi_callback_info &info, ParametersInfoEnableSlot ¶ms); 229 napi_value ParseParametersIsEnableSlot( 230 const napi_env &env, const napi_callback_info &info, ParametersInfoIsEnableSlot ¶ms); 231 napi_value ParseParametersSetSlotFlagsByBundle( 232 const napi_env &env, const napi_callback_info &info, ParametersInfoSetSlotFlagsByBundle ¶ms); 233 napi_value ParseParametersGetSlotFlagsByBundle( 234 const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotFlagsByBundle ¶ms); 235 } // namespace NotificationNapi 236 } // namespace OHOS 237 238 #endif // BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_SLOT_H