more internal polish, resilient workers

This commit is contained in:
2026-02-09 18:32:34 -06:00
parent 588b319fec
commit e31ecb781b
62 changed files with 9872 additions and 584 deletions

View File

@@ -1,4 +1,4 @@
import { Link } from "react-router-dom";
import { Link, useSearchParams } from "react-router-dom";
import { useEnforcements } from "@/hooks/useEvents";
import { useEnforcementStream } from "@/hooks/useEnforcementStream";
import { EnforcementStatus } from "@/api";
@@ -44,14 +44,20 @@ const STATUS_OPTIONS = [
];
export default function EnforcementsPage() {
const [searchParams] = useSearchParams();
// Initialize filters from URL query parameters
const [page, setPage] = useState(1);
const pageSize = 50;
const [searchFilters, setSearchFilters] = useState({
rule: "",
trigger: "",
event: "",
rule: searchParams.get("rule_ref") || "",
trigger: searchParams.get("trigger_ref") || "",
event: searchParams.get("event") || "",
});
const [selectedStatuses, setSelectedStatuses] = useState<string[]>(() => {
const status = searchParams.get("status");
return status ? [status] : [];
});
const [selectedStatuses, setSelectedStatuses] = useState<string[]>([]);
// Debounced filter state for API calls
const [debouncedFilters, setDebouncedFilters] = useState(searchFilters);

View File

@@ -1,5 +1,5 @@
import { useState, useCallback } from "react";
import { Link } from "react-router-dom";
import { Link, useSearchParams } from "react-router-dom";
import { useQueryClient } from "@tanstack/react-query";
import { useEvents } from "@/hooks/useEvents";
import {
@@ -9,9 +9,12 @@ import {
import type { EventSummary } from "@/api";
export default function EventsPage() {
const [searchParams] = useSearchParams();
const queryClient = useQueryClient();
const [page, setPage] = useState(1);
const [triggerFilter, setTriggerFilter] = useState<string>("");
const [triggerFilter, setTriggerFilter] = useState<string>(
searchParams.get("trigger_ref") || "",
);
const pageSize = 50;
// Set up WebSocket for real-time event updates with stable callback

View File

@@ -1,4 +1,4 @@
import { Link } from "react-router-dom";
import { Link, useSearchParams } from "react-router-dom";
import { useExecutions } from "@/hooks/useExecutions";
import { useExecutionStream } from "@/hooks/useExecutionStream";
import { ExecutionStatus } from "@/api";
@@ -51,16 +51,22 @@ const STATUS_OPTIONS = [
];
export default function ExecutionsPage() {
const [searchParams] = useSearchParams();
// Initialize filters from URL query parameters
const [page, setPage] = useState(1);
const pageSize = 50;
const [searchFilters, setSearchFilters] = useState({
pack: "",
rule: "",
action: "",
trigger: "",
executor: "",
pack: searchParams.get("pack_name") || "",
rule: searchParams.get("rule_ref") || "",
action: searchParams.get("action_ref") || "",
trigger: searchParams.get("trigger_ref") || "",
executor: searchParams.get("executor") || "",
});
const [selectedStatuses, setSelectedStatuses] = useState<string[]>(() => {
const status = searchParams.get("status");
return status ? [status] : [];
});
const [selectedStatuses, setSelectedStatuses] = useState<string[]>([]);
// Debounced filter state for API calls
const [debouncedFilters, setDebouncedFilters] = useState(searchFilters);