import type { OnboardingPluginInfo, OnboardingPluginList, PluginChoice, } from "@/api/plugins-api"; export function currentChoice(plugin: OnboardingPluginInfo): PluginChoice { return plugin.state === "enabled" ? "enabled" : "disabled"; } /** * What the picker starts on. On a fresh install recommended plugins are on * and the rest stay installed but off, so a full image keeps every plugin * unless the admin picks Remove; consent ones start on. Later runs start from * how things are now. */ export function defaultChoices( list: OnboardingPluginList, ): Record { return Object.fromEntries( list.plugins.map((plugin) => { if ( !list.pending || list.reason !== "fresh" || plugin.source !== "bundled" ) { return [plugin.id, currentChoice(plugin)]; } if (plugin.consent) return [plugin.id, "enabled"]; return [plugin.id, plugin.recommended ? "enabled" : "disabled"]; }), ); } export function recommendedChoices( list: OnboardingPluginList, ): Record { return Object.fromEntries( list.plugins.map((plugin) => [ plugin.id, plugin.recommended || plugin.consent ? "enabled" : "disabled", ]), ); }