From 3448660a10d3159eead359c7459f6b981210e072 Mon Sep 17 00:00:00 2001 From: rcy-hw Date: Wed, 9 Mar 2022 15:57:48 +0800 Subject: [PATCH 1/2] fix: target show reminder may not be the active reminder when change time by user Signed-off-by: rcy-hw Change-Id: Iffc886ed334ab64cf871471b1c8dad505e3b6b9f --- services/ans/include/reminder_data_manager.h | 3 +- services/ans/src/reminder_data_manager.cpp | 30 +++++++++++--------- services/ans/src/reminder_event_manager.cpp | 2 +- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/services/ans/include/reminder_data_manager.h b/services/ans/include/reminder_data_manager.h index 723dba78a..fe8b52423 100644 --- a/services/ans/include/reminder_data_manager.h +++ b/services/ans/include/reminder_data_manager.h @@ -130,8 +130,9 @@ public: * @brief Show the reminder. * * @param isSysTimeChanged Indicates it is triggered as dateTime changed by user or not. + * @param want Which contains the given reminder. */ - void ShowActiveReminder(); + void ShowActiveReminder(const OHOS::EventFwk::Want &want); /** * @brief Snooze the reminder by manual. diff --git a/services/ans/src/reminder_data_manager.cpp b/services/ans/src/reminder_data_manager.cpp index 538c554a5..0e1cc9f7f 100644 --- a/services/ans/src/reminder_data_manager.cpp +++ b/services/ans/src/reminder_data_manager.cpp @@ -256,6 +256,7 @@ std::shared_ptr ReminderDataManager::CreateTimerInfo(TimerTyp switch (type) { case (TimerType::TRIGGER_TIMER): { want->SetAction(ReminderRequest::REMINDER_EVENT_ALARM_ALERT); + want->SetParam(ReminderRequest::PARAM_REMINDER_ID, activeReminderId_); break; } case (TimerType::ALERTING_TIMER): { @@ -342,7 +343,7 @@ void ReminderDataManager::CloseReminder(const OHOS::EventFwk::Want &want, bool c int32_t reminderId = static_cast(want.GetIntParam(ReminderRequest::PARAM_REMINDER_ID, -1)); sptr reminder = FindReminderRequestLocked(reminderId); if (reminder == nullptr) { - ANSR_LOGW("Invilate reminder id: %{public}d", reminderId); + ANSR_LOGW("Invalid reminder id: %{public}d", reminderId); return; } CloseReminder(reminder, cancelNotification); @@ -407,7 +408,7 @@ void ReminderDataManager::TerminateAlerting(const OHOS::EventFwk::Want &want) int32_t reminderId = static_cast(want.GetIntParam(ReminderRequest::PARAM_REMINDER_ID, -1)); sptr reminder = FindReminderRequestLocked(reminderId); if (reminder == nullptr) { - ANSR_LOGE("Invilate reminder id: %{public}d", reminderId); + ANSR_LOGE("Invalid reminder id: %{public}d", reminderId); return; } TerminateAlerting(reminder, "timeOut"); @@ -471,19 +472,22 @@ void ReminderDataManager::SetService(AdvancedNotificationService *advancedNotifi advancedNotificationService_ = advancedNotificationService; } -void ReminderDataManager::ShowActiveReminder() +void ReminderDataManager::ShowActiveReminder(const OHOS::EventFwk::Want &want) { - ANSR_LOGI("Begin to show reminder."); - if (activeReminderId_ == -1) { - ANSR_LOGE("Active reminder not exist"); + int32_t reminderId = static_cast(want.GetIntParam(ReminderRequest::PARAM_REMINDER_ID, -1)); + ANSR_LOGI("Begin to show reminder(reminderId=%{public}d)", reminderId); + if (reminderId == activeReminderId_) { + ResetStates(TimerType::TRIGGER_TIMER); + } + sptr reminder = FindReminderRequestLocked(reminderId); + if (reminder == nullptr) { + ANSR_LOGW("Invalid reminder id: %{public}d", reminderId); return; } - if (HandleSysTimeChange(activeReminder_)) { - ResetStates(TimerType::TRIGGER_TIMER); + if (HandleSysTimeChange(reminder)) { return; } - ShowActiveReminderExtendLocked(activeReminder_); - ResetStates(TimerType::TRIGGER_TIMER); + ShowActiveReminderExtendLocked(reminder); StartRecentReminder(); } @@ -605,7 +609,7 @@ void ReminderDataManager::SnoozeReminder(const OHOS::EventFwk::Want &want) int32_t reminderId = static_cast(want.GetIntParam(ReminderRequest::PARAM_REMINDER_ID, -1)); sptr reminder = FindReminderRequestLocked(reminderId); if (reminder == nullptr) { - ANSR_LOGW("Invilate reminder id: %{public}d", reminderId); + ANSR_LOGW("Invalid reminder id: %{public}d", reminderId); return; } SnoozeReminderImpl(reminder); @@ -1074,10 +1078,10 @@ void ReminderDataManager::StartTimer(const sptr &reminderReques ANSR_LOGE("Trigger timer has already started."); break; } - triggerTime = reminderRequest->GetTriggerTimeInMilli(); + SetActiveReminder(reminderRequest); timerId_ = timer->CreateTimer(REMINDER_DATA_MANAGER->CreateTimerInfo(type)); + triggerTime = reminderRequest->GetTriggerTimeInMilli(); timer->StartTimer(timerId_, triggerTime); - SetActiveReminder(reminderRequest); ANSR_LOGD("Start timing (next triggerTime), timerId=%{public}llu", (unsigned long long)timerId_); break; } diff --git a/services/ans/src/reminder_event_manager.cpp b/services/ans/src/reminder_event_manager.cpp index 36215051b..759099394 100644 --- a/services/ans/src/reminder_event_manager.cpp +++ b/services/ans/src/reminder_event_manager.cpp @@ -84,7 +84,7 @@ void ReminderEventManager::ReminderEventSubscriber::OnReceiveEvent(const EventFw std::string action = want.GetAction(); ANSR_LOGI("Recieved common event:%{public}s", action.c_str()); if (action == ReminderRequest::REMINDER_EVENT_ALARM_ALERT) { - reminderDataManager_->ShowActiveReminder(); + reminderDataManager_->ShowActiveReminder(want); return; } if (action == ReminderRequest::REMINDER_EVENT_ALERT_TIMEOUT) { -- Gitee From f23abeae57f8844132dfd8f21781d0e961915325 Mon Sep 17 00:00:00 2001 From: rcy-hw Date: Wed, 9 Mar 2022 17:01:41 +0800 Subject: [PATCH 2/2] fix codeCheck Signed-off-by: rcy-hw Change-Id: I03c8e1f07b16ba30ee7c5cf1532f3d9b7c8f2fbf --- services/ans/include/reminder_data_manager.h | 2 +- services/ans/src/reminder_data_manager.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/services/ans/include/reminder_data_manager.h b/services/ans/include/reminder_data_manager.h index fe8b52423..168891ff2 100644 --- a/services/ans/include/reminder_data_manager.h +++ b/services/ans/include/reminder_data_manager.h @@ -132,7 +132,7 @@ public: * @param isSysTimeChanged Indicates it is triggered as dateTime changed by user or not. * @param want Which contains the given reminder. */ - void ShowActiveReminder(const OHOS::EventFwk::Want &want); + void ShowActiveReminder(const EventFwk::Want &want); /** * @brief Snooze the reminder by manual. diff --git a/services/ans/src/reminder_data_manager.cpp b/services/ans/src/reminder_data_manager.cpp index 0e1cc9f7f..0b3f2ee69 100644 --- a/services/ans/src/reminder_data_manager.cpp +++ b/services/ans/src/reminder_data_manager.cpp @@ -472,7 +472,7 @@ void ReminderDataManager::SetService(AdvancedNotificationService *advancedNotifi advancedNotificationService_ = advancedNotificationService; } -void ReminderDataManager::ShowActiveReminder(const OHOS::EventFwk::Want &want) +void ReminderDataManager::ShowActiveReminder(const EventFwk::Want &want) { int32_t reminderId = static_cast(want.GetIntParam(ReminderRequest::PARAM_REMINDER_ID, -1)); ANSR_LOGI("Begin to show reminder(reminderId=%{public}d)", reminderId); -- Gitee