Browse Source

Handle user not found scenario.

main
Titouan Rigoudy 4 years ago
parent
commit
4c6be210a3
2 changed files with 37 additions and 31 deletions
  1. +17
    -27
      src/modules/user/UserDetails.tsx
  2. +20
    -4
      src/modules/user/UsersPane.tsx

+ 17
- 27
src/modules/user/UserDetails.tsx View File

@ -3,34 +3,24 @@ import { FC } from "react";
import { UserState } from "modules/user/slice";
interface Props {
user?: UserState;
user: UserState;
}
const UserDetails: FC<Props> = ({ user }) => {
if (user === undefined) {
return (
<div className="flex h-full justify-center items-center">
<h3>Select a user</h3>
</div>
);
}
return (
<div>
Name: {user.name}
<br />
Status: {user.status}
<br />
Average speed: {user.averageSpeed}
<br /># Downloads: {user.numDownloads}
<br /># Files: {user.numFiles}
<br /># Folders: {user.numFolders}
<br /># Free slots: {user.numFreeSlots}
<br />
Country: {user.country}
<br />
</div>
);
};
const UserDetails: FC<Props> = ({ user }) => (
<div>
Name: {user.name}
<br />
Status: {user.status}
<br />
Average speed: {user.averageSpeed}
<br /># Downloads: {user.numDownloads}
<br /># Files: {user.numFiles}
<br /># Folders: {user.numFolders}
<br /># Free slots: {user.numFreeSlots}
<br />
Country: {user.country}
<br />
</div>
);
export default UserDetails;

+ 20
- 4
src/modules/user/UsersPane.tsx View File

@ -16,13 +16,29 @@ interface UrlParams {
userId: string;
}
interface BannerProps {
title: string;
}
const UserInfoBanner: FC<BannerProps> = ({ title }) => {
return (
<div className="flex h-full justify-center items-center">
<h3>{title}</h3>
</div>
);
};
const UserInfoPane: FC<Props> = ({ users }) => {
const { userId } = useParams<UrlParams>();
let user;
if (userId !== undefined) {
const name = decode(userId);
user = users[name];
if (userId === undefined) {
return <UserInfoBanner title="Select a user" />;
}
const name = decode(userId);
const user = users[name];
if (user === undefined) {
return <UserInfoBanner title={`User ${name} not found`} />;
}
return <UserDetails user={user} />;


Loading…
Cancel
Save