Update live_information.dart
This commit is contained in:
@@ -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,
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user