From 851efd3e65f2ebcf15599aff1a1874d010e0b2a8 Mon Sep 17 00:00:00 2001 From: xdongs Date: Wed, 18 Jun 2025 15:57:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=B8=9A=E5=8A=A1=E6=96=B9?= =?UTF-8?q?=E4=BC=A0=E9=80=92extendInfo=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xdongs --- .../ans/src/notification_subscriber.cpp | 19 ----------- .../src/listener/ans_subscriber_listener.cpp | 1 - frameworks/js/napi/include/common.h | 11 ++++++ .../js/napi/src/common_convert_request.cpp | 34 +++++++++++++++++++ .../inner_api/notification_subscriber.h | 2 -- 5 files changed, 45 insertions(+), 22 deletions(-) diff --git a/frameworks/ans/src/notification_subscriber.cpp b/frameworks/ans/src/notification_subscriber.cpp index 911249298..13b7f2527 100644 --- a/frameworks/ans/src/notification_subscriber.cpp +++ b/frameworks/ans/src/notification_subscriber.cpp @@ -97,24 +97,6 @@ NotificationConstant::FlagStatus NotificationSubscriber::DowngradeReminder( } #endif -void NotificationSubscriber::ProcessRemoveExtendInfo(const std::string &deviceType, - std::shared_ptr ¬ification) const -{ - if (deviceType == NotificationConstant::PC_DEVICE_TYPE || - deviceType == NotificationConstant::PAD_DEVICE_TYPE) { - return; - } - sptr request = notification->GetNotificationRequestPoint(); - std::shared_ptr extendInfo = request->GetExtendInfo(); - if (extendInfo != nullptr) { - std::set keySet = extendInfo->KeySet(); - for (std::string key : keySet) { - extendInfo->Remove(key); - } - } - return; -} - const sptr NotificationSubscriber::GetImpl() const { return impl_; @@ -159,7 +141,6 @@ ErrCode NotificationSubscriber::SubscriberImpl::OnConsumed( return ERR_OK; } #endif - subscriber_.ProcessRemoveExtendInfo(subscriber_.GetDeviceType(), sharedNotification); subscriber_.OnConsumed( sharedNotification, std::make_shared(*notificationMap)); return ERR_OK; diff --git a/frameworks/core/src/listener/ans_subscriber_listener.cpp b/frameworks/core/src/listener/ans_subscriber_listener.cpp index 846b76f85..c3f08221b 100644 --- a/frameworks/core/src/listener/ans_subscriber_listener.cpp +++ b/frameworks/core/src/listener/ans_subscriber_listener.cpp @@ -74,7 +74,6 @@ ErrCode SubscriberListener::OnConsumed( } #endif - subscriber->ProcessRemoveExtendInfo(subscriber->GetDeviceType(), sharedNotification); subscriber->OnConsumed( sharedNotification, std::make_shared(*notificationMap)); return ERR_OK; diff --git a/frameworks/js/napi/include/common.h b/frameworks/js/napi/include/common.h index 528ef6188..d383bd527 100644 --- a/frameworks/js/napi/include/common.h +++ b/frameworks/js/napi/include/common.h @@ -743,6 +743,17 @@ public: */ static napi_value GetNotificationExtraInfo( const napi_env &env, const napi_value &value, NotificationRequest &request); + + /** + * @brief Gets the extendInfo of NotificationRequest object from specified js object + * + * @param env Indicates the environment that the API is invoked under + * @param value Indicates a js object to be converted + * @param request Indicates a NotificationRequest object from specified js object + * @return Returns the null object if success, returns the null value otherwise + */ + static napi_value GetNotificationExtendInfo( + const napi_env &env, const napi_value &value, NotificationRequest &request); /** * @brief Gets the group name of NotificationRequest object from specified js object diff --git a/frameworks/js/napi/src/common_convert_request.cpp b/frameworks/js/napi/src/common_convert_request.cpp index 26a06dba4..edd51e499 100644 --- a/frameworks/js/napi/src/common_convert_request.cpp +++ b/frameworks/js/napi/src/common_convert_request.cpp @@ -711,6 +711,10 @@ napi_value Common::GetNotificationRequestByCustom( if (GetNotificationExtraInfo(env, value, request) == nullptr) { return nullptr; } + // extendInfo?: {[key: string]: any} + if (GetNotificationExtendInfo(env, value, request) == nullptr) { + return nullptr; + } // removalWantAgent?: WantAgent if (GetNotificationRemovalWantAgent(env, value, request) == nullptr) { return nullptr; @@ -1212,6 +1216,36 @@ napi_value Common::GetNotificationExtraInfo(const napi_env &env, const napi_valu return NapiGetNull(env); } +napi_value Common::GetNotificationExtendInfo(const napi_env &env, const napi_value &value, NotificationRequest &request) +{ + ANS_LOGD("enter"); + + napi_valuetype valuetype = napi_undefined; + napi_value result = nullptr; + bool hasProperty = false; + + NAPI_CALL(env, napi_has_named_property(env, value, "extendInfo", &hasProperty)); + if (hasProperty) { + napi_get_named_property(env, value, "extendInfo", &result); + NAPI_CALL(env, napi_typeof(env, result, &valuetype)); + if (valuetype != napi_object) { + ANS_LOGE("Wrong argument type. Object expected."); + std::string msg = "Incorrect parameter types. The type of extendInfo must be object."; + Common::NapiThrow(env, ERROR_PARAM_INVALID, msg); + return nullptr; + } + AAFwk::WantParams wantParams; + if (!OHOS::AppExecFwk::UnwrapWantParams(env, result, wantParams)) { + return nullptr; + } + + std::shared_ptr extendInfo = std::make_shared(wantParams); + request.SetExtendInfo(extendInfo); + } + + return NapiGetNull(env); +} + napi_value Common::GetNotificationGroupName(const napi_env &env, const napi_value &value, NotificationRequest &request) { ANS_LOGD("enter"); diff --git a/interfaces/inner_api/notification_subscriber.h b/interfaces/inner_api/notification_subscriber.h index c4fac028c..d5b63b61c 100644 --- a/interfaces/inner_api/notification_subscriber.h +++ b/interfaces/inner_api/notification_subscriber.h @@ -137,8 +137,6 @@ public: bool ProcessSyncDecision(const std::string &deviceType, std::shared_ptr ¬ification) const; #endif -void ProcessRemoveExtendInfo(const std::string &deviceType, std::shared_ptr ¬ification) const; - private: class SubscriberImpl final : public AnsSubscriberStub { public: -- Gitee