Files
scoreodonto.com/frontend/views/plugins/pluginRegistry.ts
T
VPS 4 Builder cb00d9f383 feat: ViaCEP em todos os forms de endereço + menus por papel + fix preview de plugins
ViaCEP (auto-preenche endereço ao completar 8 dígitos):
- novo util services/viacep.ts (buscarCep), reutilizado
- ligado em Pacientes, Salas, Profissionais(perfil); Configurações migrada p/ o util
- filtro 'CEP (região)' do marketplace mantido como busca (sem auto-fill)

Menus por papel:
- biomédico: sem Ortodontia, RX e 'Ser Tutor Orto' (não são escopo)
- protético: passa a ver Dashboard/Agenda/Tratamentos/Lançar GTO (antes não via nada)
- RX/Radiografias: só papéis odonto (dentista + donos/funcionário)
- bottom nav mobile ajustado (biomédico/protético)

Fix 'Visualizar como':
- getActivePlugins é preview-aware (todos os plugins ativos enquanto houver PREVIEW_ROLE),
  imune ao timing de hydrate/cache; enterPreview/exitPreview simplificados

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 20:14:31 +02:00

38 lines
1.5 KiB
TypeScript

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 []; }
};
export const isPluginActive = (id: string): boolean => 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<string, string> => {
try {
const all = JSON.parse(localStorage.getItem(PLUGIN_CONFIG_KEY) || '{}');
return all[id] || {};
} catch { return {}; }
};
export const savePluginConfig = (id: string, config: Record<string, string>) => {
try {
const all = JSON.parse(localStorage.getItem(PLUGIN_CONFIG_KEY) || '{}');
localStorage.setItem(PLUGIN_CONFIG_KEY, JSON.stringify({ ...all, [id]: config }));
} catch {}
};