feat: replace dynamic avatar generation with static image assets

This commit is contained in:
2025-11-20 15:05:17 -03:00
parent 51e2efa07e
commit 0af8daa901
17 changed files with 146 additions and 576 deletions

View File

@@ -70,8 +70,7 @@ export const criarConversa = mutation({
args: {
tipo: v.union(v.literal('individual'), v.literal('grupo'), v.literal('sala_reuniao')),
participantes: v.array(v.id('usuarios')),
nome: v.optional(v.string()),
avatar: v.optional(v.string())
nome: v.optional(v.string())
},
handler: async (ctx, args) => {
const usuarioAtual = await getUsuarioAutenticado(ctx);
@@ -103,7 +102,6 @@ export const criarConversa = mutation({
const dadosConversa: Omit<Doc<'conversas'>, '_id' | '_creationTime'> = {
tipo: args.tipo,
nome: args.nome,
avatar: args.avatar,
participantes: args.participantes,
criadoPor: usuarioAtual._id,
criadoEm: Date.now()
@@ -152,8 +150,7 @@ export const criarConversa = mutation({
export const criarSalaReuniao = mutation({
args: {
nome: v.string(),
participantes: v.array(v.id('usuarios')),
avatar: v.optional(v.string())
participantes: v.array(v.id('usuarios'))
},
handler: async (ctx, args) => {
const usuarioAtual = await getUsuarioAutenticado(ctx);
@@ -174,7 +171,6 @@ export const criarSalaReuniao = mutation({
const dadosConversa: Omit<Doc<'conversas'>, '_id' | '_creationTime'> = {
tipo: 'sala_reuniao' as const,
nome: args.nome.trim(),
avatar: args.avatar,
participantes: participantesUnicos,
criadoPor: usuarioAtual._id,
criadoEm: Date.now(),
@@ -2010,7 +2006,6 @@ export const obterUsuariosOnline = query({
_id: u._id,
nome: u.nome,
email: u.email,
avatar: u.avatar,
fotoPerfil: u.fotoPerfil,
statusPresenca: u.statusPresenca,
statusMensagem: u.statusMensagem,
@@ -2055,7 +2050,6 @@ export const listarTodosUsuarios = query({
nome: u.nome,
email: u.email,
matricula,
avatar: u.avatar,
fotoPerfil: u.fotoPerfil,
fotoPerfilUrl,
statusPresenca: u.statusPresenca,

View File

@@ -535,7 +535,7 @@ export default defineSchema({
ultimaTentativaLogin: v.optional(v.number()), // timestamp da última tentativa
// Campos de Chat e Perfil
avatar: v.optional(v.string()), // "avatar-1" até "avatar-15" ou storageId
fotoPerfil: v.optional(v.id("_storage")),
setor: v.optional(v.string()),
statusMensagem: v.optional(v.string()), // max 100 chars
@@ -761,7 +761,7 @@ export default defineSchema({
v.literal("sala_reuniao")
),
nome: v.optional(v.string()), // nome do grupo/sala
avatar: v.optional(v.string()), // avatar do grupo/sala
participantes: v.array(v.id("usuarios")), // IDs dos participantes
administradores: v.optional(v.array(v.id("usuarios"))), // IDs dos administradores (apenas para sala_reuniao)
ultimaMensagem: v.optional(v.string()),

View File

@@ -476,11 +476,10 @@ export const alterarRole = mutation({
});
/**
* Atualizar perfil do usuário (foto, avatar, setor, status, preferências)
* Atualizar perfil do usuário (foto, setor, status, preferências)
*/
export const atualizarPerfil = mutation({
args: {
avatar: v.optional(v.string()),
fotoPerfil: v.optional(v.id('_storage')),
setor: v.optional(v.string()),
statusMensagem: v.optional(v.string()),
@@ -511,7 +510,6 @@ export const atualizarPerfil = mutation({
atualizadoEm: Date.now()
};
if (args.avatar !== undefined) updates.avatar = args.avatar;
if (args.fotoPerfil !== undefined) updates.fotoPerfil = args.fotoPerfil;
if (args.setor !== undefined) updates.setor = args.setor;
if (args.statusMensagem !== undefined) updates.statusMensagem = args.statusMensagem;
@@ -541,7 +539,6 @@ export const obterPerfil = query({
email: v.string(),
matricula: v.optional(v.string()),
funcionarioId: v.optional(v.id('funcionarios')),
avatar: v.optional(v.string()),
fotoPerfil: v.optional(v.id('_storage')),
fotoPerfilUrl: v.union(v.string(), v.null()),
setor: v.optional(v.string()),
@@ -582,7 +579,6 @@ export const obterPerfil = query({
email: usuarioAtual.email,
matricula: matricula || undefined,
funcionarioId: usuarioAtual.funcionarioId,
avatar: usuarioAtual.avatar,
fotoPerfil: usuarioAtual.fotoPerfil,
fotoPerfilUrl,
setor: usuarioAtual.setor,
@@ -595,7 +591,7 @@ export const obterPerfil = query({
});
/**
* Listar todos usuários para o chat (com avatar, foto e status)
* Listar todos usuários para o chat (com foto e status)
*/
export const listarParaChat = query({
args: {},
@@ -605,7 +601,6 @@ export const listarParaChat = query({
nome: v.string(),
email: v.string(),
matricula: v.optional(v.string()),
avatar: v.optional(v.string()),
fotoPerfil: v.optional(v.id('_storage')),
fotoPerfilUrl: v.union(v.string(), v.null()),
statusPresenca: v.optional(
@@ -656,7 +651,6 @@ export const listarParaChat = query({
nome: usuario.nome,
email: usuario.email,
matricula: matricula || undefined,
avatar: usuario.avatar,
fotoPerfil: usuario.fotoPerfil,
fotoPerfilUrl,
statusPresenca: usuario.statusPresenca || 'offline',