Correcao Sidebar Classico e Rail, Correcao Layout, Ajuste de Breakpoint para Tailwind, Ajuste AppTopbar, Ajuste Menu PopOver, Recriado Paleta de Cores, Inserido algumas animações leves, Reajuste Cor items NOVOS da tabela, Drawer Ajuda Corrigido no Logout, Whatsapp, sms, email, recursos extras

This commit is contained in:
Leonardo
2026-03-24 21:26:58 -03:00
parent a89d1f5560
commit 53a4980396
453 changed files with 121427 additions and 174407 deletions
+52 -56
View File
@@ -26,69 +26,65 @@
// 'editor' — pode criar e gerenciar cursos/módulos da plataforma de microlearning.
//
import { ref, computed } from 'vue'
import { supabase } from '@/lib/supabase/client'
import { sessionUser } from '@/app/session'
import { ref, computed } from 'vue';
import { supabase } from '@/lib/supabase/client';
import { sessionUser } from '@/app/session';
// cache em módulo (evita queries repetidas por navegação)
let _cachedUid = null
let _cachedRoles = null
let _cachedUid = null;
let _cachedRoles = null;
export function usePlatformPermissions () {
const platformRoles = ref(_cachedRoles ?? [])
const loading = ref(false)
const error = ref(null)
export function usePlatformPermissions() {
const platformRoles = ref(_cachedRoles ?? []);
const loading = ref(false);
const error = ref(null);
async function load (force = false) {
const uid = sessionUser.value?.id
if (!uid) {
platformRoles.value = []
return
async function load(force = false) {
const uid = sessionUser.value?.id;
if (!uid) {
platformRoles.value = [];
return;
}
// cache por uid (invalida se usuário mudou)
if (!force && _cachedUid === uid && _cachedRoles !== null) {
platformRoles.value = _cachedRoles;
return;
}
loading.value = true;
error.value = null;
try {
const { data, err } = await supabase.from('profiles').select('platform_roles').eq('id', uid).single();
const roles = !err && Array.isArray(data?.platform_roles) ? data.platform_roles : [];
_cachedUid = uid;
_cachedRoles = roles;
platformRoles.value = roles;
} catch (e) {
console.warn('[usePlatformPermissions] load falhou:', e);
error.value = e;
platformRoles.value = [];
} finally {
loading.value = false;
}
}
// cache por uid (invalida se usuário mudou)
if (!force && _cachedUid === uid && _cachedRoles !== null) {
platformRoles.value = _cachedRoles
return
function invalidate() {
_cachedUid = null;
_cachedRoles = null;
platformRoles.value = [];
}
loading.value = true
error.value = null
const isEditor = computed(() => platformRoles.value.includes('editor'));
try {
const { data, err } = await supabase
.from('profiles')
.select('platform_roles')
.eq('id', uid)
.single()
const roles = !err && Array.isArray(data?.platform_roles) ? data.platform_roles : []
_cachedUid = uid
_cachedRoles = roles
platformRoles.value = roles
} catch (e) {
console.warn('[usePlatformPermissions] load falhou:', e)
error.value = e
platformRoles.value = []
} finally {
loading.value = false
}
}
function invalidate () {
_cachedUid = null
_cachedRoles = null
platformRoles.value = []
}
const isEditor = computed(() => platformRoles.value.includes('editor'))
return {
platformRoles,
loading,
error,
isEditor,
load,
invalidate
}
return {
platformRoles,
loading,
error,
isEditor,
load,
invalidate
};
}