Add centralized error messages and validation utils

Introduce errorMessages.js with i18n translation keys for all
user-facing errors (form, connection, API) and validators.js with
reusable validation functions that reference those keys.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
francesco448
2026-03-18 16:48:34 +01:00
parent 66280e7b7c
commit 3e3fa11951
2 changed files with 50 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
// Translation keys for all error messages.
// Values must match the keys defined in src/locales/de/translation.json.
// Callers pass these to t() — e.g. t(ERROR_MESSAGES.form.usernameRequired).
export const ERROR_MESSAGES = {
form: {
usernameRequired: 'error.form.usernameRequired',
roomRequired: 'error.form.roomRequired',
usernameAndRoomRequired: 'error.form.usernameAndRoomRequired',
userIdRequired: 'error.form.userIdRequired',
messageTextRequired: 'error.form.messageTextRequired',
},
connection: {
failed: 'error.connection.failed',
noActiveConnection: 'error.connection.noActiveConnection',
interrupted: 'error.connection.interrupted',
sendFailed: 'error.connection.sendFailed',
},
api: {
joinFailed: 'error.api.joinFailed',
noUserReturned: 'error.api.noUserReturned',
snapshotFailed: 'error.api.snapshotFailed',
leaveFailed: 'error.api.leaveFailed',
},
}
+25
View File
@@ -0,0 +1,25 @@
import { ERROR_MESSAGES } from '../constants/errorMessages'
export function validateRequired(value, message) {
if (!value || !String(value).trim()) return message
return null
}
export function validateJoinForm(username, room) {
if (!username.trim() || !room.trim()) {
return ERROR_MESSAGES.form.usernameAndRoomRequired
}
return null
}
export function validateUsername(username) {
return validateRequired(username, ERROR_MESSAGES.form.usernameRequired)
}
export function validateRoom(room) {
return validateRequired(room, ERROR_MESSAGES.form.roomRequired)
}
export function validateMessageText(text) {
return validateRequired(text, ERROR_MESSAGES.form.messageTextRequired)
}