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

43 lines
1.4 KiB
TypeScript
Raw Normal View History

import { ErrorContent } from 'components/ErrorContent';
import { Loading } from 'components/Loading';
2023-03-08 16:36:14 -05:00
import { LogPanel, RunPanel } from 'components/RunPanel';
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-08 16:36:14 -05:00
return <div className='flex p-2 w-full h-full gap-2'>
<div className='max-w-full md:max-w-sm flex-auto'>
<div className='flex flex-col gap-2'>
2023-03-08 16:36:14 -05:00
<LogPanel className='sm:hidden max-h-[10rem]' />
2023-03-08 12:03:57 -05:00
<RunPanel />
<Link to='/settings' className='btn'>{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-08 16:36:14 -05:00
<LogPanel className='hidden sm:block flex-1' />
</div>
2023-03-04 06:19:24 -05:00
}