Merge remote-tracking branch 'origin' into feat-pedidos
This commit is contained in:
@@ -142,7 +142,7 @@ class AuthStore {
|
||||
role: this.state.usuario?.role || {
|
||||
_id: '',
|
||||
nome: 'Usuário',
|
||||
nivel: 999
|
||||
admin: true
|
||||
},
|
||||
primeiroAcesso: this.state.usuario?.primeiroAcesso ?? false
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Doc, Id } from '@sgse-app/backend/convex/_generated/dataModel';
|
||||
import { writable } from 'svelte/store';
|
||||
import type { Doc, Id } from '@sgse-app/backend/convex/_generated/dataModel';
|
||||
|
||||
export type TicketDetalhe = {
|
||||
ticket: Doc<'tickets'>;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Id } from '@sgse-app/backend/convex/_generated/dataModel';
|
||||
import { derived, writable } from 'svelte/store';
|
||||
import { writable } from 'svelte/store';
|
||||
|
||||
// Store para a conversa ativa
|
||||
export const conversaAtiva = writable<Id<'conversas'> | null>(null);
|
||||
@@ -11,6 +11,14 @@ export const chatMinimizado = writable<boolean>(false);
|
||||
// Store para o contador de notificações
|
||||
export const notificacoesCount = writable<number>(0);
|
||||
|
||||
// Store para coordenar notificações entre componentes (evitar duplicação)
|
||||
// Quando uma notificação é mostrada em um componente, os outros devem ignorar
|
||||
export const notificacaoAtiva = writable<{
|
||||
conversaId: string;
|
||||
mensagemId: string;
|
||||
componente: 'widget' | 'messageList';
|
||||
} | null>(null);
|
||||
|
||||
// Funções auxiliares
|
||||
export function abrirChat() {
|
||||
chatAberto.set(true);
|
||||
@@ -39,3 +47,37 @@ export function abrirConversa(conversaId: Id<'conversas'>) {
|
||||
export function voltarParaLista() {
|
||||
conversaAtiva.set(null);
|
||||
}
|
||||
|
||||
// ========== CRIPTOGRAFIA E2E ==========
|
||||
|
||||
// Store para chaves de criptografia por conversa
|
||||
// Mapeia conversaId -> CryptoKey
|
||||
const chavesCriptografia = new Map<string, CryptoKey>();
|
||||
|
||||
/**
|
||||
* Armazena uma chave de criptografia para uma conversa
|
||||
*/
|
||||
export function armazenarChaveCriptografia(conversaId: string, key: CryptoKey): void {
|
||||
chavesCriptografia.set(conversaId, key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtém uma chave de criptografia para uma conversa
|
||||
*/
|
||||
export function obterChaveCriptografia(conversaId: string): CryptoKey | null {
|
||||
return chavesCriptografia.get(conversaId) || null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove uma chave de criptografia de uma conversa
|
||||
*/
|
||||
export function removerChaveCriptografia(conversaId: string): void {
|
||||
chavesCriptografia.delete(conversaId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifica se uma conversa tem chave de criptografia
|
||||
*/
|
||||
export function temChaveCriptografia(conversaId: string): boolean {
|
||||
return chavesCriptografia.has(conversaId);
|
||||
}
|
||||
|
||||
@@ -5,9 +5,8 @@
|
||||
* todos os clientes Convex sejam atualizados automaticamente.
|
||||
*/
|
||||
|
||||
import { browser } from '$app/environment';
|
||||
import { PUBLIC_CONVEX_URL } from '$env/static/public';
|
||||
import { authStore } from './auth.svelte';
|
||||
import { browser } from '$app/environment';
|
||||
|
||||
const convexClients = new Set<any>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user