32 lines
2.3 KiB
TypeScript
32 lines
2.3 KiB
TypeScript
import { useState } from "react";
|
|
import { apiPostJson } from "../src/api/client";
|
|
import { PlatformLanguageProvider } from "../src/i18n/LanguageContext";
|
|
import BulkMessageReviewDialog from "../../../govoplan-campaign/webui/src/features/campaigns/review/BulkMessageReviewDialog";
|
|
import { generatedTranslations } from "../../../govoplan-campaign/webui/src/i18n/generatedTranslations";
|
|
import "../../../govoplan-campaign/webui/src/styles/campaign-workspace.css";
|
|
|
|
function job(id: string, overrides: Record<string, unknown> = {}) {
|
|
return { id, build_status: "built", validation_status: "needs_review", recipient_email: `${id}@example.test`, subject: `Frozen ${id}`,
|
|
review_decision: { eligible: true, category_key: "same-attachment-condition", reason_required: true, issue_codes: ["attachment_match_empty"] }, ...overrides };
|
|
}
|
|
|
|
export default function CampaignBulkReviewScenario() {
|
|
const params = new URLSearchParams(window.location.search);
|
|
const [open, setOpen] = useState(false);
|
|
const [buildToken, setBuildToken] = useState("build-one");
|
|
const rows = [...Array.from({ length: params.has("large") ? 205 : 3 }, (_, index) => job(`job-${String(index).padStart(3, "0")}`)),
|
|
job("reviewed", { reviewed: true }), job("blocked", { validation_status: "blocked", review_decision: { eligible: false } }),
|
|
job("expected-exclusion", { validation_status: "excluded", review_decision: { eligible: false } }),
|
|
job("allowed-zero", { validation_status: "warning", review_decision: { eligible: false } }),
|
|
job("other-category", { review_decision: { eligible: true, category_key: "other-condition", reason_required: false, issue_codes: ["address_warning"] } })];
|
|
return <PlatformLanguageProvider preferredLanguageCode={params.get("language") ?? "en"} moduleTranslations={[generatedTranslations]}>
|
|
<main><button onClick={() => setOpen(true)}>Open grouped review</button>
|
|
<button data-testid="replace-build" onClick={() => setBuildToken("build-two")}>Replace build</button>
|
|
{open && <BulkMessageReviewDialog rows={rows} buildToken={buildToken} disabled={params.has("read-only")}
|
|
onClose={() => setOpen(false)} onAccept={async (selection) => {
|
|
await apiPostJson({ apiBaseUrl: "", apiKey: "", accessToken: "" }, "/api/v1/conformance/review-state", selection);
|
|
}} />}
|
|
</main>
|
|
</PlatformLanguageProvider>;
|
|
}
|