From 0edff93e46c4409ce8e9b87af90f3255c3fdd163 Mon Sep 17 00:00:00 2001 From: Francesco Sansalvadore Date: Tue, 9 May 2023 08:50:57 +0200 Subject: [PATCH 1/2] chore: rename telemetryProps --- apps/docs/pages/_app.tsx | 8 ++++---- apps/www/components/Features/index.tsx | 14 +++++++------- apps/www/components/Hero.tsx | 10 +++++----- apps/www/lib/gaEvents.ts | 10 +++++----- apps/www/lib/telemetry.ts | 10 +++------- apps/www/pages/_app.tsx | 8 ++++---- ...oogleAnalyticsProps.ts => useTelemetryProps.ts} | 2 +- .../SQLEditor/SQLTemplates/SQLTemplates.tsx | 8 ++++---- .../SQLEditor/UtilityPanel/ResultsDropdown.tsx | 8 ++++---- studio/components/ui/PageTelemetry.tsx | 8 ++++---- studio/lib/auth.tsx | 6 +++--- studio/lib/telemetry.ts | 6 +++--- 12 files changed, 47 insertions(+), 51 deletions(-) rename packages/common/hooks/{useGoogleAnalyticsProps.ts => useTelemetryProps.ts} (85%) diff --git a/apps/docs/pages/_app.tsx b/apps/docs/pages/_app.tsx index e0ad82b5602..7234e438f59 100644 --- a/apps/docs/pages/_app.tsx +++ b/apps/docs/pages/_app.tsx @@ -1,6 +1,6 @@ import { createBrowserSupabaseClient } from '@supabase/auth-helpers-nextjs' import { SessionContextProvider } from '@supabase/auth-helpers-react' -import { AuthProvider, ThemeProvider, useGoogleAnalyticsProps } from 'common' +import { AuthProvider, ThemeProvider, useTelemetryProps } from 'common' import { useRouter } from 'next/router' import { useEffect, useState } from 'react' import ReactMarkdown from 'react-markdown' @@ -21,7 +21,7 @@ import '../styles/prism-okaidia.scss' function MyApp({ Component, pageProps }: AppPropsWithLayout) { const router = useRouter() - const googleAnalyticsProps = useGoogleAnalyticsProps() + const telemetryProps = useTelemetryProps() const [supabase] = useState(() => IS_PLATFORM || LOCAL_SUPABASE ? createBrowserSupabaseClient() : undefined @@ -33,8 +33,8 @@ function MyApp({ Component, pageProps }: AppPropsWithLayout) { title: document.title, route, ga: { - screen_resolution: googleAnalyticsProps?.screenResolution, - language: googleAnalyticsProps?.language, + screen_resolution: telemetryProps?.screenResolution, + language: telemetryProps?.language, session_id: BrowserTabTracker.sessionId, }, }) diff --git a/apps/www/components/Features/index.tsx b/apps/www/components/Features/index.tsx index 4b291e78767..ab6510718e5 100644 --- a/apps/www/components/Features/index.tsx +++ b/apps/www/components/Features/index.tsx @@ -5,43 +5,43 @@ import gaEvents from '~/lib/gaEvents' import SectionContainer from '../Layouts/SectionContainer' import ProductIcon from '../ProductIcon' import TextLink from '../TextLink' -import { useGoogleAnalyticsProps } from 'common/hooks/useGoogleAnalyticsProps' +import { useTelemetryProps } from 'common/hooks/useTelemetryProps' import { useRouter } from 'next/router' const Features = () => { const router = useRouter() - const googleAnalyticsProps = useGoogleAnalyticsProps() + const telemetryProps = useTelemetryProps() const sendTelemetryEvent = async (product: any) => { switch (product) { case 'Database': return await Telemetry.sendEvent( gaEvents['www_hp_subhero_products_database'], - googleAnalyticsProps, + telemetryProps, router ) case 'Authentication': return await Telemetry.sendEvent( gaEvents['www_hp_subhero_products_auth'], - googleAnalyticsProps, + telemetryProps, router ) case 'Storage': return await Telemetry.sendEvent( gaEvents['www_hp_subhero_products_storage'], - googleAnalyticsProps, + telemetryProps, router ) case 'Edge Functions': return await Telemetry.sendEvent( gaEvents['www_hp_subhero_products_edgeFunctions'], - googleAnalyticsProps, + telemetryProps, router ) case 'Realtime': return await Telemetry.sendEvent( gaEvents['www_hp_subhero_products_realtime'], - googleAnalyticsProps, + telemetryProps, router ) } diff --git a/apps/www/components/Hero.tsx b/apps/www/components/Hero.tsx index 33a1e3deec6..d2decb0ab08 100644 --- a/apps/www/components/Hero.tsx +++ b/apps/www/components/Hero.tsx @@ -2,17 +2,17 @@ import { Button, IconBookOpen } from 'ui' import { useRouter } from 'next/router' import Link from 'next/link' import SectionContainer from './Layouts/SectionContainer' -import Telemetry, { GoogleAnalyticsEvent } from '~/lib/telemetry' +import Telemetry, { TelemetryEvent } from '~/lib/telemetry' import gaEvents from '~/lib/gaEvents' -import { useGoogleAnalyticsProps } from 'common/hooks/useGoogleAnalyticsProps' +import { useTelemetryProps } from 'common/hooks/useTelemetryProps' const Hero = () => { const router = useRouter() const { basePath } = router - const googleAnalyticsProps = useGoogleAnalyticsProps() + const telemetryProps = useTelemetryProps() - const sendTelemetryEvent = async (event: GoogleAnalyticsEvent) => { - await Telemetry.sendEvent(event, googleAnalyticsProps, router) + const sendTelemetryEvent = async (event: TelemetryEvent) => { + await Telemetry.sendEvent(event, telemetryProps, router) } return ( diff --git a/apps/www/lib/gaEvents.ts b/apps/www/lib/gaEvents.ts index 73599720f86..a9db7dead20 100644 --- a/apps/www/lib/gaEvents.ts +++ b/apps/www/lib/gaEvents.ts @@ -1,10 +1,10 @@ -import { GoogleAnalyticsEvent } from './telemetry' +import { TelemetryEvent } from './telemetry' -interface GoogleAnalyticsEventType { - [key: string]: GoogleAnalyticsEvent +interface TelemetryEventType { + [key: string]: TelemetryEvent } -const GoogleAnalyticsEvents: GoogleAnalyticsEventType = { +const TelemetryEvents: TelemetryEventType = { www_hp_hero_startProject: { action: 'www_hp_hero_startProject', category: 'link', @@ -42,4 +42,4 @@ const GoogleAnalyticsEvents: GoogleAnalyticsEventType = { }, } -export default GoogleAnalyticsEvents +export default TelemetryEvents diff --git a/apps/www/lib/telemetry.ts b/apps/www/lib/telemetry.ts index e64f0992b68..579e3a14f5b 100644 --- a/apps/www/lib/telemetry.ts +++ b/apps/www/lib/telemetry.ts @@ -3,14 +3,14 @@ import { API_URL, IS_PROD, IS_PREVIEW } from 'lib/constants' import { BrowserTabTracker } from 'browser-session-tabs' import { NextRouter } from 'next/router' -export interface GoogleAnalyticsEvent { +export interface TelemetryEvent { category: string action: string label: string value?: string } -export interface GoogleAnalyticsProps { +export interface TelemetryProps { screenResolution?: string language: string } @@ -18,11 +18,7 @@ export interface GoogleAnalyticsProps { // This event is the same as in studio/lib/telemetry.tx // but uses different ENV variables for www -const sendEvent = ( - event: GoogleAnalyticsEvent, - gaProps: GoogleAnalyticsProps, - router: NextRouter -) => { +const sendEvent = (event: TelemetryEvent, gaProps: TelemetryProps, router: NextRouter) => { if (!IS_PROD && !IS_PREVIEW) return const { category, action, label, value } = event diff --git a/apps/www/pages/_app.tsx b/apps/www/pages/_app.tsx index ab0dbf807d2..1b5db4d340b 100644 --- a/apps/www/pages/_app.tsx +++ b/apps/www/pages/_app.tsx @@ -6,14 +6,14 @@ import { useEffect } from 'react' import Meta from '~/components/Favicons' import '../styles/index.css' import { post } from '~/lib/fetchWrapper' -import { AuthProvider, ThemeProvider, useGoogleAnalyticsProps } from 'common' +import { AuthProvider, ThemeProvider, useTelemetryProps } from 'common' import { BrowserTabTracker } from 'browser-session-tabs' import { v4 as uuidv4 } from 'uuid' import Head from 'next/head' export default function MyApp({ Component, pageProps }: AppProps) { const router = useRouter() - const googleAnalyticsProps = useGoogleAnalyticsProps() + const telemetryProps = useTelemetryProps() function handlePageTelemetry(route: string) { return post(`${API_URL}/telemetry/page`, { @@ -21,8 +21,8 @@ export default function MyApp({ Component, pageProps }: AppProps) { title: document.title, route, ga: { - screen_resolution: googleAnalyticsProps?.screenResolution, - language: googleAnalyticsProps?.language, + screen_resolution: telemetryProps?.screenResolution, + language: telemetryProps?.language, session_id: BrowserTabTracker.sessionId, }, }) diff --git a/packages/common/hooks/useGoogleAnalyticsProps.ts b/packages/common/hooks/useTelemetryProps.ts similarity index 85% rename from packages/common/hooks/useGoogleAnalyticsProps.ts rename to packages/common/hooks/useTelemetryProps.ts index 3b247008f9f..73e63cd5e4f 100644 --- a/packages/common/hooks/useGoogleAnalyticsProps.ts +++ b/packages/common/hooks/useTelemetryProps.ts @@ -2,7 +2,7 @@ import { useRouter } from 'next/router' const isBrowser = typeof window !== 'undefined' -export function useGoogleAnalyticsProps() { +export function useTelemetryProps() { const { locale } = useRouter() return { diff --git a/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx b/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx index f400dbd6a13..86f850fbce4 100644 --- a/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx +++ b/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx @@ -8,7 +8,7 @@ import { useProfileQuery } from 'data/profile/profile-query' import { SQL_TEMPLATES } from 'components/interfaces/SQLEditor/SQLEditor.constants' import SQLCard from './SQLCard' import { createSqlSnippetSkeleton } from '../SQLEditor.utils' -import { useGoogleAnalyticsProps, useParams } from 'common' +import { useTelemetryProps, useParams } from 'common' import { useRouter } from 'next/router' import { SqlSnippet } from 'data/content/sql-snippets-query' import { useSqlEditorStateSnapshot } from 'state/sql-editor' @@ -21,7 +21,7 @@ const SQLTemplates = observer(() => { const { data: profile } = useProfileQuery() const [sql, quickStart] = partition(SQL_TEMPLATES, { type: 'template' }) - const googleAnalyticsProps = useGoogleAnalyticsProps() + const telemetryProps = useTelemetryProps() const snap = useSqlEditorStateSnapshot() const canCreateSQLSnippet = checkPermissions(PermissionAction.CREATE, 'user_content', { resource: { type: 'sql', owner_id: profile?.id }, @@ -78,7 +78,7 @@ const SQLTemplates = observer(() => { action: 'script_clicked', label: x.title, }, - googleAnalyticsProps, + telemetryProps, router ) }} @@ -113,7 +113,7 @@ const SQLTemplates = observer(() => { action: 'quickstart_clicked', label: x.title, }, - googleAnalyticsProps, + telemetryProps, router ) }} diff --git a/studio/components/interfaces/SQLEditor/UtilityPanel/ResultsDropdown.tsx b/studio/components/interfaces/SQLEditor/UtilityPanel/ResultsDropdown.tsx index 4d47dcedb13..50565d6c697 100644 --- a/studio/components/interfaces/SQLEditor/UtilityPanel/ResultsDropdown.tsx +++ b/studio/components/interfaces/SQLEditor/UtilityPanel/ResultsDropdown.tsx @@ -9,7 +9,7 @@ import { CSVLink } from 'react-csv' import { useSqlEditorStateSnapshot } from 'state/sql-editor' // @ts-ignore import MarkdownTable from 'markdown-table' -import { useGoogleAnalyticsProps } from 'common' +import { useTelemetryProps } from 'common' import { useRouter } from 'next/router' export type ResultsDropdownProps = { @@ -19,7 +19,7 @@ export type ResultsDropdownProps = { const ResultsDropdown = ({ id }: ResultsDropdownProps) => { const { project } = useProjectContext() const snap = useSqlEditorStateSnapshot() - const googleAnalyticsProps = useGoogleAnalyticsProps() + const telemetryProps = useTelemetryProps() const result = snap.results?.[id]?.[0] ?? undefined const { ui } = useStore() const csvRef = useRef(null) @@ -34,7 +34,7 @@ const ResultsDropdown = ({ id }: ResultsDropdownProps) => { csvRef.current?.link.click() Telemetry.sendEvent( { category: 'sql_editor', action: 'sql_download_csv', label: '' }, - googleAnalyticsProps, + telemetryProps, router ) } @@ -58,7 +58,7 @@ const ResultsDropdown = ({ id }: ResultsDropdownProps) => { ui.setNotification({ category: 'success', message: 'Copied results to clipboard' }) Telemetry.sendEvent( { category: 'sql_editor', action: 'sql_copy_as_markdown', label: '' }, - googleAnalyticsProps, + telemetryProps, router ) }) diff --git a/studio/components/ui/PageTelemetry.tsx b/studio/components/ui/PageTelemetry.tsx index 54b9155cec1..eeda65b6071 100644 --- a/studio/components/ui/PageTelemetry.tsx +++ b/studio/components/ui/PageTelemetry.tsx @@ -1,5 +1,5 @@ import { BrowserTabTracker } from 'browser-session-tabs' -import { useGoogleAnalyticsProps } from 'common' +import { useTelemetryProps } from 'common' import { post } from 'lib/common/fetch' import { API_URL, IS_PLATFORM } from 'lib/constants' import { observer } from 'mobx-react-lite' @@ -26,7 +26,7 @@ function sanitizePageViewRoute(_route?: string) { const PageTelemetry: FC = ({ children }) => { const router = useRouter() - const googleAnalyticsProps = useGoogleAnalyticsProps() + const telemetryProps = useTelemetryProps() useEffect(() => { function handleRouteChange(url: string) { @@ -72,8 +72,8 @@ const PageTelemetry: FC = ({ children }) => { title: document.title, route, ga: { - screen_resolution: googleAnalyticsProps?.screenResolution, - language: googleAnalyticsProps?.language, + screen_resolution: telemetryProps?.screenResolution, + language: telemetryProps?.language, session_id: BrowserTabTracker.sessionId, }, }) diff --git a/studio/lib/auth.tsx b/studio/lib/auth.tsx index f02f3688130..55b17f74866 100644 --- a/studio/lib/auth.tsx +++ b/studio/lib/auth.tsx @@ -2,7 +2,7 @@ import { AuthContext as AuthContextInternal, AuthProvider as AuthProviderInternal, gotrueClient, - useGoogleAnalyticsProps, + useTelemetryProps, } from 'common' import { useProfileQuery } from 'data/profile/profile-query' import { useStore } from 'hooks' @@ -14,7 +14,7 @@ export const AuthContext = AuthContextInternal export const AuthProvider = ({ children }: PropsWithChildren<{}>) => { const { ui, app } = useStore() - const googleAnalyticsProps = useGoogleAnalyticsProps() + const telemetryProps = useTelemetryProps() // Check for unverified GitHub users after a GitHub sign in useEffect(() => { @@ -36,7 +36,7 @@ export const AuthProvider = ({ children }: PropsWithChildren<{}>) => { // Track telemetry for the current user useProfileQuery({ onSuccess(profile) { - Telemetry.sendIdentify(profile, googleAnalyticsProps) + Telemetry.sendIdentify(profile, telemetryProps) // [Joshen] Temp fix: For new users, the GET profile call also creates a default org // But because the dashboard's logged in state is using gotrue as the source of truth diff --git a/studio/lib/telemetry.ts b/studio/lib/telemetry.ts index f3a75970c6a..8b75269c02a 100644 --- a/studio/lib/telemetry.ts +++ b/studio/lib/telemetry.ts @@ -4,7 +4,7 @@ import { User } from 'types' import { BrowserTabTracker } from 'browser-session-tabs' import { NextRouter } from 'next/router' -export interface GoogleAnalyticsProps { +export interface TelemetryProps { screenResolution?: string language: string } @@ -16,7 +16,7 @@ const sendEvent = ( label: string value?: string }, - gaProps: GoogleAnalyticsProps, + gaProps: TelemetryProps, router: NextRouter ) => { if (!IS_PLATFORM) return @@ -43,7 +43,7 @@ const sendEvent = ( * TODO: GA4 doesn't have identify method. * We may or may not need gaClientId here. Confirm later */ -const sendIdentify = (user: User, gaProps?: GoogleAnalyticsProps) => { +const sendIdentify = (user: User, gaProps?: TelemetryProps) => { if (!IS_PLATFORM) return return post(`${API_URL}/telemetry/identify`, { From 82951ed7ff6828ab2898cb3aa69a5c9bb2e3a07b Mon Sep 17 00:00:00 2001 From: Francesco Sansalvadore Date: Tue, 9 May 2023 08:56:03 +0200 Subject: [PATCH 2/2] chore: remove browser-session-tabs --- apps/docs/package.json | 1 - apps/docs/pages/_app.tsx | 11 -------- apps/www/lib/telemetry.ts | 2 -- apps/www/package.json | 1 - apps/www/pages/_app.tsx | 11 -------- package-lock.json | 37 -------------------------- packages/common/hooks/index.ts | 2 +- studio/components/ui/PageTelemetry.tsx | 2 -- studio/lib/telemetry.ts | 3 --- studio/package.json | 1 - studio/pages/_app.tsx | 10 ------- 11 files changed, 1 insertion(+), 80 deletions(-) diff --git a/apps/docs/package.json b/apps/docs/package.json index 7f8438339e1..0eb29301d62 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -56,7 +56,6 @@ "@supabase/supabase-js": "^2.13.0", "algoliasearch": "^4.14.2", "babel": "^6.23.0", - "browser-session-tabs": "^3.0.0", "clsx": "^1.2.1", "common": "*", "config": "*", diff --git a/apps/docs/pages/_app.tsx b/apps/docs/pages/_app.tsx index 7234e438f59..7c3519884b8 100644 --- a/apps/docs/pages/_app.tsx +++ b/apps/docs/pages/_app.tsx @@ -12,8 +12,6 @@ import Favicons from '~/components/Favicons' import SiteLayout from '~/layouts/SiteLayout' import { API_URL, IS_PLATFORM, LOCAL_SUPABASE } from '~/lib/constants' import { post } from '~/lib/fetchWrappers' -import { BrowserTabTracker } from 'browser-session-tabs' -import { v4 as uuidv4 } from 'uuid' import '../styles/ch.scss' import '../styles/main.scss?v=1.0.0' import '../styles/new-docs.scss' @@ -35,19 +33,10 @@ function MyApp({ Component, pageProps }: AppPropsWithLayout) { ga: { screen_resolution: telemetryProps?.screenResolution, language: telemetryProps?.language, - session_id: BrowserTabTracker.sessionId, }, }) } - useEffect(() => { - // Generate browser session id for anon tracking - BrowserTabTracker.initialize({ - storageKey: 'supabase.browser.session', - sessionIdGenerator: () => uuidv4(), - }) - }, []) - useEffect(() => { function handleRouteChange(url: string) { /* diff --git a/apps/www/lib/telemetry.ts b/apps/www/lib/telemetry.ts index 579e3a14f5b..a880edb6f5b 100644 --- a/apps/www/lib/telemetry.ts +++ b/apps/www/lib/telemetry.ts @@ -1,6 +1,5 @@ import { post } from '~/lib/fetchWrapper' import { API_URL, IS_PROD, IS_PREVIEW } from 'lib/constants' -import { BrowserTabTracker } from 'browser-session-tabs' import { NextRouter } from 'next/router' export interface TelemetryEvent { @@ -34,7 +33,6 @@ const sendEvent = (event: TelemetryEvent, gaProps: TelemetryProps, router: NextR ga: { screen_resolution: gaProps?.screenResolution, language: gaProps?.language, - session_id: BrowserTabTracker.sessionId, }, }) } diff --git a/apps/www/package.json b/apps/www/package.json index 8242300daea..cadcf99b872 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -20,7 +20,6 @@ "@next/mdx": "^12.3.2", "@supabase/auth-ui-react": "^0.1.6", "@supabase/supabase-js": "^2.13.0", - "browser-session-tabs": "^3.0.0", "classnames": "^2.3.1", "cobe": "^0.6.2", "common": "*", diff --git a/apps/www/pages/_app.tsx b/apps/www/pages/_app.tsx index 1b5db4d340b..7329be0174e 100644 --- a/apps/www/pages/_app.tsx +++ b/apps/www/pages/_app.tsx @@ -7,8 +7,6 @@ import Meta from '~/components/Favicons' import '../styles/index.css' import { post } from '~/lib/fetchWrapper' import { AuthProvider, ThemeProvider, useTelemetryProps } from 'common' -import { BrowserTabTracker } from 'browser-session-tabs' -import { v4 as uuidv4 } from 'uuid' import Head from 'next/head' export default function MyApp({ Component, pageProps }: AppProps) { @@ -23,19 +21,10 @@ export default function MyApp({ Component, pageProps }: AppProps) { ga: { screen_resolution: telemetryProps?.screenResolution, language: telemetryProps?.language, - session_id: BrowserTabTracker.sessionId, }, }) } - useEffect(() => { - // Generate browser session id for anon tracking - BrowserTabTracker.initialize({ - storageKey: 'supabase.browser.session', - sessionIdGenerator: () => uuidv4(), - }) - }, []) - useEffect(() => { function handleRouteChange(url: string) { handlePageTelemetry(url) diff --git a/package-lock.json b/package-lock.json index 4b3477ab38d..9ed78cb140f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,6 @@ "@supabase/supabase-js": "^2.13.0", "algoliasearch": "^4.14.2", "babel": "^6.23.0", - "browser-session-tabs": "^3.0.0", "clsx": "^1.2.1", "common": "*", "config": "*", @@ -674,7 +673,6 @@ "@next/mdx": "^12.3.2", "@supabase/auth-ui-react": "^0.1.6", "@supabase/supabase-js": "^2.13.0", - "browser-session-tabs": "^3.0.0", "classnames": "^2.3.1", "cobe": "^0.6.2", "common": "*", @@ -12809,22 +12807,6 @@ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, - "node_modules/browser-session-tabs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/browser-session-tabs/-/browser-session-tabs-3.0.0.tgz", - "integrity": "sha512-HBJWkCbcDYFL+hlSGld54SF1SgaiSXnw9vaTPdDeOxT9HCTFt3hVdArIroQ3HDhh9vhqkbl6TkMjTFok0ZfwIA==", - "dependencies": { - "js-cookie": "^3.0.1" - } - }, - "node_modules/browser-session-tabs/node_modules/js-cookie": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", - "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", - "engines": { - "node": ">=14" - } - }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -39207,7 +39189,6 @@ "analytics-node": "^3.5.0", "awesome-debounce-promise": "^2.1.0", "blueimp-md5": "^2.19.0", - "browser-session-tabs": "^3.0.0", "clipboard": "^2.0.8", "clsx": "^1.2.1", "common": "*", @@ -48929,21 +48910,6 @@ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, - "browser-session-tabs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/browser-session-tabs/-/browser-session-tabs-3.0.0.tgz", - "integrity": "sha512-HBJWkCbcDYFL+hlSGld54SF1SgaiSXnw9vaTPdDeOxT9HCTFt3hVdArIroQ3HDhh9vhqkbl6TkMjTFok0ZfwIA==", - "requires": { - "js-cookie": "^3.0.1" - }, - "dependencies": { - "js-cookie": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", - "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==" - } - } - }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -51572,7 +51538,6 @@ "@types/react": "17.0.39", "algoliasearch": "^4.14.2", "babel": "^6.23.0", - "browser-session-tabs": "^3.0.0", "clsx": "^1.2.1", "common": "*", "config": "*", @@ -66456,7 +66421,6 @@ "aws-sdk": "^2.1354.0", "babel-loader": "^8.2.3", "blueimp-md5": "^2.19.0", - "browser-session-tabs": "^3.0.0", "clipboard": "^2.0.8", "clsx": "^1.2.1", "common": "*", @@ -69909,7 +69873,6 @@ "@types/react-dom": "^17.0.11", "@types/react-syntax-highlighter": "^13.5.2", "autoprefixer": "^10.4.12", - "browser-session-tabs": "^3.0.0", "classnames": "^2.3.1", "cobe": "^0.6.2", "common": "*", diff --git a/packages/common/hooks/index.ts b/packages/common/hooks/index.ts index 1d07190bbf5..65b5a76ec98 100644 --- a/packages/common/hooks/index.ts +++ b/packages/common/hooks/index.ts @@ -1,3 +1,3 @@ export * from './useBreakpoint' export * from './useParams' -export * from './useGoogleAnalyticsProps' +export * from './useTelemetryProps' diff --git a/studio/components/ui/PageTelemetry.tsx b/studio/components/ui/PageTelemetry.tsx index eeda65b6071..f6de24e69b6 100644 --- a/studio/components/ui/PageTelemetry.tsx +++ b/studio/components/ui/PageTelemetry.tsx @@ -1,4 +1,3 @@ -import { BrowserTabTracker } from 'browser-session-tabs' import { useTelemetryProps } from 'common' import { post } from 'lib/common/fetch' import { API_URL, IS_PLATFORM } from 'lib/constants' @@ -74,7 +73,6 @@ const PageTelemetry: FC = ({ children }) => { ga: { screen_resolution: telemetryProps?.screenResolution, language: telemetryProps?.language, - session_id: BrowserTabTracker.sessionId, }, }) } diff --git a/studio/lib/telemetry.ts b/studio/lib/telemetry.ts index 8b75269c02a..9cf951fc0c6 100644 --- a/studio/lib/telemetry.ts +++ b/studio/lib/telemetry.ts @@ -1,7 +1,6 @@ import { post } from 'lib/common/fetch' import { API_URL, IS_PLATFORM } from 'lib/constants' import { User } from 'types' -import { BrowserTabTracker } from 'browser-session-tabs' import { NextRouter } from 'next/router' export interface TelemetryProps { @@ -34,7 +33,6 @@ const sendEvent = ( ga: { screen_resolution: gaProps?.screenResolution, language: gaProps?.language, - session_id: BrowserTabTracker.sessionId, }, }) } @@ -51,7 +49,6 @@ const sendIdentify = (user: User, gaProps?: TelemetryProps) => { ga: { screen_resolution: gaProps?.screenResolution, language: gaProps?.language, - session_id: BrowserTabTracker.sessionId, }, }) } diff --git a/studio/package.json b/studio/package.json index e85e5682e10..2f845d6011e 100644 --- a/studio/package.json +++ b/studio/package.json @@ -41,7 +41,6 @@ "analytics-node": "^3.5.0", "awesome-debounce-promise": "^2.1.0", "blueimp-md5": "^2.19.0", - "browser-session-tabs": "^3.0.0", "clipboard": "^2.0.8", "clsx": "^1.2.1", "common": "*", diff --git a/studio/pages/_app.tsx b/studio/pages/_app.tsx index c35c5c382ae..8a9144cf26f 100644 --- a/studio/pages/_app.tsx +++ b/studio/pages/_app.tsx @@ -50,8 +50,6 @@ import Favicons from 'components/head/Favicons' import { IS_PLATFORM } from 'lib/constants' import { SessionContextProvider } from '@supabase/auth-helpers-react' import { createClient } from '@supabase/supabase-js' -import { BrowserTabTracker } from 'browser-session-tabs' -import { v4 as uuidv4 } from 'uuid' dayjs.extend(customParseFormat) dayjs.extend(utc) @@ -76,14 +74,6 @@ function CustomApp({ Component, pageProps }: AppPropsWithLayout) { const getSavingState = () => rootStore.content.savingState - useEffect(() => { - // Generate browser session id for anon tracking - BrowserTabTracker.initialize({ - storageKey: 'supabase.browser.session', - sessionIdGenerator: () => uuidv4(), - }) - }, []) - // prompt the user if they try and leave with unsaved content store changes useEffect(() => { const warningText = 'You have unsaved changes - are you sure you wish to leave this page?'