From 4b20cc121a0ea11245299890d671dcaaa7fcac1e Mon Sep 17 00:00:00 2001 From: Greg Richardson Date: Mon, 7 Oct 2024 13:28:49 -0600 Subject: [PATCH 1/2] feat: remove preview env tracking --- apps/postgres-new/.env.example | 1 - apps/postgres-new/components/app-provider.tsx | 3 --- apps/postgres-new/components/layout.tsx | 12 +----------- 3 files changed, 1 insertion(+), 15 deletions(-) diff --git a/apps/postgres-new/.env.example b/apps/postgres-new/.env.example index 461b9bc6..b8560b13 100644 --- a/apps/postgres-new/.env.example +++ b/apps/postgres-new/.env.example @@ -1,6 +1,5 @@ NEXT_PUBLIC_SUPABASE_ANON_KEY="" NEXT_PUBLIC_SUPABASE_URL="" -NEXT_PUBLIC_IS_PREVIEW=true NEXT_PUBLIC_BROWSER_PROXY_DOMAIN="" OPENAI_API_KEY="" diff --git a/apps/postgres-new/components/app-provider.tsx b/apps/postgres-new/components/app-provider.tsx index ec4c60ed..df9358d8 100644 --- a/apps/postgres-new/components/app-provider.tsx +++ b/apps/postgres-new/components/app-provider.tsx @@ -100,7 +100,6 @@ export default function AppProvider({ children }: AppProps) { setUser(undefined) }, [supabase]) - const isPreview = process.env.NEXT_PUBLIC_IS_PREVIEW === 'true' const pgliteVersion = process.env.NEXT_PUBLIC_PGLITE_VERSION const { value: pgVersion } = useAsyncMemo(async () => { if (!dbManager) { @@ -237,7 +236,6 @@ export default function AppProvider({ children }: AppProps) { isRateLimited, setIsRateLimited, focusRef, - isPreview, dbManager, pgliteVersion, pgVersion, @@ -266,7 +264,6 @@ export type AppContextValues = { isRateLimited: boolean setIsRateLimited: (limited: boolean) => void focusRef: RefObject - isPreview: boolean dbManager?: DbManager pgliteVersion?: string pgVersion?: string diff --git a/apps/postgres-new/components/layout.tsx b/apps/postgres-new/components/layout.tsx index 94a0ecd6..8c67dfc4 100644 --- a/apps/postgres-new/components/layout.tsx +++ b/apps/postgres-new/components/layout.tsx @@ -26,14 +26,13 @@ const loadFramerFeatures = () => import('./framer-features').then((res) => res.d export type LayoutProps = PropsWithChildren export default function Layout({ children }: LayoutProps) { - const { isPreview, isLegacyDomain, isLegacyDomainRedirect } = useApp() + const { isLegacyDomain, isLegacyDomainRedirect } = useApp() const isSmallBreakpoint = useBreakpoint('lg') return (
- {isPreview && } {/* TODO: re-enable rename banner when ready */} {(isLegacyDomain || isLegacyDomainRedirect) && }
@@ -50,15 +49,6 @@ export default function Layout({ children }: LayoutProps) { ) } -function PreviewBanner() { - return ( -
- Heads up! This is a preview version of {currentDomainHostname}, so expect some changes here - and there. -
- ) -} - function RenameBanner() { const { setIsRenameDialogOpen } = useApp() return ( From 7494fd94df00173af8d540ba72ee353a66feb393 Mon Sep 17 00:00:00 2001 From: Greg Richardson Date: Mon, 7 Oct 2024 16:26:10 -0600 Subject: [PATCH 2/2] feat: live share banner --- apps/postgres-new/components/layout.tsx | 88 ++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 3 deletions(-) diff --git a/apps/postgres-new/components/layout.tsx b/apps/postgres-new/components/layout.tsx index 8c67dfc4..2a61702f 100644 --- a/apps/postgres-new/components/layout.tsx +++ b/apps/postgres-new/components/layout.tsx @@ -3,10 +3,11 @@ import 'chart.js/auto' import 'chartjs-adapter-date-fns' +import { DialogTrigger } from '@radix-ui/react-dialog' import { LazyMotion, m } from 'framer-motion' -import { Loader } from 'lucide-react' +import { Loader, MoreVertical } from 'lucide-react' import Link from 'next/link' -import { PropsWithChildren } from 'react' +import { PropsWithChildren, useState } from 'react' import { TooltipProvider } from '~/components/ui/tooltip' import { useDatabasesQuery } from '~/data/databases/databases-query' import { useBreakpoint } from '~/lib/use-breakpoint' @@ -17,6 +18,7 @@ import { legacyDomainUrl, } from '~/lib/util' import { useApp } from './app-provider' +import { LiveShareIcon } from './live-share-icon' import Sidebar from './sidebar' import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from './ui/accordion' import { Dialog, DialogContent, DialogHeader, DialogTitle } from './ui/dialog' @@ -33,7 +35,7 @@ export default function Layout({ children }: LayoutProps) {
- {/* TODO: re-enable rename banner when ready */} + {!isLegacyDomain && } {(isLegacyDomain || isLegacyDomainRedirect) && }
{/* TODO: make sidebar available on mobile */} @@ -49,6 +51,86 @@ export default function Layout({ children }: LayoutProps) { ) } +function LiveShareBanner() { + const [videoLoaded, setVideoLoaded] = useState(false) + + return ( +
+ New: Connect to your in-browser databases from outside the browser. + setVideoLoaded(false)}> + + Learn more. + + + + Introducing Live Share +
+ + +
+

+ With Live Share, you can connect directly to your in-browser PGlite databases from{' '} + outside the browser. +

+
+ {!videoLoaded && ( +
+ +
+ )} + setVideoLoaded(true)} + > + + +
+ + +

How does it work?

+ +
    +
  1. + Click on the {' '} + menu next your database and tap{' '} + + Live Share + +
  2. +
  3. A unique connection string will appear for your database
  4. +
  5. + Copy-paste the connection string into any Postgres client (like psql) + and begin querying! +
  6. +
+
+
+ +
+
+ ) +} + function RenameBanner() { const { setIsRenameDialogOpen } = useApp() return (