robosats/frontend/src/components/Dialogs/Update.tsx
KoalaSat 293c0b604d Refactor contexts and models (#921)
* Add SVG icons for map pins

* Add federation basis and new coordinator form (#793)

* Add new coordinator entry issue form

* Add Federation basis

* Fix eslint errors from F2F and fix languages

* Redo eslint @typescript-eslint/strict-boolean-expressions

* Robot Page working

* Contexts Working

* Garage Working

* CurrentOrder working

* Federation model working

---------

Co-authored-by: Reckless_Satoshi <reckless.satoshi@protonmail.com>
Co-authored-by: Reckless_Satoshi <90936742+Reckless-Satoshi@users.noreply.github.com>
2023-12-02 10:40:59 +00:00

133 lines
3.7 KiB
TypeScript

import React, { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import {
Dialog,
DialogContent,
DialogActions,
Button,
Divider,
List,
ListItemText,
ListItemIcon,
ListItemButton,
Typography,
} from '@mui/material';
import WebIcon from '@mui/icons-material/Web';
import AndroidIcon from '@mui/icons-material/Android';
import UpcomingIcon from '@mui/icons-material/Upcoming';
import { checkVer } from '../../utils';
import { type Version } from '../../models';
interface Props {
coordinatorVersion: Version;
clientVersion: Version;
onClose: () => void;
}
const UpdateDialog = ({ coordinatorVersion, clientVersion }: Props): JSX.Element => {
const { t } = useTranslation();
const [open, setOpen] = useState<boolean>(() => checkVer(coordinatorVersion));
const coordinatorString = `v${coordinatorVersion.major}-${coordinatorVersion.minor}-${coordinatorVersion.patch}`;
const clientString = `v${clientVersion.major}-${clientVersion.minor}-${clientVersion.patch}`;
useEffect(() => {
setOpen(checkVer(coordinatorVersion));
}, [coordinatorVersion]);
return (
<Dialog
open={open}
onClose={() => {
setOpen(false);
}}
>
<DialogContent>
<Typography component='h5' variant='h5'>
{t('Update your RoboSats client')}
</Typography>
<br />
<Typography>
{t(
'The RoboSats coordinator is on version {{coordinatorVersion}}, but your client app is {{clientVersion}}. This version mismatch might lead to a bad user experience.',
{ coordinatorString, clientString },
)}
</Typography>
<List dense>
<ListItemButton
component='a'
target='_blank'
href={`https://github.com/RoboSats/robosats/releases/tag/${coordinatorString}-alpha`}
rel='noreferrer'
>
<ListItemIcon>
<AndroidIcon color='primary' sx={{ height: 32, width: 32 }} />
</ListItemIcon>
<ListItemText
secondary={t('Download RoboSats {{coordinatorVersion}} APK from Github releases', {
coordinatorVersion,
})}
primary={t('On Android RoboSats app ')}
/>
</ListItemButton>
<Divider />
<ListItemButton
component='a'
target='_blank'
href={`https://hub.docker.com/r/recksato/robosats-client`}
rel='noreferrer'
>
<ListItemIcon>
<UpcomingIcon color='primary' sx={{ height: 32, width: 32 }} />
</ListItemIcon>
<ListItemText
secondary={t("Check your node's store or update the Docker image yourself")}
primary={t('On your own soverign node')}
/>
</ListItemButton>
<Divider />
<ListItemButton
component='a'
onClick={() => {
location.reload(true);
}}
>
<ListItemIcon>
<WebIcon color='primary' sx={{ height: 32, width: 32 }} />
</ListItemIcon>
<ListItemText
secondary={t(
'On Tor Browser client simply refresh your tab (click here or press Ctrl+Shift+R)',
)}
primary={t('On remotely served browser client')}
/>
</ListItemButton>
<DialogActions>
<Button
onClick={() => {
setOpen(false);
}}
>
{t('Go away!')}
</Button>
</DialogActions>
</List>
</DialogContent>
</Dialog>
);
};
export default UpdateDialog;