s3si.ts/gui/src/pages/Home.tsx

40 lines
1.2 KiB
TypeScript
Raw Normal View History

import { ErrorContent } from 'components/ErrorContent';
import { Loading } from 'components/Loading';
import { STAT_INK } from 'constant';
import { usePromise } from 'hooks/usePromise';
2023-03-04 08:10:30 -05:00
import React from 'react'
2023-03-06 07:21:29 -05:00
import { useTranslation } from 'react-i18next';
2023-03-06 09:01:18 -05:00
import { Link } from "react-router-dom";
import { getConfig, getProfile } from 'services/config';
import { composeLoadable } from 'utils/composeLoadable';
2023-03-04 08:10:30 -05:00
2023-03-06 07:21:29 -05:00
export const Home: React.FC = () => {
let { loading, error, retry } = composeLoadable({
config: usePromise(getConfig),
profile: usePromise(() => getProfile(0)),
});
2023-03-06 07:21:29 -05:00
const { t } = useTranslation();
2023-03-03 09:06:14 -05:00
if (loading) {
return <>
<div className='h-full flex items-center justify-center'><Loading /></div>
</>
}
if (error) {
return <>
<ErrorContent error={error} retry={retry} />
</>
}
2023-03-03 09:06:14 -05:00
return <>
2023-03-06 07:21:29 -05:00
<div className='card m-2 h-full'>
<h1 className='mb-4'>{t('欢迎!')}</h1>
<div className='flex flex-col gap-2'>
<Link to='/settings' className='btn btn-primary'>{t('配置')}</Link>
<a className='btn' href={STAT_INK} target='_blank' rel='noreferrer'>{t('前往 stat.ink')}</a>
</div>
2023-03-06 07:21:29 -05:00
</div>
2023-03-03 09:06:14 -05:00
</>
2023-03-04 06:19:24 -05:00
}