From 296e19ddad40a175fdf81918de7eac80132bedf1 Mon Sep 17 00:00:00 2001 From: Olga Date: Wed, 29 May 2024 11:11:30 +0200 Subject: [PATCH 01/10] feat: add analitics classes to btns, initial url handler, cal submiting update, redirect page --- src/app/(website)/layout.tsx | 9 +++++ src/app/(website)/redirect/page.tsx | 23 +++++++++++ .../pages/enterprise/benefits/benefits.tsx | 2 +- src/components/pages/enterprise/hero/hero.tsx | 2 +- src/components/pages/home/hero/hero.tsx | 2 +- src/components/pages/pricing/plans/plans.tsx | 4 +- src/components/shared/calendar/calendar.tsx | 40 ++++++++++++++++++- 7 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 src/app/(website)/redirect/page.tsx diff --git a/src/app/(website)/layout.tsx b/src/app/(website)/layout.tsx index 200b6282..cc8dc906 100644 --- a/src/app/(website)/layout.tsx +++ b/src/app/(website)/layout.tsx @@ -64,6 +64,12 @@ async function RootLayout({ children }: { children: React.ReactNode }) { document.head.appendChild(script); } + function loadHandleInitialPageUrl() { + if (!localStorage.getItem('initialPageUrl')) { + localStorage.setItem('initialPageUrl', window.location.href); + } + } + void 0 === window._axcb && (window._axcb = []); window._axcb.push(function (axeptio) { axeptio.on("cookies:complete", function (choices) { @@ -76,6 +82,9 @@ async function RootLayout({ children }: { children: React.ReactNode }) { if (choices.clearbit) { loadClearbit(); } + if (choices.initialPageUrl) { + loadHandleInitialPageUrl(); + } }); }); `} diff --git a/src/app/(website)/redirect/page.tsx b/src/app/(website)/redirect/page.tsx new file mode 100644 index 00000000..4124c1b3 --- /dev/null +++ b/src/app/(website)/redirect/page.tsx @@ -0,0 +1,23 @@ +'use client'; + +import { useRouter, useSearchParams } from 'next/navigation'; + +import { useEffect } from 'react'; + +function Redirect() { + const router = useRouter(); + const searchParams = useSearchParams(); + const url = searchParams.get('url'); + + useEffect(() => { + document.body.innerHTML = ''; + document.body.style.backgroundColor = 'white'; + if (url) { + router.push(url); + } + }, [url, router]); + + return null; +} + +export default Redirect; diff --git a/src/components/pages/enterprise/benefits/benefits.tsx b/src/components/pages/enterprise/benefits/benefits.tsx index f26fd248..6d45611a 100644 --- a/src/components/pages/enterprise/benefits/benefits.tsx +++ b/src/components/pages/enterprise/benefits/benefits.tsx @@ -48,7 +48,7 @@ function Benefits() { applications.

diff --git a/src/components/shared/calendar/calendar.tsx b/src/components/shared/calendar/calendar.tsx index 4b1223c7..1cd9511d 100644 --- a/src/components/shared/calendar/calendar.tsx +++ b/src/components/shared/calendar/calendar.tsx @@ -1,12 +1,50 @@ 'use client'; +import { useEffect, useState } from 'react'; + import Cal from '@calcom/embed-react'; +/* eslint-disable */ function Calendar({ calLink }: { calLink: string }) { + const [config, setConfig] = useState({ + theme: 'dark', + initialPagePath: '', + 'utm-campaign': '', + 'utm-medium': '', + 'utm-source': '', + 'utm-content': '', + 'utm-term': '', + }); + + useEffect(() => { + const initialPageUrl = localStorage.getItem('initialPageUrl'); + if (initialPageUrl) { + const url = new URL(initialPageUrl); + const urlParams = new URLSearchParams(url.search); + + setConfig((prev) => ({ + ...prev, + initialPagePath: url.pathname, + 'utm-campaign': urlParams.get('utm_campaign') || '', + 'utm-medium': urlParams.get('utm_medium') || '', + 'utm-source': urlParams.get('utm_source') || '', + 'utm-content': urlParams.get('utm_content') || '', + 'utm-term': urlParams.get('utm_term') || '', + })); + } + }, []); + return (
- + + {/* Only for review and test reasons */} + {/* */}
); From 4e438e2435d26e985fe8ff7934789643619ec96f Mon Sep 17 00:00:00 2001 From: Olga Date: Wed, 29 May 2024 11:14:58 +0200 Subject: [PATCH 02/10] fix: state typing --- src/components/shared/calendar/calendar.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/shared/calendar/calendar.tsx b/src/components/shared/calendar/calendar.tsx index 1cd9511d..f892c14d 100644 --- a/src/components/shared/calendar/calendar.tsx +++ b/src/components/shared/calendar/calendar.tsx @@ -2,11 +2,12 @@ import { useEffect, useState } from 'react'; +import type { PrefillAndIframeAttrsConfig } from '@calcom/embed-core'; import Cal from '@calcom/embed-react'; /* eslint-disable */ function Calendar({ calLink }: { calLink: string }) { - const [config, setConfig] = useState({ + const [config, setConfig] = useState({ theme: 'dark', initialPagePath: '', 'utm-campaign': '', From 19dae1f357fe6df3b5a4643721035d3c0ac610dd Mon Sep 17 00:00:00 2001 From: Olga Date: Wed, 29 May 2024 11:23:47 +0200 Subject: [PATCH 03/10] fix: redirect page build error --- src/app/(website)/redirect/page.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/app/(website)/redirect/page.ts diff --git a/src/app/(website)/redirect/page.ts b/src/app/(website)/redirect/page.ts new file mode 100644 index 00000000..4124c1b3 --- /dev/null +++ b/src/app/(website)/redirect/page.ts @@ -0,0 +1,23 @@ +'use client'; + +import { useRouter, useSearchParams } from 'next/navigation'; + +import { useEffect } from 'react'; + +function Redirect() { + const router = useRouter(); + const searchParams = useSearchParams(); + const url = searchParams.get('url'); + + useEffect(() => { + document.body.innerHTML = ''; + document.body.style.backgroundColor = 'white'; + if (url) { + router.push(url); + } + }, [url, router]); + + return null; +} + +export default Redirect; From 27f3572cfb909ac1491ca21a86a08d3ffafd891a Mon Sep 17 00:00:00 2001 From: Olga Date: Wed, 29 May 2024 11:24:33 +0200 Subject: [PATCH 04/10] fix: redirect page errors --- src/app/(website)/redirect/page.tsx | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 src/app/(website)/redirect/page.tsx diff --git a/src/app/(website)/redirect/page.tsx b/src/app/(website)/redirect/page.tsx deleted file mode 100644 index 4124c1b3..00000000 --- a/src/app/(website)/redirect/page.tsx +++ /dev/null @@ -1,23 +0,0 @@ -'use client'; - -import { useRouter, useSearchParams } from 'next/navigation'; - -import { useEffect } from 'react'; - -function Redirect() { - const router = useRouter(); - const searchParams = useSearchParams(); - const url = searchParams.get('url'); - - useEffect(() => { - document.body.innerHTML = ''; - document.body.style.backgroundColor = 'white'; - if (url) { - router.push(url); - } - }, [url, router]); - - return null; -} - -export default Redirect; From cfe1e2bc98acce91d9951b6df4164ca5786ac70f Mon Sep 17 00:00:00 2001 From: Olga Date: Wed, 29 May 2024 12:40:16 +0200 Subject: [PATCH 05/10] fix: add suspense --- .../(website)/redirect/{page.ts => page.tsx} | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) rename src/app/(website)/redirect/{page.ts => page.tsx} (52%) diff --git a/src/app/(website)/redirect/page.ts b/src/app/(website)/redirect/page.tsx similarity index 52% rename from src/app/(website)/redirect/page.ts rename to src/app/(website)/redirect/page.tsx index 4124c1b3..8f635212 100644 --- a/src/app/(website)/redirect/page.ts +++ b/src/app/(website)/redirect/page.tsx @@ -2,22 +2,32 @@ import { useRouter, useSearchParams } from 'next/navigation'; -import { useEffect } from 'react'; +import { Suspense, useEffect } from 'react'; -function Redirect() { +function RedirectComponent() { const router = useRouter(); const searchParams = useSearchParams(); const url = searchParams.get('url'); useEffect(() => { - document.body.innerHTML = ''; - document.body.style.backgroundColor = 'white'; if (url) { router.push(url); } }, [url, router]); - return null; + return ( +
+ Redirect +
+ ); +} + +function Redirect() { + return ( + + + + ); } export default Redirect; From ec1a0a288ccf1e245c1c2b56bc5b180054188068 Mon Sep 17 00:00:00 2001 From: Olga Date: Fri, 31 May 2024 12:29:33 +0200 Subject: [PATCH 06/10] refactor: separate cal config --- src/components/shared/calendar/calendar.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/shared/calendar/calendar.tsx b/src/components/shared/calendar/calendar.tsx index f892c14d..8bea80b6 100644 --- a/src/components/shared/calendar/calendar.tsx +++ b/src/components/shared/calendar/calendar.tsx @@ -7,8 +7,8 @@ import Cal from '@calcom/embed-react'; /* eslint-disable */ function Calendar({ calLink }: { calLink: string }) { - const [config, setConfig] = useState({ - theme: 'dark', + // TODO: in case of more tasks with getting utm from url, move the logic into hooks + const [analyticsData, setAnalyticsData] = useState({ initialPagePath: '', 'utm-campaign': '', 'utm-medium': '', @@ -23,7 +23,7 @@ function Calendar({ calLink }: { calLink: string }) { const url = new URL(initialPageUrl); const urlParams = new URLSearchParams(url.search); - setConfig((prev) => ({ + setAnalyticsData((prev) => ({ ...prev, initialPagePath: url.pathname, 'utm-campaign': urlParams.get('utm_campaign') || '', @@ -41,7 +41,8 @@ function Calendar({ calLink }: { calLink: string }) { {/* Only for review and test reasons */} From bbc8e615d6faa7c67743631303a1ed0f75bc0236 Mon Sep 17 00:00:00 2001 From: Olga Date: Tue, 4 Jun 2024 11:28:38 +0200 Subject: [PATCH 07/10] feat: exclude redirect page from robots.txt and sitemap.txt --- next-sitemap.config.js | 9 +++++++++ src/app/(website)/redirect/page.tsx | 6 ++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/next-sitemap.config.js b/next-sitemap.config.js index 171800da..2294842c 100644 --- a/next-sitemap.config.js +++ b/next-sitemap.config.js @@ -1,4 +1,13 @@ module.exports = { siteUrl: process.env.NEXT_PUBLIC_DEFAULT_SITE_URL || 'http://localhost:3000', generateRobotsTxt: true, + exclude: ['/redirect', '/redirect/*'], + robotsTxtOptions: { + policies: [ + { + userAgent: '*', + disallow: ['/redirect', '/redirect/*'], + }, + ], + }, }; diff --git a/src/app/(website)/redirect/page.tsx b/src/app/(website)/redirect/page.tsx index 8f635212..15dd7f07 100644 --- a/src/app/(website)/redirect/page.tsx +++ b/src/app/(website)/redirect/page.tsx @@ -4,6 +4,8 @@ import { useRouter, useSearchParams } from 'next/navigation'; import { Suspense, useEffect } from 'react'; +import LoadingIcon from '@/svgs/icons/loading.inline.svg'; + function RedirectComponent() { const router = useRouter(); const searchParams = useSearchParams(); @@ -16,8 +18,8 @@ function RedirectComponent() { }, [url, router]); return ( -
- Redirect +
+
); } From be77a1c750dd42251f49e5317b2e0bb35a55cab4 Mon Sep 17 00:00:00 2001 From: Olga Date: Tue, 4 Jun 2024 15:20:21 +0200 Subject: [PATCH 08/10] refactor: heigth of page, button text --- src/app/(website)/redirect/page.tsx | 2 +- src/components/pages/pricing/plans/plans.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/(website)/redirect/page.tsx b/src/app/(website)/redirect/page.tsx index 15dd7f07..7577917f 100644 --- a/src/app/(website)/redirect/page.tsx +++ b/src/app/(website)/redirect/page.tsx @@ -18,7 +18,7 @@ function RedirectComponent() { }, [url, router]); return ( -
+
); diff --git a/src/components/pages/pricing/plans/plans.tsx b/src/components/pages/pricing/plans/plans.tsx index bd84b454..49cd5aad 100644 --- a/src/components/pages/pricing/plans/plans.tsx +++ b/src/components/pages/pricing/plans/plans.tsx @@ -38,7 +38,7 @@ function Plans() { size="lg" theme="red-filled" > - Redirect with affilate + Get a quote
From 7b046145449332662125d344a6fb2a21bf6a0b5f Mon Sep 17 00:00:00 2001 From: iatopilskii Date: Thu, 18 Jul 2024 14:35:17 +0200 Subject: [PATCH 09/10] chore: change cal.com account --- src/components/shared/calendar/calendar.tsx | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/components/shared/calendar/calendar.tsx b/src/components/shared/calendar/calendar.tsx index 8bea80b6..549eb80e 100644 --- a/src/components/shared/calendar/calendar.tsx +++ b/src/components/shared/calendar/calendar.tsx @@ -38,15 +38,7 @@ function Calendar({ calLink }: { calLink: string }) { return (
- - {/* Only for review and test reasons */} - {/* */} +
); From 8e39efb8f12b5e972babd22e9be5441ae660a2ca Mon Sep 17 00:00:00 2001 From: iatopilskii Date: Thu, 18 Jul 2024 14:53:30 +0200 Subject: [PATCH 10/10] chore: add analytics data to calendar component --- src/components/shared/calendar/calendar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/shared/calendar/calendar.tsx b/src/components/shared/calendar/calendar.tsx index 549eb80e..4143db52 100644 --- a/src/components/shared/calendar/calendar.tsx +++ b/src/components/shared/calendar/calendar.tsx @@ -38,7 +38,7 @@ function Calendar({ calLink }: { calLink: string }) { return (
- +
);