disableAllPlugins method

Future<PluginOperationResult> disableAllPlugins()

Disable all enabled plugins.

Implementation

Future<PluginOperationResult> disableAllPlugins() async {
  var disabledCount = 0;

  for (final scope in validInstallableScopes) {
    final settingSource = scopeToSettingSource(scope);
    final enabled = getSettingsEnabledPlugins(settingSource);
    if (enabled == null || enabled.isEmpty) continue;

    final newEnabled = <String, bool>{
      for (final entry in enabled.entries) entry.key: false,
    };
    updateSettings(settingSource, {'enabledPlugins': newEnabled});
    disabledCount += enabled.length;
  }

  clearAllCaches();

  if (disabledCount == 0) {
    return const PluginOperationResult(
      success: true,
      message: 'No enabled plugins found to disable',
    );
  }

  return PluginOperationResult(
    success: true,
    message:
        'Successfully disabled $disabledCount plugin${disabledCount == 1 ? '' : 's'}',
  );
}