covidpass-greenpass-su-ipho.../pages/index.tsx

110 lines
4.6 KiB
TypeScript
Raw Normal View History

import {NextSeo} from 'next-seo';
2021-07-02 20:55:26 +02:00
import {useTranslation} from 'next-i18next';
import {serverSideTranslations} from 'next-i18next/serverSideTranslations';
2021-07-02 20:55:26 +02:00
import Form from '../components/Form';
import Card from '../components/Card';
import Page from '../components/Page';
import Alert from '../components/Alert';
2021-09-28 09:09:42 +02:00
import React, { useEffect, useState } from 'react';
2021-09-25 07:15:35 +02:00
import { isIOS, isSafari, isAndroid} from 'react-device-detect';
import usePassCount from "../src/hooks/use_pass_count";
2021-09-28 09:09:42 +02:00
import Link from 'next/link'
function Index(): JSX.Element {
2021-07-02 20:55:26 +02:00
const { t } = useTranslation(['common', 'index', 'errors']);
const passCount = usePassCount();
const displayPassCount = (passCount? `${passCount} receipts have been processed successfully to date!` : '');
2021-07-09 03:22:14 +02:00
2021-09-25 07:15:35 +02:00
const [warningMessages, _setWarningMessages] = useState<Array<string>>([]);
const setWarningMessage = (message: string) => {
if (!message) return;
const translation = t('errors:'.concat(message));
_setWarningMessages(Array.from(new Set([...warningMessages, translation !== message ? translation : message])));
};
const deleteWarningMessage = (message: string) => _setWarningMessages(warningMessages.filter(item => item !== message));
2021-09-28 09:02:16 +02:00
useEffect(() => {
if (isIOS && !isSafari) setWarningMessage("iPhone users, only Safari is supported at the moment. Please switch to Safari to prevent any unexpected errors.")
else if (!isIOS) {
setWarningMessage('Only Safari on iOS is officially supported for Apple Wallet import at the moment - ' +
'for other platforms, please ensure you have an application which can open Apple Wallet .pkpass files');
}
})
2021-09-24 03:19:37 +02:00
// If you previously created a vaccination receipt before Sept. 23rd and need to add your date of birth on your vaccination receipt, please reimport your Ministry of Health official vaccination receipt again below and the date of birth will now be visible on the created receipt
2021-08-27 18:36:27 +02:00
const title = 'Grassroots - Ontario vaccination receipt to your Apple wallet';
const description = 'Stores it on iPhone with a QR code for others to validate in a privacy respecting way.';
2021-07-02 20:55:26 +02:00
return (
<>
<NextSeo
2021-07-09 03:22:14 +02:00
title={title}
2021-07-09 03:19:04 +02:00
description={description}
openGraph={{
2021-08-27 18:36:27 +02:00
url: 'https://grassroots.vaccine-ontario.ca/',
2021-07-09 03:22:14 +02:00
title: title,
2021-07-09 03:19:04 +02:00
description: description,
2021-08-27 18:36:27 +02:00
// images: [
// {
// url: 'https://covidpass.marvinsextro.de/thumbnail.png',
// width: 1000,
// height: 500,
// alt: description,
// }
// ],
2021-07-09 03:22:14 +02:00
site_name: title,
}}
twitter={{
handle: '@grassroots_team',
site: '@grassroots_team',
cardType: 'summary_large_image',
}}
/>
<Page content={
<div className="space-y-5">
{warningMessages.map((message, i) =>
2021-09-28 09:02:16 +02:00
<Alert message={message} key={'error-' + i} type="warning" onClose={() => deleteWarningMessage(message)} />
)}
<Card content={
<div><p>{t('common:subtitle')}</p><br /><p>{t('common:subtitle2')}</p><br />
<b>{displayPassCount}</b><br/><br/>
Sept 27 afternoon updates:
<br />
<br />
<ul className="list-decimal list-outside" style={{ marginLeft: '20px' }}>
<li>Simplified instructions</li>
<li>Extra details added to FAQs</li>
</ul><br />
<p>{t('common:continueSpirit')}</p>
2021-09-28 09:09:42 +02:00
<br />
<Link href="https://www.youtube.com/watch?v=AIrG5Qbjptg">
<a className="underline" target="_blank">
Click here for a video demo
</a>
</Link>&nbsp;
</div>
}/>
<Form/>
</div>
}/>
</>
)
}
2021-09-19 18:21:59 +02:00
2021-07-03 11:59:59 +02:00
export async function getStaticProps({ locale }) {
2021-07-02 20:55:26 +02:00
return {
props: {
...(await serverSideTranslations(locale, ['common', 'index', 'errors'])),
},
};
}
export default Index;