#include "common/converter.h"
#include "common/logger.h"
+#include "common/scope_exit.h"
#include "notification/status_notification.h"
}
PlatformResult NotificationManager::GetAll(picojson::array& out) {
+ notification_h noti = nullptr;
+ notification_list_h noti_list = nullptr;
+ notification_list_h noti_list_iter = nullptr;
+
+ int ret =
+ notification_get_grouping_list(NOTIFICATION_TYPE_NONE, -1, ¬i_list);
+ if (ret != NOTIFICATION_ERROR_NONE) {
+ LoggerD("Get notification list error: %d", ret);
+ return PlatformResult(ErrorCode::UNKNOWN_ERR,
+ "Get notification list error");
+ }
+
+ SCOPE_EXIT {
+ notification_free_list(noti_list);
+ };
+
+ noti_list_iter = notification_list_get_head(noti_list);
+
+ while (noti_list_iter != nullptr) {
+ noti = notification_list_get_data(noti_list_iter);
+ if (noti != nullptr) {
+ int noti_priv = -1;
+ ret = notification_get_id(noti, NULL, ¬i_priv);
+ if (ret != NOTIFICATION_ERROR_NONE) {
+ LoggerE("Cannot get notification id, error: %d", ret);
+ return PlatformResult(ErrorCode::UNKNOWN_ERR,
+ "Cannot get notification id error");
+ }
+
+ app_control_h app_control;
+ PlatformResult status =
+ StatusNotification::GetAppControl(noti, &app_control);
+ if (status.IsError()) return status;
+
+ picojson::object noti_item = picojson::object();
+
+ status =
+ StatusNotification::ToJson(noti_priv, noti, app_control, ¬i_item);
+ if (status.IsError()) return status;
+
+ out.push_back(picojson::value(noti_item));
+ }
+
+ noti_list_iter = notification_list_get_next(noti_list_iter);
+ }
+
return PlatformResult(ErrorCode::NO_ERROR);
}