diff --git a/packages/toolpad-app/src/toolpad/AppEditor/AppEditorShell.tsx b/packages/toolpad-app/src/toolpad/AppEditor/AppEditorShell.tsx index c0d308469d4..0ebe8d423cb 100644 --- a/packages/toolpad-app/src/toolpad/AppEditor/AppEditorShell.tsx +++ b/packages/toolpad-app/src/toolpad/AppEditor/AppEditorShell.tsx @@ -3,6 +3,7 @@ import { Alert, Box, Button, + ButtonGroup, Dialog, DialogActions, DialogContent, @@ -11,11 +12,14 @@ import { TextField, Tooltip, Typography, + Menu, + MenuItem, } from '@mui/material'; import CloudDoneIcon from '@mui/icons-material/CloudDone'; import SyncIcon from '@mui/icons-material/Sync'; import SyncProblemIcon from '@mui/icons-material/SyncProblem'; import OpenInNewIcon from '@mui/icons-material/OpenInNew'; +import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; import RocketLaunchIcon from '@mui/icons-material/RocketLaunch'; import * as React from 'react'; @@ -28,6 +32,8 @@ import ToolpadShell from '../ToolpadShell'; import PagePanel from './PagePanel'; import client from '../../api'; import useBoolean from '../../utils/useBoolean'; +import useMenu from '../../utils/useMenu'; +import { errorFrom } from '../../utils/errors'; interface CreateReleaseDialogProps { appId: string; @@ -138,6 +144,7 @@ export interface ToolpadShellProps { export default function AppEditorShell({ appId, ...props }: ToolpadShellProps) { const domLoader = useDomLoader(); + const release = client.useQuery('findLastRelease', [appId]); const { value: createReleaseDialogOpen, @@ -145,6 +152,10 @@ export default function AppEditorShell({ appId, ...props }: ToolpadShellProps) { setFalse: handleCreateReleaseDialogClose, } = useBoolean(false); + const isDeployed = Boolean(release?.data); + + const { buttonProps, menuProps } = useMenu(); + return ( Preview - + + + {isDeployed ? ( + + + + {release.error ? ( + {errorFrom(release.error).message} + ) : ( + + Open current deployed version + + )} + + + ) : null} + } status={getSaveState(domLoader)} diff --git a/yarn.lock b/yarn.lock index 2229ca91e58..3ab0ed7249a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10241,7 +10241,7 @@ prettier-plugin-prisma@^4.4.0: dependencies: "@prisma/prisma-fmt-wasm" "4.4.0-66.f352a33b70356f46311da8b00d83386dd9f145d6" -prettier@^2.8.0, prettier@^2.8.1: +prettier@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==