Update live_information.dart

This commit is contained in:
ImBenji
2024-02-28 05:23:47 +00:00
parent 675c42d2da
commit 8675587ef5

View File

@@ -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<AudioWrapperSource> 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<AudioWrapperSource> audioSources,
DateTime? scheduledTime,
DateTime? timestamp,
bool sendToServer = true,
}) : super(
displayText: informationText,
audioSources: audioSources,
sendToServer: sendToServer,
scheduledTime: scheduledTime,
timestamp: timestamp,
);
}