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