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

110 lines
5.0 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-10-15 16:47:32 +02:00
import { isIOS, isSafari } 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 - ' +
2021-10-15 16:47:32 +02:00
'for other platforms, please create a photo card or ensure you have an application which can open Apple Wallet .pkpass files');
2021-09-28 09:02:16 +02:00
}
2021-09-29 15:33:10 +02:00
}, []);
2021-10-15 16:47:32 +02:00
const title = 'Grassroots - ON/BC/QC/AB/SK/NS/YK/NY/CA/LA vaccination QR Code import for Apple and Android devices';
const description = 'Grassroots imports vaccination QR codes from ON/BC/QC/AB/SK/NS/YK/NY/CA/LA and stores them on Apple and Android devices in a convenient, secure, and 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-10-15 16:47:32 +02:00
images: [
{
url: 'https://grassroots.vaccine-ontario.ca/grassroots.jpg',
width: 400,
height: 400,
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/>
2021-10-15 16:47:32 +02:00
<b>MAJOR NEW RELEASE! </b>Oct 15 morning update:
<br />
<br />
<ul className="list-decimal list-outside" style={{ marginLeft: '20px' }}>
2021-10-15 16:47:32 +02:00
<li>You can now import the new enhanced receipt from Ontario onto your Apple or Android devices</li>
<li>Support released for importing Ontario, British Columbia, Alberta, Saskatchewan, Nova Scotia, Québec, Yukon, California, New York, and Louisiana SHC QR codes</li>
<li>Support released for importing QR codes from images as well as from PDFs</li>
<li>Support for creating our previous interim QR codes has been removed - now that the official Ontario QR code is being released and the gap is filled, our QR codes are no longer needed</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;