From 39a1408ffb83eb32fd96fdcdd291967f6be0f032 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Fri, 14 Feb 2025 18:58:52 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=B8=20Persist=20time=20filter=20state?= =?UTF-8?q?=20in=20URL=20in=20results=20tab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/builder/package.json | 36 ++++++++-------- .../results/components/ResultsPage.tsx | 39 +++++++++++++++--- apps/builder/src/pages/_app.tsx | 34 ++++++++------- bun.lockb | Bin 1235552 -> 1235704 bytes yarn.lock | 16 +++---- 5 files changed, 77 insertions(+), 48 deletions(-) diff --git a/apps/builder/package.json b/apps/builder/package.json index cea1cec55..c7603c741 100644 --- a/apps/builder/package.json +++ b/apps/builder/package.json @@ -29,22 +29,31 @@ "@trpc/next": "10.45.2", "@trpc/react-query": "10.45.2", "@trpc/server": "10.45.2", + "@typebot.io/blocks-bubbles": "workspace:*", "@typebot.io/blocks-core": "workspace:*", "@typebot.io/blocks-inputs": "workspace:*", + "@typebot.io/blocks-integrations": "workspace:*", "@typebot.io/blocks-logic": "workspace:*", "@typebot.io/bot-engine": "workspace:*", + "@typebot.io/chat-session": "workspace:*", + "@typebot.io/conditions": "workspace:*", "@typebot.io/credentials": "workspace:*", "@typebot.io/emails": "workspace:*", "@typebot.io/env": "workspace:*", + "@typebot.io/events": "workspace:*", + "@typebot.io/groups": "workspace:*", + "@typebot.io/js": "workspace:*", + "@typebot.io/logs": "workspace:*", "@typebot.io/nextjs": "workspace:*", + "@typebot.io/settings": "workspace:*", "@typebot.io/theme": "workspace:*", "@typebot.io/transactional": "workspace:*", "@typebot.io/trpc-openapi": "workspace:*", "@typebot.io/typebot": "workspace:*", - "@typebot.io/whatsapp": "workspace:*", "@typebot.io/ui": "workspace:*", - "@typebot.io/chat-session": "workspace:*", - "@typebot.io/logs": "workspace:*", + "@typebot.io/whatsapp": "workspace:*", + "@typebot.io/workspaces": "workspace:*", + "@typebot.io/zod": "workspace:*", "@udecode/plate-basic-marks": "30.5.3", "@udecode/plate-common": "30.4.5", "@udecode/plate-core": "30.4.5", @@ -56,9 +65,12 @@ "@uiw/react-codemirror": "4.21.24", "@upstash/ratelimit": "0.4.3", "@use-gesture/react": "10.2.27", + "ai": "4.1.15", "browser-image-compression": "2.0.2", "canvas-confetti": "1.6.0", "codemirror": "6.0.1", + "date-fns": "2.30.0", + "date-fns-tz": "2.0.0", "deep-object-diff": "1.1.9", "dequal": "2.0.3", "emojilib": "3.0.10", @@ -75,7 +87,7 @@ "nextjs-cors": "2.1.2", "nodemailer": "6.9.15", "nprogress": "0.2.0", - "nuqs": "^1.19.3", + "nuqs": "^2.3.2", "openai": "4.81.0", "papaparse": "5.4.1", "partysocket": "1.0.2", @@ -93,21 +105,9 @@ "tinycolor2": "1.6.0", "unsplash-js": "7.0.18", "use-debounce": "9.0.4", - "zod-validation-error": "3.4.0", - "zustand": "4.5.0", - "@typebot.io/workspaces": "workspace:*", - "@typebot.io/blocks-integrations": "workspace:*", - "@typebot.io/groups": "workspace:*", - "@typebot.io/zod": "workspace:*", - "@typebot.io/settings": "workspace:*", - "@typebot.io/js": "workspace:*", - "@typebot.io/conditions": "workspace:*", - "@typebot.io/blocks-bubbles": "workspace:*", - "@typebot.io/events": "workspace:*", "zod": "3.23.8", - "ai": "4.1.15", - "date-fns": "2.30.0", - "date-fns-tz": "2.0.0" + "zod-validation-error": "3.4.0", + "zustand": "4.5.0" }, "devDependencies": { "@playwright/test": "1.45.2", diff --git a/apps/builder/src/features/results/components/ResultsPage.tsx b/apps/builder/src/features/results/components/ResultsPage.tsx index 2fd088e10..fbacaf536 100644 --- a/apps/builder/src/features/results/components/ResultsPage.tsx +++ b/apps/builder/src/features/results/components/ResultsPage.tsx @@ -2,7 +2,7 @@ import { Seo } from "@/components/Seo"; import { AnalyticsGraphContainer } from "@/features/analytics/components/AnalyticsGraphContainer"; import { defaultTimeFilter, - type timeFilterValues, + timeFilterValues, } from "@/features/analytics/constants"; import { TypebotHeader } from "@/features/editor/components/TypebotHeader"; import { TypebotNotFoundPage } from "@/features/editor/components/TypebotNotFoundPage"; @@ -20,7 +20,8 @@ import { } from "@chakra-ui/react"; import Link from "next/link"; import { useRouter } from "next/router"; -import { useMemo, useState } from "react"; +import { useQueryState } from "nuqs"; +import { useMemo } from "react"; import { ResultsProvider } from "../ResultsProvider"; import { ResultsTableContainer } from "./ResultsTableContainer"; @@ -38,8 +39,16 @@ export const ResultsPage = () => { router.pathname.endsWith("analytics") ? "#f4f5f8" : "white", router.pathname.endsWith("analytics") ? "gray.900" : "gray.950", ); - const [timeFilter, setTimeFilter] = - useState<(typeof timeFilterValues)[number]>(defaultTimeFilter); + const [timeFilter, setTimeFilter] = useQueryState< + (typeof timeFilterValues)[number] + >("timeFilter", { + defaultValue: defaultTimeFilter, + parse: (val) => { + if (timeFilterValues.includes(val as (typeof timeFilterValues)[number])) + return val as (typeof timeFilterValues)[number]; + return null; + }, + }); const { data: { stats } = {}, @@ -91,7 +100,16 @@ export const ResultsPage = () => { colorScheme={!isAnalytics ? "orange" : "gray"} variant={!isAnalytics ? "outline" : "ghost"} size="sm" - href={`/typebots/${typebot?.id}/results`} + href={{ + pathname: "/typebots/[typebotId]/results", + query: { + typebotId: publishedTypebot?.typebotId, + timeFilter: + timeFilter && timeFilter !== defaultTimeFilter + ? timeFilter + : undefined, + }, + }} > Submissions {(stats?.totalStarts ?? 0) > 0 && ( @@ -104,7 +122,16 @@ export const ResultsPage = () => { as={Link} colorScheme={isAnalytics ? "orange" : "gray"} variant={isAnalytics ? "outline" : "ghost"} - href={`/typebots/${typebot?.id}/results/analytics`} + href={{ + pathname: "/typebots/[typebotId]/results/analytics", + query: { + typebotId: publishedTypebot?.typebotId, + timeFilter: + timeFilter && timeFilter !== defaultTimeFilter + ? timeFilter + : undefined, + }, + }} size="sm" > Analytics diff --git a/apps/builder/src/pages/_app.tsx b/apps/builder/src/pages/_app.tsx index b3a3845f3..40a364750 100644 --- a/apps/builder/src/pages/_app.tsx +++ b/apps/builder/src/pages/_app.tsx @@ -19,6 +19,7 @@ import "@/assets/styles/routerProgressBar.css"; import "@/assets/styles/plate.css"; import "@/assets/styles/resultsTable.css"; import "@/assets/styles/custom.css"; +import { NuqsAdapter } from "nuqs/adapters/next/pages"; import { Toaster } from "sonner"; const { ToastContainer, toast } = createStandaloneToast(customTheme); @@ -57,22 +58,23 @@ const App = ({ Component, pageProps }: AppProps) => { return ( - - - - - - - - - {!router.pathname.endsWith("edit") && isCloudProdInstance() && ( - - )} - - - - - + + + + + + + + + + {!router.pathname.endsWith("edit") && + isCloudProdInstance() && } + + + + + + ); }; diff --git a/bun.lockb b/bun.lockb index fa37873806e7c2ee7314b28fb4f4f7ebb02f75df..b64bbbf809abb8e8b59e1c7741917979534f1e4f 100755 GIT binary patch delta 17196 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 I(}6qw3%s%avj6}9 delta 17402 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 diff --git a/yarn.lock b/yarn.lock index 8d7d3309c..a6ff444e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,6 +1,6 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 -# bun ./bun.lockb --hash: 9466C2599366FAA0-5dd6468fb1f960db-DB649CF63EAF77B7-e209365ef5d5cce2 +# bun ./bun.lockb --hash: 60076E2239452BF7-501ca8e3a13d16c9-77427B9CE7857D67-376434de1d26e1ae "@ai-sdk/anthropic@1.1.6": @@ -10548,7 +10548,7 @@ buffer-from@^1.0.0: nextjs-cors "2.1.2" nodemailer "6.9.15" nprogress "0.2.0" - nuqs "^1.19.3" + nuqs "^2.3.2" openai "4.81.0" papaparse "5.4.1" partysocket "1.0.2" @@ -17855,7 +17855,7 @@ netmask@^2.0.2: resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz" integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== -"next@12.x || 13.x || 14.x", next@14.2.13, "next@>=13.4 <14.0.2 || ^14.0.3", "next@^12.2.5 || ^13 || ^14": +"next@12.x || 13.x || 14.x", next@14.2.13, "next@^12.2.5 || ^13 || ^14": version "14.2.13" resolved "https://registry.npmjs.org/next/-/next-14.2.13.tgz" integrity sha512-BseY9YNw8QJSwLYD7hlZzl6QVDoSFHL/URN5K64kVEVpCsSOWeyjbIGK+dZUaRViHTaMQX8aqmnn0PHBbGZezg== @@ -18152,10 +18152,10 @@ nth-check@^2.0.0, nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -nuqs@^1.19.3: - version "1.20.0" - resolved "https://registry.npmjs.org/nuqs/-/nuqs-1.20.0.tgz" - integrity sha512-nGVfv7eWMNxAzOJ9n8ARTo6ObqeEr1ETYZ+dIMCg/VfGUoZoPrqyTOndIvQIgUzK3pIC41mTXg10JJxh9ziEhw== +nuqs@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/nuqs/-/nuqs-2.3.2.tgz" + integrity sha512-WeG78r8e3a30JY3P8npldvNiAZwGIk499lnpeRs3UYA3PpSvs2/PLunKGgjuF/JMw4BOowD3K2xgGEOZ3PeODA== dependencies: mitt "^3.0.1" @@ -19276,7 +19276,7 @@ rc9@^2.1.2: defu "^6.1.4" destr "^2.0.3" -react@*, "react@16.10.2 - 18", react@18.2.0, react@18.x, "react@>= 16.8.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0", "react@>= 18", react@>=16, react@>=16.14.0, react@>=16.6.0, react@>=16.8, react@>=16.8.1, "react@>=16.x <=18.x", react@>=18, "react@>=18.0.0 || >=19.0.0", react@>=18.2.0, "react@^15.5.4 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.14.0 || 17.x || 18.x || 19.x", "react@^16.14.0 || ^17.0.1 || ^18.1.0", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.4 || ^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18", "react@^18.0 || ^19.0 || ^19.0.0-rc", react@^18.2.0, "react@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0": +react@*, "react@16.10.2 - 18", react@18.2.0, react@18.x, "react@>= 16.8.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0", "react@>= 18", react@>=16, react@>=16.14.0, react@>=16.6.0, react@>=16.8, react@>=16.8.1, "react@>=16.x <=18.x", react@>=18, "react@>=18.0.0 || >=19.0.0", react@>=18.2.0, "react@>=18.2.0 || ^19.0.0-0", "react@^15.5.4 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.14.0 || 17.x || 18.x || 19.x", "react@^16.14.0 || ^17.0.1 || ^18.1.0", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.4 || ^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18", "react@^18.0 || ^19.0 || ^19.0.0-rc", react@^18.2.0, "react@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0": version "18.2.0" resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==