editSchedule method

Future<void> editSchedule(
  1. String nodeId,
  2. String id, {
  3. String? name,
  4. List<ScheduleTrigger>? triggers,
  5. Map<String, dynamic>? action,
})

Helper function for editing a default Rainmaker schedule.

Takes an action parameter that triggers at the given time. The action parameter is identical to the parameters used by the other state functions.

E.g.

{
 'Light': {
   'brightness': 0,
   'output': true,
 },
 'Switch': {
   'output': true,
 }
}

When updating the action and triggers parameters, all, the objects should be complete. They cannot be partial. E.g. you should pass "action":{"Light": {"power": true, "brightness":100}} and not just "action":{"Light": {"brightness":100}}.

Implementation

Future<void> editSchedule(String nodeId, String id,
    {String? name,
    List<ScheduleTrigger>? triggers,
    Map<String, dynamic>? action}) async {
  final parsedTriggers = <Map<String, dynamic>>[];

  if (triggers != null) {
    for (final trigger in triggers) {
      if (trigger is DayOfWeekTrigger) {
        parsedTriggers.add({
          'd': _getBitList<DaysOfWeek>(trigger.daysOfWeek),
          'm': trigger.minutesSinceMidnight,
        });
      } else if (trigger is DateTrigger) {
        parsedTriggers.add({
          'dd': trigger.day,
          'mm': _getBitList<MonthsOfYear>(trigger.months),
          'yy': trigger.year,
          'r': trigger.repeatEveryYear,
          'm': trigger.minutesSinceMidnight,
        });
      }
    }
  }

  await updateState(nodeId, {
    'Schedule': {
      'Schedules': [
        {
          'name': name,
          'id': id,
          'operation': 'edit',
          'triggers': parsedTriggers,
          'action': action,
        }
      ],
    }
  });
}