editSchedule method
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,
}
],
}
});
}