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 ParametersInfoRemoveSlot { 112 NotificationConstant::SlotType outType = NotificationConstant::SlotType::OTHER; 113 napi_ref callback = nullptr; 114 }; 115 116 struct AsyncCallbackInfoRemoveSlot { 117 napi_env env = nullptr; 118 napi_async_work asyncWork = nullptr; 119 NotificationConstant::SlotType outType = NotificationConstant::SlotType::OTHER; 120 CallbackPromiseInfo info; 121 }; 122 123 struct AsyncCallbackInfoRemoveAllSlots { 124 napi_env env = nullptr; 125 napi_async_work asyncWork = nullptr; 126 CallbackPromiseInfo info; 127 }; 128 129 struct ParametersInfoEnableSlot { 130 NotificationBundleOption option; 131 NotificationConstant::SlotType outType = NotificationConstant::SlotType::OTHER; 132 bool enable = false; 133 bool isForceControl = false; 134 napi_ref callback = nullptr; 135 }; 136 137 struct AsyncCallbackInfoInfoEnableSlot { 138 napi_env env = nullptr; 139 napi_async_work asyncWork = nullptr; 140 ParametersInfoEnableSlot params; 141 CallbackPromiseInfo info; 142 }; 143 144 struct ParametersInfoIsEnableSlot { 145 NotificationBundleOption option; 146 NotificationConstant::SlotType outType = NotificationConstant::SlotType::OTHER; 147 napi_ref callback = nullptr; 148 }; 149 150 struct AsyncCallbackInfoInfoIsEnableSlot { 151 napi_env env = nullptr; 152 napi_async_work asyncWork = nullptr; 153 ParametersInfoIsEnableSlot params; 154 bool isEnable = false; 155 CallbackPromiseInfo info; 156 }; 157 158 struct ParametersInfoSetSlotFlagsByBundle { 159 NotificationBundleOption option; 160 uint32_t slotFlags; 161 napi_ref callback = nullptr; 162 }; 163 164 struct ParametersInfoGetSlotFlagsByBundle { 165 NotificationBundleOption option; 166 napi_ref callback = nullptr; 167 }; 168 169 struct AsyncCallbackInfoSetSlotFlagsByBundle { 170 napi_env env = nullptr; 171 napi_async_work asyncWork = nullptr; 172 ParametersInfoSetSlotFlagsByBundle params; 173 CallbackPromiseInfo info; 174 }; 175 176 struct AsyncCallbackInfoGetSlotFlagsByBundle { 177 napi_env env = nullptr; 178 napi_async_work asyncWork = nullptr; 179 ParametersInfoGetSlotFlagsByBundle params; 180 CallbackPromiseInfo info; 181 uint32_t slotFlags = 0; 182 }; 183 184 napi_value NapiAddSlot(napi_env env, napi_callback_info info); 185 napi_value NapiAddSlots(napi_env env, napi_callback_info info); 186 napi_value NapiSetSlotByBundle(napi_env env, napi_callback_info info); 187 napi_value NapiGetSlot(napi_env env, napi_callback_info info); 188 napi_value NapiGetSlotNumByBundle(napi_env env, napi_callback_info info); 189 napi_value NapiGetSlots(napi_env env, napi_callback_info info); 190 napi_value NapiGetSlotsByBundle(napi_env env, napi_callback_info info); 191 napi_value NapiRemoveSlot(napi_env env, napi_callback_info info); 192 napi_value NapiRemoveAllSlots(napi_env env, napi_callback_info info); 193 napi_value NapiEnableNotificationSlot(napi_env env, napi_callback_info info); 194 napi_value NapiIsEnableNotificationSlot(napi_env env, napi_callback_info info); 195 napi_value NapiSetSlotFlagsByBundle(napi_env env, napi_callback_info info); 196 napi_value NapiGetSlotFlagsByBundle(napi_env env, napi_callback_info info); 197 198 napi_value ParseParametersByAddSlot(const napi_env &env, const napi_callback_info &info, ParametersInfoAddSlot ¶s); 199 napi_value ParseParametersByAddSlots( 200 const napi_env &env, const napi_callback_info &info, ParametersInfoAddSlots ¶s); 201 napi_value ParseParametersSetSlotByBundle( 202 const napi_env &env, const napi_callback_info &info, ParametersInfoSetSlotByBundle ¶ms); 203 napi_value ParseParametersByGetSlot(const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlot ¶s); 204 napi_value ParseParametersGetSlotNumByBundle( 205 const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotNumByBundle ¶ms); 206 napi_value ParseParametersGetSlotsByBundle( 207 const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotsByBundle ¶ms); 208 napi_value ParseParametersByRemoveSlot( 209 const napi_env &env, const napi_callback_info &info, ParametersInfoRemoveSlot ¶s); 210 napi_value ParseParametersEnableSlot( 211 const napi_env &env, const napi_callback_info &info, ParametersInfoEnableSlot ¶ms); 212 napi_value ParseParametersIsEnableSlot( 213 const napi_env &env, const napi_callback_info &info, ParametersInfoIsEnableSlot ¶ms); 214 napi_value ParseParametersSetSlotFlagsByBundle( 215 const napi_env &env, const napi_callback_info &info, ParametersInfoSetSlotFlagsByBundle ¶ms); 216 napi_value ParseParametersGetSlotFlagsByBundle( 217 const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotFlagsByBundle ¶ms); 218 } // namespace NotificationNapi 219 } // namespace OHOS 220 221 #endif // BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_SLOT_H