From ef12eac34d9a9ff059e2ea97f50c010ab5fd8e54 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Fri, 3 Sep 2021 04:48:10 -0400 Subject: [PATCH] more ergonomic --- vocodes/src/v2/api/user/GetUserByUsername.ts | 20 ++++++++----------- .../view/profile/profile_view/ProfileFc.tsx | 8 ++++---- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/vocodes/src/v2/api/user/GetUserByUsername.ts b/vocodes/src/v2/api/user/GetUserByUsername.ts index e6650fa887..1730eb7805 100644 --- a/vocodes/src/v2/api/user/GetUserByUsername.ts +++ b/vocodes/src/v2/api/user/GetUserByUsername.ts @@ -38,11 +38,7 @@ export interface UserProfileModeratorFields { maybe_mod_user_token: string | null | undefined, } -export interface UserLookupError { - errorType: UserLookupErrorType, -} - -export enum UserLookupErrorType { +export enum UserLookupError { NotFound, ServerError, FrontendError, @@ -51,11 +47,11 @@ export enum UserLookupErrorType { export type GetUserByUsernameResponse = User | UserLookupError; export function GetUserByUsernameIsOk(response: GetUserByUsernameResponse): response is User { - return 'user_token' in response; + return response.hasOwnProperty('user_token'); } export function GetUserByUsernameIsErr(response: GetUserByUsernameResponse): response is UserLookupError { - return 'errorType' in response; + return !response.hasOwnProperty('user_token'); } @@ -84,18 +80,18 @@ export async function GetUserByUsername(username: string) : Promise { - return { errorType: UserLookupErrorType.FrontendError }; + return UserLookupError.FrontendError; }); } diff --git a/vocodes/src/v2/view/profile/profile_view/ProfileFc.tsx b/vocodes/src/v2/view/profile/profile_view/ProfileFc.tsx index 898eaf16d6..677c701ba3 100644 --- a/vocodes/src/v2/view/profile/profile_view/ProfileFc.tsx +++ b/vocodes/src/v2/view/profile/profile_view/ProfileFc.tsx @@ -10,7 +10,7 @@ import { useParams } from 'react-router-dom'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faDiscord, faFirefox, faGithub, faTwitch, faTwitter } from '@fortawesome/free-brands-svg-icons'; import { faClock, faDollarSign } from '@fortawesome/free-solid-svg-icons'; -import { GetUserByUsername, GetUserByUsernameIsErr, GetUserByUsernameIsOk, User, UserLookupErrorType } from '../../../api/user/GetUserByUsername'; +import { GetUserByUsername, GetUserByUsernameIsErr, GetUserByUsernameIsOk, User, UserLookupError } from '../../../api/user/GetUserByUsername'; import { format } from 'date-fns'; import { FrontendUrlConfig } from '../../../../common/FrontendUrlConfig'; @@ -30,8 +30,8 @@ function ProfileFc(props: Props) { if (GetUserByUsernameIsOk(response)) { setUserData(response); } else if (GetUserByUsernameIsErr(response)) { - switch(response.errorType) { - case UserLookupErrorType.NotFound: + switch(response) { + case UserLookupError.NotFound: setNotFoundState(true); break; } @@ -40,7 +40,7 @@ function ProfileFc(props: Props) { useEffect(() => { getUser(username); - }, [username, getUser]); // NB: Empty array dependency sets to run ONLY on mount + }, [username, getUser]); if (notFoundState) { return (