eventHappened static method

dynamic eventHappened(
  1. MBAutomationEvent event
)

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);
}