## Description Added ESLint rule to force blank lines between statements. Fixes #`Issue Number` _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.All" ### 🔍 Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!CAUTION] > 🔴 🔴 🔴 Some tests have failed. > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/10924926728> > Commit: 34f57714a1575ee04e94e03cbcaf95e57a96c86c > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10924926728&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail" target="_blank">Cypress dashboard</a>. > Tags: @tag.All > Spec: > The following are new failures, please fix them before merging the PR: <ol> > <li>cypress/e2e/Regression/ClientSide/Anvil/AnvilModal_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilCheckboxGroupWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilCurrencyInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilIconButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilInlineButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilParagraphWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilPhoneInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilStatsWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilSwitchGroupWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilSwitchWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilTableWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilToolbarButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilZoneSectionWidgetSnapshot_spec.ts</ol> > <a href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master" target="_blank">List of identified flaky tests</a>. > <hr>Wed, 18 Sep 2024 16:33:36 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No --------- Co-authored-by: Valera Melnikov <valera@appsmith.com>
148 lines
3.4 KiB
TypeScript
148 lines
3.4 KiB
TypeScript
import React from "react";
|
|
import { hexToRgba } from "@appsmith/ads-old";
|
|
import { Button, Icon, Spinner, Text } from "@appsmith/ads";
|
|
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 "ee/constants/messages";
|
|
import { Colors } from "constants/Colors";
|
|
import { retryServerRestart } from "ee/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 (
|
|
<HeaderContents>
|
|
{isRestartFailed ? (
|
|
<AppIconWrapper>
|
|
<Icon name="server-line" />
|
|
</AppIconWrapper>
|
|
) : (
|
|
<Spinner
|
|
iconProps={{ color: "var(--ads-v2-color-bg-brand)" }}
|
|
size="lg"
|
|
/>
|
|
)}
|
|
<Heading kind="heading-m" renderAs="p">
|
|
{isRestartFailed
|
|
? createMessage(RESTART_ERROR_HEADER)
|
|
: createMessage(RESTART_BANNER_HEADER)}
|
|
</Heading>
|
|
</HeaderContents>
|
|
);
|
|
}
|
|
|
|
export default function RestartBanner() {
|
|
const isRestartFailed = useSelector(getIsRestartFailed);
|
|
const isRestarting = useSelector(getRestartingState);
|
|
const dispatch = useDispatch();
|
|
|
|
return isRestarting ? (
|
|
<RestartBannerWrapper className="t--admin-settings-restart-notice">
|
|
<OverlayBackdrop />
|
|
<RestartContainer>
|
|
<RestartMessageWrapper>
|
|
<Header />
|
|
<Text renderAs="p">
|
|
{isRestartFailed
|
|
? createMessage(RESTART_ERROR_BODY)
|
|
: createMessage(RESTART_BANNER_BODY)}
|
|
</Text>
|
|
</RestartMessageWrapper>
|
|
{isRestartFailed && (
|
|
<Button
|
|
data-testid="btn-refresh"
|
|
onClick={() => dispatch(retryServerRestart())}
|
|
size="md"
|
|
>
|
|
{createMessage(RETRY_BUTTON)}
|
|
</Button>
|
|
)}
|
|
</RestartContainer>
|
|
</RestartBannerWrapper>
|
|
) : null;
|
|
}
|