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