-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathscheduleAPIError.tsx
95 lines (89 loc) · 2.53 KB
/
scheduleAPIError.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import React from "react";
import {
JVIcon,
JVTypography,
JVList,
JVListItem,
JVListItemText,
JVButton,
JVMessage,
} from "@jaspersoft/jv-ui-components";
import { useDispatch } from "react-redux";
import { useTranslation } from "react-i18next";
import { ApiFailedProps, translationProps } from "../../types/scheduleType";
import { getOutputFormats, getUserTimeZones } from "../../actions/action";
import i18nScheduler from "../../i18n";
const ErrorList = (props: { errorMsg: string }) => {
return (
<JVListItem className="jv-mList-item">
<JVListItemText className="jv-mList-item-text" primary={props.errorMsg} />
</JVListItem>
);
};
export const MessageAPIError = ({
userTimezoneApiFailure,
userOutputFormatApiFailure,
apiErrorTitle,
retryNetworkTitle,
}: ApiFailedProps) => {
const dispatch = useDispatch<any>();
const { t } = useTranslation(undefined, {
i18n: i18nScheduler,
}) as translationProps;
const onRetryBtnClick = () => {
if (userTimezoneApiFailure) dispatch(getUserTimeZones());
if (userOutputFormatApiFailure) dispatch(getOutputFormats());
};
const RetryButton = () => (
<JVButton
size="large"
className="jv-mButtonError jv-uMargin-t-04"
variant="contained"
onClick={onRetryBtnClick}
>
{t("schedule.network.retry")}
</JVButton>
);
return (
<JVMessage
type="error"
isCardHeader
className={"jv-uMargin-t-07"}
cardHeaderProps={{
isHeaderPadded: true,
avatar: (
<JVIcon
className="jv-uColor-error"
size="large"
icon="warningRound"
/>
),
title: (
<JVTypography
className="jv-mText jv-mTextTitle jv-uColor-error jv-uTextBold"
variant="h3"
>
{t("schedule.error.title")}
</JVTypography>
),
}}
cardContentProps={{
isPadded: true,
}}
>
<JVTypography variant="body1">{apiErrorTitle}</JVTypography>
{(userTimezoneApiFailure || userOutputFormatApiFailure) && (
<JVList className="jv-mList jv-uMargin-tb-02" isBulleted disablePadding>
{userTimezoneApiFailure && (
<ErrorList errorMsg={t("schedule.timezone.network.error")} />
)}
{userOutputFormatApiFailure && (
<ErrorList errorMsg={t("schedule.output.network.error")} />
)}
</JVList>
)}
<JVTypography variant="body1">{retryNetworkTitle}</JVTypography>
<RetryButton />
</JVMessage>
);
};