fix(web): offer anonymous screening and doctor contact without identity
CI / ruff · pytest (pull_request) Successful in 2m30s
CI / ruff · pytest (pull_request) Successful in 2m30s
Refs #95, #96
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
import { useState } from "react";
|
||||
import { api } from "../api/client";
|
||||
import { useSession } from "../session/SessionContext";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { AppShell, Notice } from "../components/AppShell";
|
||||
@@ -11,7 +14,22 @@ export function Doctor() {
|
||||
const t = ru.doctor;
|
||||
const navigate = useNavigate();
|
||||
const dialog = useDialog();
|
||||
const { plan } = useToday();
|
||||
const { plan, failed } = useToday();
|
||||
const { session } = useSession();
|
||||
const [connecting, setConnecting] = useState(false);
|
||||
const [connectFailed, setConnectFailed] = useState(false);
|
||||
const connect = async () => {
|
||||
if (!session || connecting) return;
|
||||
setConnecting(true);
|
||||
setConnectFailed(false);
|
||||
try {
|
||||
await api.connectDoctor(session.token);
|
||||
navigate("/today");
|
||||
} catch {
|
||||
setConnectFailed(true);
|
||||
setConnecting(false);
|
||||
}
|
||||
};
|
||||
|
||||
const go = (button: string, label: string) =>
|
||||
void dialog.send({ type: "button", button }, label).then((ok) => ok && navigate("/flow"));
|
||||
@@ -29,8 +47,14 @@ export function Doctor() {
|
||||
<h1 className="h1">{t.title}</h1>
|
||||
</header>
|
||||
|
||||
{plan && !plan.has_doctor ? (
|
||||
<Notice>{t.noDoctor}</Notice>
|
||||
{(failed || connectFailed) && <Notice tone="danger">{ru.common.networkError}</Notice>}
|
||||
{!plan ? (!failed && <div className="loader" aria-label="Загрузка" />) : !plan.has_doctor ? (
|
||||
<div className="stack stack--sm">
|
||||
<Notice>{t.noDoctor}</Notice>
|
||||
<button type="button" className="btn btn--primary" disabled={connecting} onClick={() => void connect()}>
|
||||
{connecting ? t.connecting : t.connect}
|
||||
</button>
|
||||
</div>
|
||||
) : (
|
||||
<div className="cols">
|
||||
<section className="card-list" aria-label={t.visit}>
|
||||
|
||||
Reference in New Issue
Block a user