eventHappened static method
Function called when an event happens.
It checks the saved messages and tells all the MBEventTrigger
triggers that this event happened.
@param event The event that happened.
Implementation
static eventHappened(MBAutomationEvent event) async {
List<MBMessage>? messagesSaved = await savedMessages();
if (messagesSaved == null) {
return;
}
if (messagesSaved.isEmpty) {
return;
}
bool somethingChanged = false;
for (MBMessage message in messagesSaved) {
if (message.triggers is MBMessageTriggers) {
MBMessageTriggers messageTriggers = message.triggers;
List<MBEventTrigger> eventsTriggers =
List.castFrom<MBTrigger, MBEventTrigger>(
messageTriggers.triggers.whereType<MBEventTrigger>().toList(),
);
for (MBEventTrigger eventTrigger in eventsTriggers) {
bool triggerChanged = await eventTrigger.eventHappened(event);
if (triggerChanged) {
somethingChanged = true;
}
}
}
}
if (somethingChanged) {
await saveMessages(
messagesSaved,
fromFetch: false,
);
}
checkMessages(fromStartup: false);
}