Skip to content

Commit b238cda

Browse files
committed
Got the fake filtering working
1 parent b15b064 commit b238cda

File tree

2 files changed

+37
-15
lines changed

2 files changed

+37
-15
lines changed

apps/webapp/app/components/runs/v3/AIFilterInput.tsx

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
import { useFetcher } from "@remix-run/react";
2-
import { useState, useEffect } from "react";
1+
import { useFetcher, useNavigate } from "@remix-run/react";
2+
import { useEffect, useState } from "react";
33
import { AISparkleIcon } from "~/assets/icons/AISparkleIcon";
4-
import { Button } from "~/components/primitives/Buttons";
54
import { Input } from "~/components/primitives/Input";
5+
import { ShortcutKey } from "~/components/primitives/ShortcutKey";
66
import { Spinner } from "~/components/primitives/Spinner";
7-
import { useSearchParams } from "~/hooks/useSearchParam";
7+
import { useEnvironment } from "~/hooks/useEnvironment";
88
import { useOrganization } from "~/hooks/useOrganizations";
99
import { useProject } from "~/hooks/useProject";
10-
import { useEnvironment } from "~/hooks/useEnvironment";
11-
import { type TaskRunListSearchFilters } from "./RunFilters";
10+
import { useSearchParams } from "~/hooks/useSearchParam";
1211
import { objectToSearchParams } from "~/utils/searchParams";
13-
import { ShortcutKey } from "~/components/primitives/ShortcutKey";
12+
import { type TaskRunListSearchFilters } from "./RunFilters";
1413

1514
type AIFilterResult =
1615
| {
@@ -26,32 +25,37 @@ type AIFilterResult =
2625

2726
export function AIFilterInput() {
2827
const [text, setText] = useState("");
29-
const { replace } = useSearchParams();
28+
const navigate = useNavigate();
3029
const organization = useOrganization();
3130
const project = useProject();
3231
const environment = useEnvironment();
3332

3433
const fetcher = useFetcher<AIFilterResult>();
3534

3635
useEffect(() => {
37-
if (fetcher.data?.success) {
36+
if (fetcher.data?.success && fetcher.state === "loading") {
37+
// Clear the input after successful application
38+
setText("");
39+
3840
const searchParams = objectToSearchParams(fetcher.data.filters);
3941
if (!searchParams) {
4042
return;
4143
}
4244

43-
replace(searchParams);
45+
console.log("AI filter success", {
46+
data: fetcher.data,
47+
searchParams: searchParams.toString(),
48+
});
4449

45-
// Clear the input after successful application
46-
setText("");
50+
navigate(`${location.pathname}?${searchParams.toString()}`, { replace: true });
4751

4852
// TODO: Show success message with explanation
4953
console.log(`AI applied filters: ${fetcher.data.explanation}`);
5054
} else if (fetcher.data?.success === false) {
5155
// TODO: Show error with suggestions
5256
console.error(fetcher.data.error, fetcher.data.suggestions);
5357
}
54-
}, [fetcher.data, replace]);
58+
}, [fetcher.data, navigate]);
5559

5660
const isLoading = fetcher.state === "submitting";
5761

apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.ai-filter.tsx

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { z } from "zod";
33
import { requireUserId } from "~/services/session.server";
44
import { EnvironmentParamSchema } from "~/utils/pathBuilder";
55
import { type TaskRunListSearchFilters } from "~/components/runs/v3/RunFilters";
6+
import { findProjectBySlug } from "~/models/project.server";
7+
import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server";
68

79
const RequestSchema = z.object({
810
text: z.string().min(1),
@@ -26,14 +28,30 @@ export async function action({ request, params }: ActionFunctionArgs) {
2628
);
2729
}
2830

31+
const project = await findProjectBySlug(organizationSlug, projectParam, userId);
32+
if (!project) {
33+
throw new Response(undefined, {
34+
status: 404,
35+
statusText: "Project not found",
36+
});
37+
}
38+
39+
const environment = await findEnvironmentBySlug(project.id, envParam, userId);
40+
if (!environment) {
41+
throw new Response(undefined, {
42+
status: 404,
43+
statusText: "Environment not found",
44+
});
45+
}
46+
2947
const { text } = submission.data;
3048

3149
// TODO: Replace this with actual AI processing
3250
// For now, return fake successful data
3351
const fakeFilters: TaskRunListSearchFilters = {
34-
statuses: ["COMPLETED_WITH_ERRORS"],
52+
statuses: ["COMPLETED_WITH_ERRORS", "COMPLETED_SUCCESSFULLY"],
53+
machines: ["small-2x"],
3554
period: "7d",
36-
tags: ["test-tag"],
3755
};
3856

3957
return json<{ success: true; filters: TaskRunListSearchFilters; explanation: string }>({

0 commit comments

Comments
 (0)