import React from "react"; import { hexToRgba } from "design-system-old"; import { Button, Icon, Spinner, Text } from "design-system"; import { getIsRestartFailed, getRestartingState, } from "selectors/settingsSelectors"; import { useSelector } from "react-redux"; import styled from "styled-components"; import { createMessage, RETRY_BUTTON, RESTART_BANNER_BODY, RESTART_BANNER_HEADER, RESTART_ERROR_BODY, RESTART_ERROR_HEADER, } from "@appsmith/constants/messages"; import { Colors } from "constants/Colors"; import { retryServerRestart } from "@appsmith/actions/settingsAction"; import { useDispatch } from "react-redux"; const RestartBannerWrapper = styled.div` position: fixed; bottom: 0; left: 0; right: 0; top: 0; z-index: 20; overflow: auto; `; const OverlayBackdrop = styled.div` position: fixed; bottom: 0; left: 0; right: 0; top: 0; /* TODO: replaced hexToRgba (Albin) */ background-color: ${hexToRgba(Colors.COD_GRAY, 0.7)}; overflow: auto; pointer-events: none; user-select: none; z-index: 20; `; const RestartContainer = styled.div` position: absolute; bottom: 0; left: 0; width: 100%; height: ${(props) => props.theme.settings.footerHeight}px; z-index: 20; padding: 0px ${(props) => props.theme.spaces[11]}px 0px 276px; background: var(--ads-v2-color-bg); display: flex; justify-content: space-between; align-items: center; pointer-events: all; user-select: text; `; const RestartMessageWrapper = styled.div` display: flex; flex-direction: column; justify-content: center; pointer-events: none; `; const HeaderContents = styled.div` display: flex; align-items: center; padding-bottom: ${(props) => props.theme.spaces[3]}px; gap: 8px; `; const Heading = styled(Text)``; const AppIconWrapper = styled.div` background: var(--ads-v2-color-bg-error); border-radius: 50%; padding: 4px; margin-right: 12px; svg { width: 18px; height: 18px; path { fill: var(--ads-v2-color-fg-on-error); } } `; function Header() { const isRestartFailed = useSelector(getIsRestartFailed); return ( {isRestartFailed ? ( ) : ( )} {isRestartFailed ? createMessage(RESTART_ERROR_HEADER) : createMessage(RESTART_BANNER_HEADER)} ); } export default function RestartBanner() { const isRestartFailed = useSelector(getIsRestartFailed); const isRestarting = useSelector(getRestartingState); const dispatch = useDispatch(); return isRestarting ? (
{isRestartFailed ? createMessage(RESTART_ERROR_BODY) : createMessage(RESTART_BANNER_BODY)} {isRestartFailed && ( )} ) : null; }