PluginConfig.fromMap constructor

PluginConfig.fromMap(
  1. Map map
)

Implementation

factory PluginConfig.fromMap(Map<dynamic, dynamic> map) {
  final rawCommands = map['commands'];
  if (rawCommands is! List || rawCommands.isEmpty) {
    throw const FormatException(
      'plugin requires a non-empty "commands" list',
    );
  }
  final commands = rawCommands
      .whereType<Map>()
      .map(PluginCommandConfig.fromMap)
      .toList();
  if (commands.isEmpty) {
    throw const FormatException('plugin has no valid commands');
  }
  final availability = map['availability'];
  return PluginConfig(
    id: _requiredString(map, 'id'),
    label: _requiredString(map, 'label'),
    commands: commands,
    description: _optionalString(map, 'description'),
    enabled: map['enabled'] != false,
    availability: availability is Map
        ? PluginAvailabilityCheck.fromMap(availability)
        : null,
    shortcut: _parseShortcut(map['shortcut']),
  );
}