@@ -41,6 +41,7 @@ import {
4141 DropdownMenuSeparator ,
4242 DropdownMenuTrigger ,
4343} from './ui/dropdown-menu'
44+ import { TooltipPortal } from '@radix-ui/react-tooltip'
4445
4546export default function Sidebar ( ) {
4647 const { user, signOut, focusRef, isSignInDialogOpen, setIsSignInDialogOpen } = useApp ( )
@@ -276,7 +277,7 @@ type DatabaseMenuItemProps = {
276277
277278function DatabaseMenuItem ( { database, isActive } : DatabaseMenuItemProps ) {
278279 const router = useRouter ( )
279- const { user, dbManager, shareDatabase } = useApp ( )
280+ const { user, dbManager, connectedDatabase } = useApp ( )
280281 const [ isPopoverOpen , setIsPopoverOpen ] = useState ( false )
281282 const { mutateAsync : deleteDatabase } = useDatabaseDeleteMutation ( )
282283 const { mutateAsync : updateDatabase } = useDatabaseUpdateMutation ( )
@@ -350,6 +351,21 @@ function DatabaseMenuItem({ database, isActive }: DatabaseMenuItemProps) {
350351 ) }
351352 href = { `/db/${ database . id } ` }
352353 >
354+ { isActive && connectedDatabase . isConnected && (
355+ < Tooltip >
356+ < TooltipTrigger asChild >
357+ < span className = "relative flex h-2.5 w-2.5" >
358+ < span className = "animate-ping absolute inline-flex h-full w-full rounded-full bg-primary opacity-75" > </ span >
359+ < span className = "relative inline-flex rounded-full h-2.5 w-2.5 bg-primary" > </ span >
360+ </ span >
361+ </ TooltipTrigger >
362+ < TooltipPortal >
363+ < TooltipContent side = "bottom" >
364+ < p > Connected</ p >
365+ </ TooltipContent >
366+ </ TooltipPortal >
367+ </ Tooltip >
368+ ) }
353369 < span className = "text-nowrap grow truncate" > { database . name ?? 'My database' } </ span >
354370 < DropdownMenu
355371 modal = { false }
@@ -468,7 +484,7 @@ function DatabaseMenuItem({ database, isActive }: DatabaseMenuItemProps) {
468484 />
469485 < span > Deploy</ span >
470486 </ DropdownMenuItem >
471- < ShareMenuItem
487+ < ConnectMenuItem
472488 databaseId = { database . id }
473489 isActive = { isActive }
474490 setIsPopoverOpen = { setIsPopoverOpen }
@@ -502,33 +518,33 @@ function DatabaseMenuItem({ database, isActive }: DatabaseMenuItemProps) {
502518 )
503519}
504520
505- type ShareMenuItemProps = {
521+ type ConnectMenuItemProps = {
506522 databaseId : string
507523 isActive : boolean
508524 setIsPopoverOpen : ( open : boolean ) => void
509525}
510526
511- function ShareMenuItem ( props : ShareMenuItemProps ) {
512- const { shareDatabase } = useApp ( )
527+ function ConnectMenuItem ( props : ConnectMenuItemProps ) {
528+ const { connectedDatabase } = useApp ( )
513529
514- // Only show the share menu item on fully loaded dashboard
530+ // Only show the connect menu item on fully loaded dashboard
515531 if ( ! props . isActive ) {
516532 return null
517533 }
518534
519- if ( ! shareDatabase . isSharing ) {
535+ if ( ! connectedDatabase . isConnected ) {
520536 return (
521537 < DropdownMenuItem
522- disabled = { shareDatabase . isSharing }
538+ disabled = { connectedDatabase . isConnected }
523539 className = "bg-inherit justify-start hover:bg-neutral-200 flex gap-3"
524540 onClick = { async ( e ) => {
525541 e . preventDefault ( )
526- shareDatabase . start ( props . databaseId )
542+ connectedDatabase . connect ( props . databaseId )
527543 props . setIsPopoverOpen ( false )
528544 } }
529545 >
530546 < WifiIcon size = { 16 } strokeWidth = { 2 } className = "flex-shrink-0 text-muted-foreground" />
531- < span > Share </ span >
547+ < span > Connect </ span >
532548 </ DropdownMenuItem >
533549 )
534550 }
@@ -538,7 +554,7 @@ function ShareMenuItem(props: ShareMenuItemProps) {
538554 className = "bg-inherit justify-start hover:bg-neutral-200 flex gap-3"
539555 onClick = { async ( e ) => {
540556 e . preventDefault ( )
541- shareDatabase . stop ( )
557+ connectedDatabase . disconnect ( )
542558 props . setIsPopoverOpen ( false )
543559 } }
544560 >
0 commit comments