diff --git a/apps/web/app/(app)/[emailAccountId]/assistant/ExecutedRulesTable.tsx b/apps/web/app/(app)/[emailAccountId]/assistant/ExecutedRulesTable.tsx
index 10d125f419..224de7582b 100644
--- a/apps/web/app/(app)/[emailAccountId]/assistant/ExecutedRulesTable.tsx
+++ b/apps/web/app/(app)/[emailAccountId]/assistant/ExecutedRulesTable.tsx
@@ -15,9 +15,9 @@ import type { ParsedMessage } from "@/utils/types";
import { ViewEmailButton } from "@/components/ViewEmailButton";
import { ExecutedRuleStatus } from "@prisma/client";
import { FixWithChat } from "@/app/(app)/[emailAccountId]/assistant/FixWithChat";
-import { useAssistantNavigation } from "@/hooks/useAssistantNavigation";
import { useAccount } from "@/providers/EmailAccountProvider";
import { isGoogleProvider } from "@/utils/email/provider-types";
+import { useRuleDialog } from "@/app/(app)/[emailAccountId]/assistant/RuleDialog";
export function EmailCell({
from,
@@ -62,21 +62,19 @@ export function EmailCell({
}
export function RuleCell({
- emailAccountId,
rule,
status,
reason,
message,
setInput,
}: {
- emailAccountId: string;
rule: PendingExecutedRules["executedRules"][number]["rule"];
status: ExecutedRuleStatus;
reason?: string | null;
message: ParsedMessage;
setInput: (input: string) => void;
}) {
- const { createAssistantUrl } = useAssistantNavigation(emailAccountId);
+ const { ruleDialog, RuleDialogComponent } = useRuleDialog();
return (
@@ -104,21 +102,18 @@ export function RuleCell({
{!!rule && (
-
{!!reason && (
-
+
Reason for choosing this rule:
@@ -143,6 +138,7 @@ export function RuleCell({
message={message}
result={{ rule, reason }}
/>
+
);
}
diff --git a/apps/web/app/(app)/[emailAccountId]/assistant/FixWithChat.tsx b/apps/web/app/(app)/[emailAccountId]/assistant/FixWithChat.tsx
index e8187952f9..a6d8f82fcb 100644
--- a/apps/web/app/(app)/[emailAccountId]/assistant/FixWithChat.tsx
+++ b/apps/web/app/(app)/[emailAccountId]/assistant/FixWithChat.tsx
@@ -40,9 +40,6 @@ export function FixWithChat({
const [selectedRuleId, setSelectedRuleId] = useState
(null);
const [explanation, setExplanation] = useState("");
const [showExplanation, setShowExplanation] = useState(false);
- // const { createAssistantUrl } = useAssistantNavigation(emailAccountId);
- // const router = useRouter();
- // const [currentTab] = useQueryState("tab");
const { setOpen } = useSidebar();
diff --git a/apps/web/app/(app)/[emailAccountId]/assistant/History.tsx b/apps/web/app/(app)/[emailAccountId]/assistant/History.tsx
index d7e292a1d2..f3124576ee 100644
--- a/apps/web/app/(app)/[emailAccountId]/assistant/History.tsx
+++ b/apps/web/app/(app)/[emailAccountId]/assistant/History.tsx
@@ -65,7 +65,7 @@ function HistoryTable({
data: PlanHistoryResponse["executedRules"];
totalPages: number;
}) {
- const { userEmail, emailAccountId } = useAccount();
+ const { userEmail } = useAccount();
const { setInput } = useChat();
return (
@@ -98,7 +98,6 @@ function HistoryTable({
();
+
+ const RuleDialogComponent = useCallback(() => {
+ return (
+
+ );
+ }, [ruleDialog.data?.ruleId, ruleDialog.isOpen, ruleDialog.onClose]);
+
+ return { ruleDialog, RuleDialogComponent };
+}
+
export function RuleDialog({
ruleId,
isOpen,
diff --git a/apps/web/app/(app)/[emailAccountId]/assistant/Rules.tsx b/apps/web/app/(app)/[emailAccountId]/assistant/Rules.tsx
index 3e920e602d..ba2bbec109 100644
--- a/apps/web/app/(app)/[emailAccountId]/assistant/Rules.tsx
+++ b/apps/web/app/(app)/[emailAccountId]/assistant/Rules.tsx
@@ -55,7 +55,6 @@ import type { RulesResponse } from "@/app/api/user/rules/route";
import { sortActionsByPriority } from "@/utils/action-sort";
import { inboxZeroLabels } from "@/utils/label";
import { isDefined } from "@/utils/types";
-import { useAssistantNavigation } from "@/hooks/useAssistantNavigation";
import { getActionDisplay } from "@/utils/action-display";
import { RuleDialog } from "./RuleDialog";
import { useDialogState } from "@/hooks/useDialogState";
@@ -86,7 +85,6 @@ export function Rules({
const onCreateRule = () => ruleDialog.onOpen();
const { emailAccountId, provider } = useAccount();
- const { createAssistantUrl } = useAssistantNavigation(emailAccountId);
const { executeAsync: setRuleEnabled } = useAction(
setRuleEnabledAction.bind(null, emailAccountId),
{
@@ -392,11 +390,10 @@ export function Rules({
emailAccountId,
"/cold-email-blocker",
)
- : createAssistantUrl({
- tab: "history",
- ruleId: rule.id,
- path: "/automation?tab=history",
- })
+ : prefixPath(
+ emailAccountId,
+ `/automation?tab=history&ruleId=${rule.id}`,
+ )
}
target={
isColdEmailBlocker ? "_blank" : undefined
diff --git a/apps/web/components/HoverCard.tsx b/apps/web/components/HoverCard.tsx
index 89f38a4019..0081254ca9 100644
--- a/apps/web/components/HoverCard.tsx
+++ b/apps/web/components/HoverCard.tsx
@@ -10,7 +10,7 @@ export function HoverCard(props: {
className?: string;
}) {
return (
-
+
{props.children}
{props.content}
diff --git a/apps/web/hooks/useAssistantNavigation.ts b/apps/web/hooks/useAssistantNavigation.ts
deleted file mode 100644
index 7378686f90..0000000000
--- a/apps/web/hooks/useAssistantNavigation.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { useCallback } from "react";
-import { useSearchParams } from "next/navigation";
-import { createSerializer, parseAsString } from "nuqs";
-import { prefixPath } from "@/utils/path";
-
-const assistantSearchParamsSerializer = createSerializer({
- tab: parseAsString,
- ruleId: parseAsString,
- chatId: parseAsString,
- mode: parseAsString,
- page: parseAsString,
- search: parseAsString,
- custom: parseAsString,
- input: parseAsString,
-});
-
-export function useAssistantNavigation(emailAccountId: string) {
- const searchParams = useSearchParams();
-
- const createAssistantUrl = useCallback(
- (params: {
- tab?: string;
- ruleId?: string;
- path: `/${string}`;
- input?: string;
- }) => {
- return prefixPath(
- emailAccountId,
- `/assistant${assistantSearchParamsSerializer(searchParams, params)}`,
- );
- },
- [emailAccountId, searchParams],
- );
-
- return { createAssistantUrl };
-}
diff --git a/version.txt b/version.txt
index 59a8865e80..c97373cd38 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-v2.9.14
+v2.9.15