Newer
Older
import { useEffect, useState } from 'react';
import { getTeams, Team } from 'adapters/team';
import { getPossibleTasks, Task } from 'adapters/task';
import { getCurrentUser, getUserTasks, User } from 'adapters/user';
import TaskComponent from 'components/ui/Task';
import LoadingScreen from 'components/ui/LoadingScreen';
export default function Tasks() {
const [user, setUser] = useState<User>();
const [teams, setTeams] = useState<Team[]>();
const [tasks, setTasks] = useState<Task[]>([]);
const [possibleTasks, setPossibleTasks] = useState<Task[]>([]);

Planoetscher Daniel (Student Com20)
committed
sessionStorage.setItem('task-return-location', `/tasks`);
getCurrentUser().then(setUser);
getUserTasks().then(setTasks);
getTeams().then(setTeams);
getPossibleTasks().then(setPossibleTasks);
const acceptableTasks = possibleTasks
.filter(task =>
!task.assigned.some(ass => ass.user === user?.id)
&& task.requirements.some(
req => teams?.some(team => team.role === req.role)
)
);
if (user) {
return (
<div className="tasks-page">
<div className="content-container">
<section className="intro-section">
<h1 className="underlined">Tasks</h1>
</section>
<p>Hey {user.realname ?? user.username}, you have <strong>{tasks.length} {tasks.length > 1 ? 'tasks' : 'task'}</strong>.</p>
<section className="tasks-container">
{
tasks.length > 0
? (
<div className="tasks-list">
{
tasks
.map((task) => (
<TaskComponent
key={task.id}
task={task}
subtitle={
task.assigned
.find(assignee => assignee.user === user.id)?.time
+ ' min'
}
/>
))
}
</div>
)
: (<div className="task-error">No open tasks found</div>)
}
<h2>Other tasks you could do</h2>
{
acceptableTasks.length > 0
? (
<div className="tasks-list">
{
acceptableTasks.map((task) => (
<TaskComponent
key={task.id}
task={task}
subtitle={'Suggested task - add yourself as assignee to do it.'}
/>
))
}
</div>
)
: (<div className="task-error">You don't fit the requirements for any other tasks</div>)
}
</section>
</div>
</div >
} else {
return <LoadingScreen />