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

54 lines
1.7 KiB
TypeScript
Raw Normal View History

2023-03-08 18:04:14 -05:00
import { invoke } from '@tauri-apps/api';
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 = () => {
2023-03-08 18:04:14 -05:00
let { loading, error, retry, result } = 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 18:04:14 -05:00
const gtoken = result?.profile.state.loginState?.gToken
const onOpenSplatnet3 = async () => {
await invoke('open_splatnet', {
gtoken,
})
};
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 h-full md:max-w-sm flex-auto'>
<div className='flex flex-col gap-2 h-full'>
<LogPanel className='sm:hidden flex-auto' />
2023-03-08 12:03:57 -05:00
<RunPanel />
2023-03-08 17:38:39 -05:00
<Link to='/settings' className='btn'>{t('设置')}</Link>
<div className='flex gap-2 flex-auto-all'>
<button className='btn' onClick={onOpenSplatnet3}>{t('打开鱿鱼圈3')}</button>
<a className='btn' href={STAT_INK} target='_blank' rel='noreferrer'>{t('前往 stat.ink')}</a>
</div>
</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
}