export const ACTIVE_PLUGINS_KEY = 'SCOREODONTO_ACTIVE_PLUGINS'; export const PLUGIN_CONFIG_KEY = 'SCOREODONTO_PLUGIN_CONFIG'; // "Visualizar como" (superadmin) ativa todos os plugins para teste, sem depender // do cache em localStorage (que é reconciliado/limpo em outros fluxos). const PREVIEW_PLUGINS = ['rx-scoreodonto', 'locacao-salas', 'profissionais-marketplace']; export const getActivePlugins = (): string[] => { try { if (localStorage.getItem('SCOREODONTO_PREVIEW_ROLE')) return [...PREVIEW_PLUGINS]; return JSON.parse(localStorage.getItem(ACTIVE_PLUGINS_KEY) || '[]'); } catch { return []; } }; // Plugins sempre ligados (capability de plataforma, sem opção de desativar). // 'newwhats': Inbox/Secretária precisam aparecer para TODOS os usuários, mas a // ativação por plugin é local (localStorage/navegador) e não propaga entre contas. // Por isso fica ALWAYS_ON; a CONFIG continua exclusiva do superadmin (view 'plugins'). // (Futuro: gate por /api/nw/status quando o backend expuser "configurado".) export const ALWAYS_ON_PLUGINS = ['locacao-salas', 'newwhats']; export const isPluginActive = (id: string): boolean => ALWAYS_ON_PLUGINS.includes(id) || getActivePlugins().includes(id); export const togglePlugin = (id: string): boolean => { const active = getActivePlugins(); const wasActive = active.includes(id); const next = wasActive ? active.filter(p => p !== id) : [...active, id]; localStorage.setItem(ACTIVE_PLUGINS_KEY, JSON.stringify(next)); return !wasActive; }; export const getPluginConfig = (id: string): Record => { try { const all = JSON.parse(localStorage.getItem(PLUGIN_CONFIG_KEY) || '{}'); return all[id] || {}; } catch { return {}; } }; export const savePluginConfig = (id: string, config: Record) => { try { const all = JSON.parse(localStorage.getItem(PLUGIN_CONFIG_KEY) || '{}'); localStorage.setItem(PLUGIN_CONFIG_KEY, JSON.stringify({ ...all, [id]: config })); } catch {} };