mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-04 09:28:11 +00:00
more ergonomic
This commit is contained in:
1 parent
c5dd8271c3
commit
ef12eac34d
2 files changed
+12
-16
No files matched your search
@@ -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<GetUserByUse
|
||||
return response.user!;
|
||||
}
|
||||
|
||||
let errorType = UserLookupErrorType.FrontendError;
|
||||
let errorType = UserLookupError.FrontendError;
|
||||
|
||||
if (response?.success === false) {
|
||||
if (response.error_reason?.includes("not found")) {
|
||||
errorType = UserLookupErrorType.NotFound;
|
||||
errorType = UserLookupError.NotFound;
|
||||
} else {
|
||||
errorType = UserLookupErrorType.ServerError;
|
||||
errorType = UserLookupError.ServerError;
|
||||
}
|
||||
}
|
||||
return { errorType: errorType };
|
||||
return errorType;
|
||||
})
|
||||
.catch(e => {
|
||||
return { errorType: UserLookupErrorType.FrontendError };
|
||||
return UserLookupError.FrontendError;
|
||||
});
|
||||
}
|
||||
@@ -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 (
|
||||
|
||||
Reference in new issue
Block a user