Move flipper-doctor check running to flipper-server-core

Summary: Per title. Two new server API's: get-healthchecks, and run-healtcheck. Types have all been moved to flipper-common, so that they can be used by doctor, server-core and ui-core packages. Since it were quite some, moved them into a FlipperDoctor namespace.

Reviewed By: nikoant

Differential Revision: D32720510

fbshipit-source-id: 37aa35cde6ebd58479cf0dffec5b7b2da6d22198
This commit is contained in:
Michel Weststrate
2021-12-08 04:25:28 -08:00
committed by Facebook GitHub Bot
parent 2a4fe77404
commit 2480ed30c5
19 changed files with 373 additions and 276 deletions

View File

@@ -18,12 +18,6 @@ import {
LoadingOutlined,
} from '@ant-design/icons';
import {Layout} from '../ui';
import {
HealthcheckReport,
HealthcheckReportItem,
HealthcheckStatus,
HealthcheckResult,
} from '../reducers/healthchecks';
import {theme} from 'flipper-plugin';
import {
startHealthchecks,
@@ -33,13 +27,14 @@ import {
resetAcknowledgedProblems,
} from '../reducers/healthchecks';
import runHealthchecks from '../utils/runHealthchecks';
import {Healthchecks} from 'flipper-doctor';
import type {FlipperDoctor} from 'flipper-common';
type Healthchecks = FlipperDoctor.Healthchecks;
import {reportUsage} from 'flipper-common';
const {Title, Paragraph, Text} = Typography;
const statusTypeAndMessage: {
[key in HealthcheckStatus]: {
[key in FlipperDoctor.HealthcheckStatus]: {
type: 'success' | 'info' | 'warning' | 'error';
message: string;
};
@@ -67,15 +62,15 @@ const statusTypeAndMessage: {
},
};
function checkHasProblem(result: HealthcheckResult) {
function checkHasProblem(result: FlipperDoctor.HealthcheckResult) {
return result.status === 'FAILED' || result.status === 'WARNING';
}
export function checkHasNewProblem(result: HealthcheckResult) {
export function checkHasNewProblem(result: FlipperDoctor.HealthcheckResult) {
return checkHasProblem(result) && !result.isAcknowledged;
}
function ResultTopDialog(props: {status: HealthcheckStatus}) {
function ResultTopDialog(props: {status: FlipperDoctor.HealthcheckStatus}) {
const messages = statusTypeAndMessage[props.status];
return (
<Alert
@@ -92,7 +87,7 @@ function ResultTopDialog(props: {status: HealthcheckStatus}) {
);
}
function CheckIcon(props: {status: HealthcheckStatus}) {
function CheckIcon(props: {status: FlipperDoctor.HealthcheckStatus}) {
switch (props.status) {
case 'SUCCESS':
return (
@@ -119,7 +114,9 @@ function CheckIcon(props: {status: HealthcheckStatus}) {
}
}
function CollapsableCategory(props: {checks: Array<HealthcheckReportItem>}) {
function CollapsableCategory(props: {
checks: Array<FlipperDoctor.HealthcheckReportItem>;
}) {
return (
<Collapse ghost>
{props.checks.map((check) => (
@@ -134,7 +131,7 @@ function CollapsableCategory(props: {checks: Array<HealthcheckReportItem>}) {
);
}
function HealthCheckList(props: {report: HealthcheckReport}) {
function HealthCheckList(props: {report: FlipperDoctor.HealthcheckReport}) {
useEffect(() => reportUsage('doctor:report:opened'), []);
return (
<Layout.Container gap>
@@ -241,7 +238,7 @@ export default function SetupDoctorScreen(props: {
updateHealthcheckResult: (
categoryKey: string,
itemKey: string,
result: HealthcheckResult,
result: FlipperDoctor.HealthcheckResult,
) => dispatch(updateHealthcheckResult(categoryKey, itemKey, result)),
finishHealthchecks: () => dispatch(finishHealthchecks()),
});