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 napi_ref callback = nullptr; 134 }; 135 136 struct AsyncCallbackInfoInfoEnableSlot { 137 napi_env env = nullptr; 138 napi_async_work asyncWork = nullptr; 139 ParametersInfoEnableSlot params; 140 CallbackPromiseInfo info; 141 }; 142 143 struct ParametersInfoIsEnableSlot { 144 NotificationBundleOption option; 145 NotificationConstant::SlotType outType = NotificationConstant::SlotType::OTHER; 146 napi_ref callback = nullptr; 147 }; 148 149 struct AsyncCallbackInfoInfoIsEnableSlot { 150 napi_env env = nullptr; 151 napi_async_work asyncWork = nullptr; 152 ParametersInfoIsEnableSlot params; 153 bool isEnable = false; 154 CallbackPromiseInfo info; 155 }; 156 157 napi_value NapiAddSlot(napi_env env, napi_callback_info info); 158 napi_value NapiAddSlots(napi_env env, napi_callback_info info); 159 napi_value NapiSetSlotByBundle(napi_env env, napi_callback_info info); 160 napi_value NapiGetSlot(napi_env env, napi_callback_info info); 161 napi_value NapiGetSlotNumByBundle(napi_env env, napi_callback_info info); 162 napi_value NapiGetSlots(napi_env env, napi_callback_info info); 163 napi_value NapiGetSlotsByBundle(napi_env env, napi_callback_info info); 164 napi_value NapiRemoveSlot(napi_env env, napi_callback_info info); 165 napi_value NapiRemoveAllSlots(napi_env env, napi_callback_info info); 166 napi_value NapiEnableNotificationSlot(napi_env env, napi_callback_info info); 167 napi_value NapiIsEnableNotificationSlot(napi_env env, napi_callback_info info); 168 169 napi_value ParseParametersByAddSlot(const napi_env &env, const napi_callback_info &info, ParametersInfoAddSlot ¶s); 170 napi_value ParseParametersByAddSlots( 171 const napi_env &env, const napi_callback_info &info, ParametersInfoAddSlots ¶s); 172 napi_value ParseParametersSetSlotByBundle( 173 const napi_env &env, const napi_callback_info &info, ParametersInfoSetSlotByBundle ¶ms); 174 napi_value ParseParametersByGetSlot(const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlot ¶s); 175 napi_value ParseParametersGetSlotNumByBundle( 176 const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotNumByBundle ¶ms); 177 napi_value ParseParametersGetSlotsByBundle( 178 const napi_env &env, const napi_callback_info &info, ParametersInfoGetSlotsByBundle ¶ms); 179 napi_value ParseParametersByRemoveSlot( 180 const napi_env &env, const napi_callback_info &info, ParametersInfoRemoveSlot ¶s); 181 napi_value ParseParametersEnableSlot( 182 const napi_env &env, const napi_callback_info &info, ParametersInfoEnableSlot ¶ms); 183 napi_value ParseParametersIsEnableSlot( 184 const napi_env &env, const napi_callback_info &info, ParametersInfoIsEnableSlot ¶ms); 185 } // namespace NotificationNapi 186 } // namespace OHOS 187 188 #endif // BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_FRAMEWORKS_JS_NAPI_SLOT_H