feat: melhorias de UX e redesign de comentários
- Corrige sincronização do avatar no perfil após upload - Reduz tamanho dos ícones de câmera/lixeira no avatar - Remove atributos title (tooltips nativos) de toda aplicação - Adiciona regra no AGENTS.md sobre uso de tooltips - Permite desmarcar resposta no checklist (toggle) - Torna campo answer opcional na mutation setChecklistItemAnswer - Adiciona edição inline dos campos de resumo no painel de detalhes - Redesenha comentários com layout mais limpo e consistente - Cria tratamento especial para comentários automáticos de sistema - Aplica fundo ciano semi-transparente em comentários públicos - Corrige import do Loader2 no notification-preferences-form 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
23ea426c68
commit
022e1f63ba
17 changed files with 636 additions and 180 deletions
|
|
@ -300,10 +300,23 @@ export const updateAvatar = mutation({
|
|||
return { status: "not_found" }
|
||||
}
|
||||
|
||||
// Atualiza o avatar do usuário
|
||||
// Atualiza o avatar do usuário - usa undefined para remover o campo
|
||||
const normalizedAvatarUrl = avatarUrl ?? undefined
|
||||
await ctx.db.patch(user._id, { avatarUrl: normalizedAvatarUrl })
|
||||
|
||||
// Cria snapshot base sem avatarUrl se for undefined
|
||||
// Isso garante que o campo seja realmente removido do snapshot
|
||||
const baseSnapshot: { name: string; email: string; avatarUrl?: string; teams?: string[] } = {
|
||||
name: user.name,
|
||||
email: user.email,
|
||||
}
|
||||
if (normalizedAvatarUrl !== undefined) {
|
||||
baseSnapshot.avatarUrl = normalizedAvatarUrl
|
||||
}
|
||||
if (user.teams && user.teams.length > 0) {
|
||||
baseSnapshot.teams = user.teams
|
||||
}
|
||||
|
||||
// Atualiza snapshots em comentários
|
||||
const comments = await ctx.db
|
||||
.query("ticketComments")
|
||||
|
|
@ -311,15 +324,9 @@ export const updateAvatar = mutation({
|
|||
.take(10000)
|
||||
|
||||
if (comments.length > 0) {
|
||||
const authorSnapshot = {
|
||||
name: user.name,
|
||||
email: user.email,
|
||||
avatarUrl: normalizedAvatarUrl,
|
||||
teams: user.teams ?? undefined,
|
||||
}
|
||||
await Promise.all(
|
||||
comments.map(async (comment) => {
|
||||
await ctx.db.patch(comment._id, { authorSnapshot })
|
||||
await ctx.db.patch(comment._id, { authorSnapshot: baseSnapshot })
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
|
@ -331,14 +338,8 @@ export const updateAvatar = mutation({
|
|||
.take(10000)
|
||||
|
||||
if (requesterTickets.length > 0) {
|
||||
const requesterSnapshot = {
|
||||
name: user.name,
|
||||
email: user.email,
|
||||
avatarUrl: normalizedAvatarUrl,
|
||||
teams: user.teams ?? undefined,
|
||||
}
|
||||
for (const t of requesterTickets) {
|
||||
await ctx.db.patch(t._id, { requesterSnapshot })
|
||||
await ctx.db.patch(t._id, { requesterSnapshot: baseSnapshot })
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -349,14 +350,8 @@ export const updateAvatar = mutation({
|
|||
.take(10000)
|
||||
|
||||
if (assigneeTickets.length > 0) {
|
||||
const assigneeSnapshot = {
|
||||
name: user.name,
|
||||
email: user.email,
|
||||
avatarUrl: normalizedAvatarUrl,
|
||||
teams: user.teams ?? undefined,
|
||||
}
|
||||
for (const t of assigneeTickets) {
|
||||
await ctx.db.patch(t._id, { assigneeSnapshot })
|
||||
await ctx.db.patch(t._id, { assigneeSnapshot: baseSnapshot })
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue