uninstallPlugin method

void uninstallPlugin(
  1. String pluginUid
)

Uninstalls a plugin by removing all its hooks from this configuration.

Implementation

void uninstallPlugin(String pluginUid) {
  if (!_installedPlugins.containsKey(pluginUid)) {
    throw ArgumentError('Plugin "$pluginUid" is not installed.');
  }

  final plugin = _installedPlugins[pluginUid]!;

  // Remove plugin hooks by UID
  final actionHookUids = plugin.actionHooks.map((h) => h.uid).toSet();
  actionHooks.removeWhere((hook) => actionHookUids.contains(hook.uid));

  final serializationHookUids = plugin.serializationHooks
      .map((h) => h.uid)
      .toSet();
  serializationHooks.removeWhere(
    (hook) => serializationHookUids.contains(hook.uid),
  );

  final terminalSerializationHookUids = plugin.terminalSerializationHooks
      .map((h) => h.uid)
      .toSet();
  terminalSerializationHooks.removeWhere(
    (hook) => terminalSerializationHookUids.contains(hook.uid),
  );

  _installedPlugins.remove(pluginUid);
}