diff --git a/src/Data/ScheduledEventData.cs b/src/Data/ScheduledEventData.cs index 29075f5..7cd0578 100644 --- a/src/Data/ScheduledEventData.cs +++ b/src/Data/ScheduledEventData.cs @@ -8,12 +8,12 @@ namespace Boyfriend.Data; /// This information is stored on disk as a JSON file. public sealed class ScheduledEventData { - public ScheduledEventData(GuildScheduledEventStatus status) + public ScheduledEventData(GuildScheduledEventStatus? status) { Status = status; } public bool EarlyNotificationSent { get; set; } public DateTimeOffset? ActualStartTime { get; set; } - public GuildScheduledEventStatus Status { get; set; } + public GuildScheduledEventStatus? Status { get; set; } } diff --git a/src/Services/Update/ScheduledEventUpdateService.cs b/src/Services/Update/ScheduledEventUpdateService.cs index 83094e9..3d57f09 100644 --- a/src/Services/Update/ScheduledEventUpdateService.cs +++ b/src/Services/Update/ScheduledEventUpdateService.cs @@ -68,7 +68,7 @@ public sealed class ScheduledEventUpdateService : BackgroundService { if (!data.ScheduledEvents.ContainsKey(scheduledEvent.ID.Value)) { - data.ScheduledEvents.Add(scheduledEvent.ID.Value, new ScheduledEventData(scheduledEvent.Status)); + data.ScheduledEvents.Add(scheduledEvent.ID.Value, new ScheduledEventData(null)); } var storedEvent = data.ScheduledEvents[scheduledEvent.ID.Value]; @@ -79,9 +79,7 @@ public sealed class ScheduledEventUpdateService : BackgroundService continue; } - storedEvent.Status = scheduledEvent.Status; - - var statusChangedResponseResult = storedEvent.Status switch + var statusChangedResponseResult = scheduledEvent.Status switch { GuildScheduledEventStatus.Scheduled => await SendScheduledEventCreatedMessage(scheduledEvent, data.Settings, ct), @@ -89,6 +87,11 @@ public sealed class ScheduledEventUpdateService : BackgroundService await SendScheduledEventUpdatedMessage(scheduledEvent, data, ct), _ => new ArgumentOutOfRangeError(nameof(scheduledEvent.Status)) }; + if (statusChangedResponseResult.IsSuccess) + { + storedEvent.Status = scheduledEvent.Status; + } + failedResults.AddIfFailed(statusChangedResponseResult); }