From 8675587ef56d58f5bede46bccbea8925a6d277a1 Mon Sep 17 00:00:00 2001 From: ImBenji <53883070+YesItsBenji@users.noreply.github.com> Date: Wed, 28 Feb 2024 05:23:47 +0000 Subject: [PATCH] Update live_information.dart --- lib/singletons/live_information.dart | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/singletons/live_information.dart b/lib/singletons/live_information.dart index 02cef0a..5c0c0db 100644 --- a/lib/singletons/live_information.dart +++ b/lib/singletons/live_information.dart @@ -81,6 +81,11 @@ class LiveInformation { print("Handling announcement queue"); if (audioPlayer.state != AudioWrapper_State.Playing) { if (announcementQueue.isNotEmpty) { + + if (announcementQueue.first.scheduledTime != null && announcementQueue.first.scheduledTime!.isAfter(DateTime.now())) { + return; + } + AnnouncementQueueEntry announcement = announcementQueue.first; announcementDelegate.trigger(announcement); _currentAnnouncement = announcement.displayText; @@ -137,16 +142,20 @@ class LiveInformation { } void queueAnnouncement(AnnouncementQueueEntry announcement) { - announcementQueue.add(announcement); + // Make sure the timestamp of the announcement is after the last announcement // If so, dont queue it // If timestamp is null, then skip this check if (announcement.timestamp != null && announcement.timestamp!.isBefore(lastAnnouncement)) { + print("Announcement is too old"); return; + } else if (announcement.timestamp == null) { + print("Announcement `${announcement.displayText}` does not have timestamp"); } if (!announcement.sendToServer) { + announcementQueue.add(announcement); return; } @@ -154,12 +163,16 @@ class LiveInformation { if (announcement is ManualAnnouncementEntry) { + // 5 sedonds in the future + DateTime scheduledTime = DateTime.now().add(Duration(seconds: 5)); + final document = databases.createDocument( documentId: appwrite.ID.unique(), databaseId: ApiConstants.INFO_Q_DATABASE_ID, collectionId: ApiConstants.MANUAL_Q_COLLECTION_ID, data: { "ManualAnnouncementIndex": manualAnnouncements.indexOf(announcement), + "ScheduledTime": scheduledTime.toIso8601String(), "SessionID": sessionID, } ); @@ -374,6 +387,7 @@ class LiveInformation { shortName: manualAnnouncements[index].shortName, informationText: manualAnnouncements[index].displayText, audioSources: manualAnnouncements[index].audioSources, + scheduledTime: doc.data["ScedhuledTime"] != null ? DateTime.parse(doc.data["ScheduledTime"]) : null, timestamp: DateTime.parse(doc.$createdAt), sendToServer: false, ); @@ -437,9 +451,10 @@ class AnnouncementQueueEntry { final String displayText; final List audioSources; bool sendToServer = true; + DateTime? scheduledTime; DateTime? timestamp; - AnnouncementQueueEntry({required this.displayText, required this.audioSources, this.sendToServer = true, this.timestamp}); + AnnouncementQueueEntry({required this.displayText, required this.audioSources, this.sendToServer = true, this.scheduledTime, this.timestamp}); } class ManualAnnouncementEntry extends AnnouncementQueueEntry { @@ -449,12 +464,14 @@ class ManualAnnouncementEntry extends AnnouncementQueueEntry { required this.shortName, required String informationText, required List audioSources, + DateTime? scheduledTime, DateTime? timestamp, bool sendToServer = true, }) : super( displayText: informationText, audioSources: audioSources, sendToServer: sendToServer, + scheduledTime: scheduledTime, timestamp: timestamp, ); } \ No newline at end of file