Update error page

This commit is contained in:
Ariful Alam
2022-03-25 23:29:06 +06:00
parent 82eb282e17
commit 8dedc09ea8
2 changed files with 68 additions and 54 deletions

View File

@@ -17,12 +17,21 @@ import PropTypes from 'prop-types';
import '../assets/index.css'; import '../assets/index.css';
const GitProfile = ({ config }) => { const GitProfile = ({ config }) => {
const [theme, setTheme] = useState(getInitialTheme(config.themeConfig)); const [theme, setTheme] = useState(
config ? getInitialTheme(config.themeConfig) : null
);
const [loading, setLoading] = useState(true); const [loading, setLoading] = useState(true);
const [profile, setProfile] = useState(null); const [profile, setProfile] = useState(null);
const [repo, setRepo] = useState(null); const [repo, setRepo] = useState(null);
const [error, setError] = useState(null); const [error, setError] = useState(
const [rateLimit, setRateLimit] = useState(null); typeof config === 'undefined'
? {
status: 500,
title: 'No Config is provided',
subTitle: 'Pass the required config as prop.',
}
: null
);
useEffect(() => { useEffect(() => {
if (theme) { if (theme) {
@@ -31,7 +40,7 @@ const GitProfile = ({ config }) => {
}, [theme]); }, [theme]);
useEffect(() => { useEffect(() => {
setupHotjar(config.hotjar); config && setupHotjar(config.hotjar);
}, []); }, []);
const loadData = useCallback(() => { const loadData = useCallback(() => {
@@ -86,56 +95,21 @@ const GitProfile = ({ config }) => {
}, [setLoading]); }, [setLoading]);
useEffect(() => { useEffect(() => {
loadData(); config && loadData();
}, [loadData]); }, [loadData]);
const handleError = (error) => { const handleError = (error) => {
console.error('Error:', error); console.error('Error:', error);
try { try {
setRateLimit({ let reset = moment(
remaining: error.response.headers['x-ratelimit-remaining'],
reset: moment(
new Date(error.response.headers['x-ratelimit-reset'] * 1000) new Date(error.response.headers['x-ratelimit-reset'] * 1000)
).fromNow(), ).fromNow();
});
if (error.response.status === 403) { if (error.response.status === 403) {
setError(429); setError({
} else if (error.response.status === 404) { status: 429,
setError(404); title: 'Too Many Requests.',
} else { subTitle: (
setError(500);
}
} catch (error2) {
setError(500);
}
};
return (
<HelmetProvider>
<HeadTagEditor
profile={profile}
theme={theme}
googleAnalytics={config.googleAnalytics}
social={config.social}
/>
<div className="fade-in h-screen">
{error ? (
<ErrorPage
status={`${error}`}
title={
error === 404
? 'The Github Username is Incorrect'
: error === 429
? 'Too Many Requests.'
: `Ops!!`
}
subTitle={
error === 404 ? (
<p>
Please provide correct github username in <code>config</code>
</p>
) : error === 429 ? (
<p> <p>
Oh no, you hit the{' '} Oh no, you hit the{' '}
<a <a
@@ -143,14 +117,54 @@ const GitProfile = ({ config }) => {
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
> >
rate limit rate limit.
</a> </a>
! Try again later{rateLimit && ` ${rateLimit.reset}`}. ! Try again later{` ${reset}`}.
</p> </p>
) : ( ),
`Something went wrong` });
) } else if (error.response.status === 404) {
setError({
status: 404,
title: 'The Github Username is Incorrect.',
subTitle: (
<p>
Please provide correct github username in <code>config</code>.
</p>
),
});
} else {
setError({
status: 500,
title: 'Ops!!',
subTitle: 'Something went wrong.',
});
} }
} catch (error2) {
setError({
status: 500,
title: 'Ops!!',
subTitle: 'Something went wrong.',
});
}
};
return (
<HelmetProvider>
{!error && (
<HeadTagEditor
profile={profile}
theme={theme}
googleAnalytics={config.googleAnalytics}
social={config.social}
/>
)}
<div className="fade-in h-screen">
{error ? (
<ErrorPage
status={`${error.status}`}
title={error.title}
subTitle={error.subTitle}
/> />
) : ( ) : (
<Fragment> <Fragment>
@@ -158,7 +172,7 @@ const GitProfile = ({ config }) => {
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6 rounded-box"> <div className="grid grid-cols-1 lg:grid-cols-3 gap-6 rounded-box">
<div className="col-span-1"> <div className="col-span-1">
<div className="grid grid-cols-1 gap-6"> <div className="grid grid-cols-1 gap-6">
{!config.themeConfig.disableSwitch && ( {!error && !config.themeConfig.disableSwitch && (
<ThemeChanger <ThemeChanger
theme={theme} theme={theme}
setTheme={setTheme} setTheme={setTheme}

View File

@@ -10,9 +10,9 @@ const ErrorPage = (props) => {
{props.status} {props.status}
</h1> </h1>
<p className="text-lg pb-2 text-base-content">{props.title}</p> <p className="text-lg pb-2 text-base-content">{props.title}</p>
<p className="text-base-content text-opacity-60"> <div className="text-base-content text-opacity-60">
{props.subTitle} {props.subTitle}
</p> </div>
</div> </div>
</div> </div>
</div> </div>
@@ -25,7 +25,7 @@ const ErrorPage = (props) => {
ErrorPage.propTypes = { ErrorPage.propTypes = {
status: PropTypes.string.isRequired, status: PropTypes.string.isRequired,
title: PropTypes.string.isRequired, title: PropTypes.string.isRequired,
subTitle: PropTypes.string.isRequired, subTitle: PropTypes.node.isRequired,
}; };
export default ErrorPage; export default ErrorPage;