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"); print("Handling announcement queue");
if (audioPlayer.state != AudioWrapper_State.Playing) { if (audioPlayer.state != AudioWrapper_State.Playing) {
if (announcementQueue.isNotEmpty) { if (announcementQueue.isNotEmpty) {
if (announcementQueue.first.scheduledTime != null && announcementQueue.first.scheduledTime!.isAfter(DateTime.now())) {
return;
}
AnnouncementQueueEntry announcement = announcementQueue.first; AnnouncementQueueEntry announcement = announcementQueue.first;
announcementDelegate.trigger(announcement); announcementDelegate.trigger(announcement);
_currentAnnouncement = announcement.displayText; _currentAnnouncement = announcement.displayText;
@@ -137,16 +142,20 @@ class LiveInformation {
} }
void queueAnnouncement(AnnouncementQueueEntry announcement) { void queueAnnouncement(AnnouncementQueueEntry announcement) {
announcementQueue.add(announcement);
// Make sure the timestamp of the announcement is after the last announcement // Make sure the timestamp of the announcement is after the last announcement
// If so, dont queue it // If so, dont queue it
// If timestamp is null, then skip this check // If timestamp is null, then skip this check
if (announcement.timestamp != null && announcement.timestamp!.isBefore(lastAnnouncement)) { if (announcement.timestamp != null && announcement.timestamp!.isBefore(lastAnnouncement)) {
print("Announcement is too old");
return; return;
} else if (announcement.timestamp == null) {
print("Announcement `${announcement.displayText}` does not have timestamp");
} }
if (!announcement.sendToServer) { if (!announcement.sendToServer) {
announcementQueue.add(announcement);
return; return;
} }
@@ -154,12 +163,16 @@ class LiveInformation {
if (announcement is ManualAnnouncementEntry) { if (announcement is ManualAnnouncementEntry) {
// 5 sedonds in the future
DateTime scheduledTime = DateTime.now().add(Duration(seconds: 5));
final document = databases.createDocument( final document = databases.createDocument(
documentId: appwrite.ID.unique(), documentId: appwrite.ID.unique(),
databaseId: ApiConstants.INFO_Q_DATABASE_ID, databaseId: ApiConstants.INFO_Q_DATABASE_ID,
collectionId: ApiConstants.MANUAL_Q_COLLECTION_ID, collectionId: ApiConstants.MANUAL_Q_COLLECTION_ID,
data: { data: {
"ManualAnnouncementIndex": manualAnnouncements.indexOf(announcement), "ManualAnnouncementIndex": manualAnnouncements.indexOf(announcement),
"ScheduledTime": scheduledTime.toIso8601String(),
"SessionID": sessionID, "SessionID": sessionID,
} }
); );
@@ -374,6 +387,7 @@ class LiveInformation {
shortName: manualAnnouncements[index].shortName, shortName: manualAnnouncements[index].shortName,
informationText: manualAnnouncements[index].displayText, informationText: manualAnnouncements[index].displayText,
audioSources: manualAnnouncements[index].audioSources, audioSources: manualAnnouncements[index].audioSources,
scheduledTime: doc.data["ScedhuledTime"] != null ? DateTime.parse(doc.data["ScheduledTime"]) : null,
timestamp: DateTime.parse(doc.$createdAt), timestamp: DateTime.parse(doc.$createdAt),
sendToServer: false, sendToServer: false,
); );
@@ -437,9 +451,10 @@ class AnnouncementQueueEntry {
final String displayText; final String displayText;
final List<AudioWrapperSource> audioSources; final List<AudioWrapperSource> audioSources;
bool sendToServer = true; bool sendToServer = true;
DateTime? scheduledTime;
DateTime? timestamp; 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 { class ManualAnnouncementEntry extends AnnouncementQueueEntry {
@@ -449,12 +464,14 @@ class ManualAnnouncementEntry extends AnnouncementQueueEntry {
required this.shortName, required this.shortName,
required String informationText, required String informationText,
required List<AudioWrapperSource> audioSources, required List<AudioWrapperSource> audioSources,
DateTime? scheduledTime,
DateTime? timestamp, DateTime? timestamp,
bool sendToServer = true, bool sendToServer = true,
}) : super( }) : super(
displayText: informationText, displayText: informationText,
audioSources: audioSources, audioSources: audioSources,
sendToServer: sendToServer, sendToServer: sendToServer,
scheduledTime: scheduledTime,
timestamp: timestamp, timestamp: timestamp,
); );
} }