Browse Source

Introduce super basic UserDetails.

main
Titouan Rigoudy 4 years ago
parent
commit
ae2b8d24b7
2 changed files with 72 additions and 2 deletions
  1. +36
    -0
      src/modules/user/UserDetails.tsx
  2. +36
    -2
      src/modules/user/UsersPane.tsx

+ 36
- 0
src/modules/user/UserDetails.tsx View File

@ -0,0 +1,36 @@
import { FC } from "react";
import { UserState } from "modules/user/slice";
interface Props {
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>
);
};
export default UserDetails;

+ 36
- 2
src/modules/user/UsersPane.tsx View File

@ -1,10 +1,35 @@
import { FC } from "react"; import { FC } from "react";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
import { useParams, useRouteMatch } from "react-router";
import { Switch, Route } from "react-router-dom";
import { selectAllUsers } from "modules/user/slice";
import { decode } from "modules/base64";
import { UserMap, selectAllUsers } from "modules/user/slice";
import UserDetails from "modules/user/UserDetails";
import UserList from "modules/user/UserList"; import UserList from "modules/user/UserList";
interface Props {
users: UserMap;
}
interface UrlParams {
userId: string;
}
const UserInfoPane: FC<Props> = ({ users }) => {
const { userId } = useParams<UrlParams>();
let user;
if (userId !== undefined) {
const name = decode(userId);
user = users[name];
}
return <UserDetails user={user} />;
};
const UsersPane: FC<{}> = () => { const UsersPane: FC<{}> = () => {
const { path } = useRouteMatch();
const users = useSelector(selectAllUsers); const users = useSelector(selectAllUsers);
return ( return (
@ -12,7 +37,16 @@ const UsersPane: FC<{}> = () => {
<div className="w-80"> <div className="w-80">
<UserList users={users} /> <UserList users={users} />
</div> </div>
<div className="flex-grow">Coming soon: user details.</div>
<div className="flex-grow">
<Switch>
<Route exact path={path}>
<UserInfoPane users={users} />
</Route>
<Route path={`${path}/:userId`}>
<UserInfoPane users={users} />
</Route>
</Switch>
</div>
</div> </div>
); );
}; };


Loading…
Cancel
Save