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>
This commit is contained in:
@@ -259,12 +259,6 @@ export const HybridBackend = {
|
||||
getPreviewRole: (): string | null => localStorage.getItem('SCOREODONTO_PREVIEW_ROLE'),
|
||||
|
||||
enterPreview: (role: string) => {
|
||||
// Na primeira entrada do preview, guarda os plugins reais do superadmin p/ restaurar no exit.
|
||||
// (não sobrescreve o backup se já estiver previewando e só trocando de papel)
|
||||
if (!localStorage.getItem('SCOREODONTO_PREVIEW_ROLE')) {
|
||||
const prevPlugins = localStorage.getItem('SCOREODONTO_ACTIVE_PLUGINS');
|
||||
localStorage.setItem('SCOREODONTO_PREVIEW_PREV_PLUGINS', prevPlugins === null ? '__none__' : prevPlugins);
|
||||
}
|
||||
const synthetic = {
|
||||
id: '00000000-0000-0000-0000-000000000000', // UUID inexistente → consultas retornam vazio
|
||||
nome: `VISUALIZAÇÃO: ${role.toUpperCase()}`,
|
||||
@@ -275,8 +269,8 @@ export const HybridBackend = {
|
||||
localStorage.setItem('SCOREODONTO_PREVIEW_ROLE', role);
|
||||
localStorage.setItem('SCOREODONTO_ACTIVE_WORKSPACE', JSON.stringify(synthetic));
|
||||
localStorage.setItem('SCOREODONTO_WORKSPACES', JSON.stringify([synthetic]));
|
||||
// Preview ativa os plugins para o superadmin ver/testar as telas (RX, Salas, Profissionais).
|
||||
localStorage.setItem('SCOREODONTO_ACTIVE_PLUGINS', JSON.stringify(['rx-scoreodonto', 'locacao-salas', 'profissionais-marketplace']));
|
||||
// Os plugins ativos no preview vêm de getActivePlugins() (preview-aware): todos
|
||||
// ficam ativos enquanto SCOREODONTO_PREVIEW_ROLE existir. Nada a mutar aqui.
|
||||
const path = role === 'paciente' ? '/tratamentos' : '/dashboard';
|
||||
window.location.assign(path);
|
||||
},
|
||||
@@ -285,11 +279,6 @@ export const HybridBackend = {
|
||||
localStorage.removeItem('SCOREODONTO_PREVIEW_ROLE');
|
||||
localStorage.removeItem('SCOREODONTO_ACTIVE_WORKSPACE');
|
||||
localStorage.removeItem('SCOREODONTO_WORKSPACES');
|
||||
// Restaura os plugins que o superadmin tinha antes do preview.
|
||||
const prev = localStorage.getItem('SCOREODONTO_PREVIEW_PREV_PLUGINS');
|
||||
if (prev === null || prev === '__none__') localStorage.removeItem('SCOREODONTO_ACTIVE_PLUGINS');
|
||||
else localStorage.setItem('SCOREODONTO_ACTIVE_PLUGINS', prev);
|
||||
localStorage.removeItem('SCOREODONTO_PREVIEW_PREV_PLUGINS');
|
||||
window.location.assign('/superadmin/overview');
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user