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