website: Add head to task pages even if no task and improve var name

This commit is contained in:
Adrian Cowan
2023-01-29 12:09:58 +11:00
parent e0e398fa8b
commit 21c4a1263a
4 changed files with 33 additions and 26 deletions
+26 -18
View File
@@ -19,27 +19,35 @@ export const TaskPage = ({ type }: TaskPageProps) => {
const { response, isLoading, completeTask, skipTask } = taskApiHook(type);
const taskInfo = TaskInfos.find((taskType) => taskType.type === type);
switch (response.status) {
let body;
switch (response.taskAvailability) {
case "AWAITING_INITIAL":
return <LoadingScreen text={t("common:loading")} />;
body = <LoadingScreen text={t("common:loading")} />;
break;
case "NONE_AVAILABLE":
return <TaskEmptyState />;
body = <TaskEmptyState />;
break;
case "AVAILABLE":
return (
<>
<Head>
<title>{t(getTypeSafei18nKey(`${taskInfo.id}.label`))}</title>
<meta name="description" content={t(getTypeSafei18nKey(`${taskInfo.id}.desc`))} />
</Head>
<Task
key={response.task.id}
frontendId={response.id}
task={response.task as KnownTaskType}
isLoading={isLoading}
completeTask={completeTask}
skipTask={skipTask}
/>
</>
body = (
<Task
key={response.task.id}
frontendId={response.id}
task={response.task as KnownTaskType}
isLoading={isLoading}
completeTask={completeTask}
skipTask={skipTask}
/>
);
break;
}
return (
<>
<Head>
<title>{t(getTypeSafei18nKey(`${taskInfo.id}.label`))}</title>
<meta name="description" content={t(getTypeSafei18nKey(`${taskInfo.id}.desc`))} />
</Head>
{body}
</>
);
};
@@ -6,7 +6,7 @@ import useSWRImmutable from "swr/immutable";
import useSWRMutation from "swr/mutation";
export const useGenericTaskAPI = <TaskType extends BaseTask>(taskType: TaskTypeEnum): TaskApiHook<TaskType> => {
const [response, setReponse] = useState<TaskResponse<TaskType>>({ status: "AWAITING_INITIAL" });
const [response, setReponse] = useState<TaskResponse<TaskType>>({ taskAvailability: "AWAITING_INITIAL" });
const [isLoading, setIsLoading] = useState(true);
const { mutate: requestNewTask } = useSWRImmutable<TaskAvailableResponse<TaskType>>(
@@ -15,12 +15,12 @@ export const useGenericTaskAPI = <TaskType extends BaseTask>(taskType: TaskTypeE
{
onSuccess: (response) => {
setIsLoading(false);
setReponse({ status: "AVAILABLE", ...response });
setReponse({ taskAvailability: "AVAILABLE", ...response });
},
onError: () => {
// We could check for code 503 here for truely unavailable, but we need to do something with other errors anyway.
setIsLoading(false);
setReponse({ status: "NONE_AVAILABLE" });
setReponse({ taskAvailability: "NONE_AVAILABLE" });
},
revalidateOnMount: true,
dedupingInterval: 500,
@@ -35,7 +35,7 @@ export const useGenericTaskAPI = <TaskType extends BaseTask>(taskType: TaskTypeE
onError: () => {
// We could check for code 503 here for truely unavailable, but we need to do something with other errors anyway.
setIsLoading(false);
setReponse({ status: "NONE_AVAILABLE" });
setReponse({ taskAvailability: "NONE_AVAILABLE" });
},
});
@@ -26,7 +26,6 @@ const handler = withoutRole("banned", async (req, res, token) => {
} catch (err) {
if (err instanceof OasstError && err.errorCode === ERROR_CODES.TASK_REQUESTED_TYPE_NOT_AVAILABLE) {
res.status(503).json({});
return;
} else {
console.error(err);
res.status(500).json(err);
+3 -3
View File
@@ -36,15 +36,15 @@ export interface TaskAvailableResponse<Task extends BaseTask> {
}
interface TaskAvailable<Task extends BaseTask> extends TaskAvailableResponse<Task> {
status: "AVAILABLE";
taskAvailability: "AVAILABLE";
}
interface AwaitingInitialTask {
status: "AWAITING_INITIAL";
taskAvailability: "AWAITING_INITIAL";
}
interface NoTaskAvailable {
status: "NONE_AVAILABLE";
taskAvailability: "NONE_AVAILABLE";
}
export type TaskResponse<Task extends BaseTask> = TaskAvailable<Task> | AwaitingInitialTask | NoTaskAvailable;