AOSSIE-Org / AOSSIE-Org/DebateAI

Refactor: Create reusable normalizeUser utility to reduce code duplication

Abierto
#422 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
84
Forks
198
Merge medio
2 d 19 h
PR fusionados (30 d)
30

Descripción

## Problem
The user normalization logic is duplicated in 4 places inside `authContext.tsx` (`login`, `verifyEmail`, `googleLogin`, `verifyToken`). Each function repeats the same ~15 lines of code to map raw user data into the `User` type.

This duplication violates the DRY principle, makes the code harder to maintain, and increases the risk of inconsistencies (e.g., `rating` default is `1200` in one place and `1500` in another).

## Solution
Create a reusable `normalizeUser` utility function that accepts user data and optional overrides. This will reduce each occurrence to a single line and centralize future updates.

## Impact
- Removes ~60 lines of duplicate code
- Improves maintainability
- Reduces bugs from copy-paste errors

## Implementation Outline
1. Add `frontend/src/utils/normalizeUser.ts` with the utility function
2. Update `authContext.tsx` to use it in the 4 mentioned functions
3. Test all authentication flows (login, signup, Google login, email verification)

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Start by reading frontend/src/authContext.tsx, focusing on the normalization logic in login, verifyEmail, googleLogin, and verifyToken. Compare the four mappings and the differing rating defaults before reviewing the new utility location at frontend/src/utils/normalizeUser.ts. Done means all four flows use the shared utility and login, signup, Google login, and email verification still work.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
authentication, frontend
Tipo de issue
Refactorización
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Activo
Claridad
Bien especificado
Aptitud para principiantes
76/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.