Refactor campaign recipient and review presentation

This commit is contained in:
2026-07-31 02:48:56 +02:00
parent 5f7503598c
commit e689fdf495
30 changed files with 2175 additions and 1977 deletions
@@ -1,6 +1,6 @@
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { Ban, ExternalLink, Eye, Pause, Play, RotateCcw, Send, ShieldCheck } from "lucide-react";
import { useSearchParams } from "react-router-dom";
import { useSearchParams } from "react-router";
import type { ApiSettings, CampaignListItem } from "../../types";
import {
cancelCampaign,
@@ -502,7 +502,7 @@ export default function OperatorQueuePage({ settings, auth }: {settings: ApiSett
});
const columns = useMemo<DataGridColumn<OperatorRow>[]>(() => [
{ id: "campaign", header: "i18n:govoplan-campaign.campaign.69390e16", width: "minmax(260px, 1.2fr)", sticky: "start", sortable: true, filterable: true, value: (row) => row.campaign.name },
{ id: "campaign", header: "i18n:govoplan-campaign.campaign.69390e16", width: "minmax(260px, 1.2fr)", maxWidth: 680, sticky: "start", sortable: true, filterable: true, value: (row) => row.campaign.name },
{ id: "status", header: "i18n:govoplan-campaign.status.bae7d5be", width: 145, sortable: true, filterable: true, render: (row) => <StatusBadge status={row.campaign.status} />, value: (row) => row.campaign.status },
{
id: "version",
@@ -728,6 +728,7 @@ export default function OperatorQueuePage({ settings, auth }: {settings: ApiSett
header: "i18n:govoplan-campaign.last_result.110b888b",
width: "minmax(220px, 1fr)",
minWidth: 200,
maxWidth: 720,
resizable: true,
render: (job) => {
const result = durableResultText(job.last_error) ?? deliveryResultSummary(job);