From 07e06471745e9aa12197caa5cdc2e3722d204868 Mon Sep 17 00:00:00 2001 From: LordMathis Date: Sat, 24 May 2025 14:10:13 +0200 Subject: [PATCH] Refactor type guards for LoginResponse and UserRole to improve validation logic --- app/src/types/api.ts | 8 ++++---- app/src/types/models.ts | 5 ++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/types/api.ts b/app/src/types/api.ts index 047628d..1783cbb 100644 --- a/app/src/types/api.ts +++ b/app/src/types/api.ts @@ -42,10 +42,10 @@ export function isLoginResponse(obj: unknown): obj is LoginResponse { obj !== null && 'user' in obj && isUser(obj.user) && - 'sessionId' in obj && - typeof (obj as LoginResponse).sessionId === 'string' && - 'expiresAt' in obj && - typeof (obj as LoginResponse).expiresAt === 'string' + (!('sessionId' in obj) || + typeof (obj as LoginResponse).sessionId === 'string') && + (!('expiresAt' in obj) || + typeof (obj as LoginResponse).expiresAt === 'string') ); } diff --git a/app/src/types/models.ts b/app/src/types/models.ts index 8041cb8..d95e27a 100644 --- a/app/src/types/models.ts +++ b/app/src/types/models.ts @@ -46,7 +46,10 @@ export enum UserRole { * Type guard to check if a value is a valid UserRole */ export function isUserRole(value: unknown): value is UserRole { - return typeof value === 'string' && value in UserRole; + return ( + typeof value === 'string' && + Object.values(UserRole).includes(value as UserRole) + ); } export enum Theme {