cb00d9f383
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>
38 lines
1.5 KiB
TypeScript
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 {}
|
|
};
|