Scheduler fixes

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2020-06-24 11:31:32 +02:00
parent 22cb8538f4
commit 378a113002
No known key found for this signature in database
GPG Key ID: A061B9DDE0CA0773
2 changed files with 11 additions and 5 deletions

View File

@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Fixed
- Fixed notification scheduler (!486)[https://framagit.org/framasoft/mobilizon/-/merge_requests/486]
## [1.0.0-beta.3] - 2020-06-24 ## [1.0.0-beta.3] - 2020-06-24
### Special operations ### Special operations

View File

@ -41,7 +41,7 @@ defmodule Mobilizon.Service.Notifications.Scheduler do
send_date = send_date =
cond do cond do
begins_on < DateTime.utc_now() -> DateTime.compare(begins_on, DateTime.utc_now()) == :lt ->
nil nil
hour > 8 -> hour > 8 ->
@ -60,7 +60,7 @@ defmodule Mobilizon.Service.Notifications.Scheduler do
"Participation notification should be sent at #{inspect(send_date)} (user timezone)" "Participation notification should be sent at #{inspect(send_date)} (user timezone)"
) )
if DateTime.utc_now() > send_date do if is_nil(send_date) or DateTime.compare(DateTime.utc_now(), send_date) == :gt do
{:ok, "Too late to send same day notifications"} {:ok, "Too late to send same day notifications"}
else else
Notification.enqueue(:on_day_notification, %{user_id: user_id}, scheduled_at: send_date) Notification.enqueue(:on_day_notification, %{user_id: user_id}, scheduled_at: send_date)
@ -91,7 +91,7 @@ defmodule Mobilizon.Service.Notifications.Scheduler do
) )
notification_date = notification_date =
unless begins_on < DateTime.utc_now() do if Date.compare(begins_on, DateTime.utc_now()) == :gt do
notification_day = calculate_first_day_of_week(DateTime.to_date(begins_on), locale) notification_day = calculate_first_day_of_week(DateTime.to_date(begins_on), locale)
{:ok, %NaiveDateTime{} = notification_date} = {:ok, %NaiveDateTime{} = notification_date} =
@ -101,7 +101,7 @@ defmodule Mobilizon.Service.Notifications.Scheduler do
{:ok, %DateTime{} = notification_date} = {:ok, %DateTime{} = notification_date} =
DateTime.from_naive(notification_date, timezone) DateTime.from_naive(notification_date, timezone)
unless notification_date < DateTime.utc_now() do if Date.compare(notification_date, DateTime.utc_now()) == :gt do
notification_date notification_date
else else
nil nil
@ -204,7 +204,7 @@ defmodule Mobilizon.Service.Notifications.Scheduler do
{:ok, send_at} = NaiveDateTime.new(day, ~T[18:00:00]) {:ok, send_at} = NaiveDateTime.new(day, ~T[18:00:00])
{:ok, send_at} = DateTime.from_naive(send_at, timezone) {:ok, send_at} = DateTime.from_naive(send_at, timezone)
if send_at < DateTime.utc_now() do if DateTime.compare(send_at, DateTime.utc_now()) == :lt do
calculate_first_day_of_week(Date.add(day, 1), timezone) calculate_first_day_of_week(Date.add(day, 1), timezone)
else else
send_at send_at