This commit is contained in:
2026-01-05 19:35:49 +01:00
parent b4b915416b
commit d9e6151ae0
92 changed files with 10964 additions and 7893 deletions

View File

@@ -270,7 +270,7 @@ export class GlobalErrorHandler {
const colNum = match[4] || match[3];
// Add source map comment if in development
if (process.env.NODE_ENV === 'development' && file.includes('.js')) {
if (process.env.NODE_ENV === 'development' && file && file.includes('.js')) {
return `at ${func} (${file}:${lineNum}:${colNum}) [Source Map: ${file}.map]`;
}

View File

@@ -19,6 +19,6 @@ export function getLeagueMembers(leagueId: string) {
*/
export function getPrimaryLeagueIdForDriver(driverId: string): string | null {
const memberships = LeagueMembershipService.getAllMembershipsForDriver(driverId);
if (memberships.length === 0) return null;
return memberships[0].leagueId;
if (!memberships || memberships.length === 0) return null;
return memberships[0]?.leagueId || null;
}

View File

@@ -79,7 +79,7 @@ export class LandingService {
const signupParams: SignupParamsDTO = {
email,
password: 'temp_password_' + Math.random().toString(36).substring(7), // Temporary password
displayName: email.split('@')[0], // Use email prefix as display name
displayName: email.split('@')[0] || 'user', // Use email prefix as display name, fallback to 'user'
};
const session: AuthSessionDTO = await this.authApi.signup(signupParams);

View File

@@ -20,7 +20,7 @@ export interface ValidationRule<T> {
export const emailValidation = (email: string): ValidationResult => {
const errors: string[] = [];
if (!email.trim()) {
if (!email || !email.trim()) {
errors.push('Email is required');
} else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
errors.push('Invalid email format');
@@ -63,7 +63,7 @@ export const passwordValidation = (password: string): ValidationResult => {
*/
export const nameValidation = (name: string, field: string = 'Name'): ValidationResult => {
const errors: string[] = [];
const trimmed = name.trim();
const trimmed = name ? name.trim() : '';
if (!trimmed) {
errors.push(`${field} is required`);
@@ -116,12 +116,12 @@ export interface LoginFormValues {
export const validateLoginForm = (values: LoginFormValues): Record<string, string> => {
const errors: Record<string, string> = {};
const emailResult = emailValidation(values.email);
const emailResult = emailValidation(values.email || '');
if (!emailResult.isValid) {
errors.email = emailResult.errors[0];
}
const passwordResult = passwordValidation(values.password);
const passwordResult = passwordValidation(values.password || '');
if (!passwordResult.isValid) {
errors.password = passwordResult.errors[0];
}
@@ -143,27 +143,27 @@ export interface SignupFormValues {
export const validateSignupForm = (values: SignupFormValues): Record<string, string> => {
const errors: Record<string, string> = {};
const firstNameResult = nameValidation(values.firstName, 'First name');
const firstNameResult = nameValidation(values.firstName || '', 'First name');
if (!firstNameResult.isValid) {
errors.firstName = firstNameResult.errors[0];
}
const lastNameResult = nameValidation(values.lastName, 'Last name');
const lastNameResult = nameValidation(values.lastName || '', 'Last name');
if (!lastNameResult.isValid) {
errors.lastName = lastNameResult.errors[0];
}
const emailResult = emailValidation(values.email);
const emailResult = emailValidation(values.email || '');
if (!emailResult.isValid) {
errors.email = emailResult.errors[0];
}
const passwordResult = passwordValidation(values.password);
const passwordResult = passwordValidation(values.password || '');
if (!passwordResult.isValid) {
errors.password = passwordResult.errors[0];
}
const confirmPasswordResult = confirmPasswordValidation(values.password, values.confirmPassword);
const confirmPasswordResult = confirmPasswordValidation(values.password || '', values.confirmPassword || '');
if (!confirmPasswordResult.isValid) {
errors.confirmPassword = confirmPasswordResult.errors[0];
}