Merge branch 'main' into fastlink-to-original-pdf

This commit is contained in:
Billy Lo 2021-10-25 20:53:23 -04:00
commit 5c14891012
9 changed files with 175 additions and 14 deletions

View File

@ -15,7 +15,7 @@ interface DropdownProps {
export default function Dropdown(props: DropdownProps) {
const { label, options } = props;
return (
<Menu as="div" className="relative inline-block text-left w-full">
<Menu as="div" className="relative inline-block text-left w-full z-20">
<Menu.Button className="inline-flex justify-center w-full bg-green-600 py-2 px-3 text-white font-semibold rounded-md disabled:bg-gray-400">
{label}
<svg className=" h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 10" fill="currentColor" aria-hidden="true">

View File

@ -42,11 +42,12 @@ const getTheme = () => {
const options = [
{ label: 'Alberta', value: 'https://covidrecords.alberta.ca/form'},
{ label: 'British Columbia', value: 'https://www.healthgateway.gov.bc.ca/vaccinecard'},
{ label: 'Ontario', value: 'https://covid19.ontariohealth.ca'},
{ label: 'Manitoba', value: 'https://www.gov.mb.ca/covid19/vaccine/immunizationrecord/residents.html'},
{ label: 'Newfoundland and Labrador', value: 'https://vaccineportal.nlchi.nl.ca/'},
{ label: 'Northwest Territories', value: 'https://www.gov.nt.ca/covid-19/en/request/proof-vaccination'},
{ label: 'Nunavut', value: 'https://gov.nu.ca/sites/default/files/covid_proof_of_vaccination_qa_for_nunavut_october_14_2021.pdf'},
{ label: 'Nova Scotia', value: 'https://novascotia.flow.canimmunize.ca/en/portal'},
{ label: 'Ontario', value: 'https://covid19.ontariohealth.ca'},
{ label: 'Prince Edward Island', value: 'https://pei.flow.canimmunize.ca/en/portal'},
{ label: 'Québec', value: 'https://covid19.quebec.ca/PreuveVaccinale'},
{ label: 'Saskatchewan', value: 'https://services.saskatchewan.ca/#/login'},

View File

@ -32,7 +32,7 @@ function Page(props: PageProps): JSX.Element {
<a href="https://github.com/billylo1/covidpass" className="underline">{t('common:gitHub')}</a>
<a href="https://vaccine-ontario.ca" className="underline">{t('common:returnToMainSite')}</a>
</nav>
<div className="flex pt-4 flex-row space-x-4 justify-center text-md flex-wrap">Last updated: 2021-10-23 (v2.2.3)</div>
<div className="flex pt-4 flex-row space-x-4 justify-center text-md flex-wrap">Last updated: 2021-10-25 (v2.2.5)</div>
</footer>
</main>
</div>

View File

@ -0,0 +1,158 @@
{
"iss": "https://pvc.gov.nu.ca/pvc",
"vc": {
"credentialSubject": {
"fhirBundle": {
"resourceType": "Bundle",
"entry": [
{
"resource": {
"resourceType": "Patient",
"name": [
{
"given": [
"FIRSTNAME"
],
"family": "LASTNAME"
}
],
"birthDate": "YYYY-MM-DD"
},
"fullUrl": "resource:0"
},
{
"resource": {
"status": "completed",
"performer": [
{
"actor": {
"display": "NU, Canada"
}
}
],
"patient": {
"reference": "resource:0"
},
"resourceType": "Immunization",
"lotNumber": "SOME_STRING",
"vaccineCode": {
"coding": [
{
"code": "207",
"system": "http://hl7.org/fhir/sid/cvx"
}
]
},
"meta": {
"security": [
{
"code": "IAL1.4",
"system": "https://smarthealth.cards/ial"
}
]
},
"occurrenceDateTime": "YYYY-MM-DD",
"manufacturer": {
"identifier": {
"system": "http://hl7.org/fhir/sid/mvx",
"value": "MOD"
}
}
},
"fullUrl": "resource:1"
},
{
"resource": {
"status": "completed",
"performer": [
{
"actor": {
"display": "NU, Canada"
}
}
],
"patient": {
"reference": "resource:0"
},
"resourceType": "Immunization",
"lotNumber": "SOME_STRING",
"vaccineCode": {
"coding": [
{
"code": "207",
"system": "http://hl7.org/fhir/sid/cvx"
}
]
},
"meta": {
"security": [
{
"code": "IAL1.4",
"system": "https://smarthealth.cards/ial"
}
]
},
"occurrenceDateTime": "YYYY-MM-DD",
"manufacturer": {
"identifier": {
"system": "http://hl7.org/fhir/sid/mvx",
"value": "MOD"
}
}
},
"fullUrl": "resource:2"
},
{
"resource": {
"status": "completed",
"performer": [
{
"actor": {
"display": "NU, Canada"
}
}
],
"patient": {
"reference": "resource:0"
},
"resourceType": "Immunization",
"lotNumber": "SOME_STRING",
"vaccineCode": {
"coding": [
{
"code": "208",
"system": "http://hl7.org/fhir/sid/cvx"
}
]
},
"meta": {
"security": [
{
"code": "IAL1.4",
"system": "https://smarthealth.cards/ial"
}
]
},
"occurrenceDateTime": "YYYY-MM-DD",
"manufacturer": {
"identifier": {
"system": "http://hl7.org/fhir/sid/mvx",
"value": "PFR"
}
}
},
"fullUrl": "resource:3"
}
],
"type": "collection"
},
"fhirVersion": "4.0.1"
},
"type": [
"https://smarthealth.cards#health-card",
"https://smarthealth.cards#covid19",
"https://smarthealth.cards#immunization"
]
},
"nbf": 1635194428.0
}

View File

@ -1,6 +1,6 @@
{
"name": "grassroots_covidpass",
"version": "2.2.3",
"version": "2.2.5",
"author": "Billy Lo <billy@vaccine-ontario.ca>",
"license": "MIT",
"private": false,

View File

@ -42,8 +42,8 @@ function Index(): JSX.Element {
}, []);
const title = 'Grassroots - vaccination QR Code import for Apple and Android devices. Supports most Canadian provinces/territories and many US states';
const description = 'Grassroots imports vaccination QR codes and stores them on Apple and Android devices in a convenient, secure, and privacy-respecting way. Supports SHC QR codes from most Canadian provinces/territories and many US states';
const title = 'Grassroots - vaccination QR Code import for Apple and Android devices. Supports most Canadian provinces and territories';
const description = 'Grassroots imports vaccination QR codes and stores them on Apple and Android devices in a convenient, secure, and privacy-respecting way. Supports SHC QR codes from most Canadian provinces and territories';
return (
<>
@ -80,11 +80,12 @@ function Index(): JSX.Element {
<div className="region-section">
<div className="region-card">Alberta</div>
<div className="region-card">British Columbia</div>
<div className="region-card">Ontario</div>
<div className="region-card">Manitoba (NEW QR CODES ONLY)</div>
<div className="region-card">Newfoundland and Labrador</div>
<div className="region-card">Northwest Territories</div>
<div className="region-card">Nova Scotia</div>
<div className="region-card">Nunavut</div>
<div className="region-card">Ontario</div>
<div className="region-card">Prince Edward Island</div>
<div className="region-card">Québec</div>
<div className="region-card">Saskatchewan</div>
@ -106,11 +107,12 @@ function Index(): JSX.Element {
<div className="region-card">Virginia</div>
</div> */}
<b>{displayPassCount}</b><br/><br/>
<b>Nunavut support added</b> - Oct 25th update:
<b>Nunavut and Manitoba support added</b> - Oct 25th update:
<br />
<br />
<ul className="list-decimal list-outside" style={{ marginLeft: '20px' }}>
<li>Thank you very much to the Government of Nunavut for proactively reaching out to us to allow us to add support for Nunavummiut!</li>
<li>Support for newly-released Manitoba federal-standard QR codes</li>
<li>(Often-requested) support added for importing proof-of-vaccination into Google Pay on Android 8.1+</li>
<li>You can now scan QR codes directly off of paper or a screen with your camera, eliminating the need to upload PDFs or pictures</li>
<li>Support added for importing QR codes from images as well as from PDFs</li>

View File

@ -18,17 +18,17 @@ redWhiteA: Yes you can! Just call the Provincial Vaccine Contact Centre at 1-833
noOhipQ: I do not have a health card. Can I still use this tool?
noOhipA: First contact your local public health unit to verify your identity and receive a COVIDcovid ID/Personal Access Code. You can then call the Provincial Vaccine Contact Centre at 1-833-943-3900 to get an email copy of your receipt.
colourQ: Why isn't the new Apple Wallet pass green/orange?
colourA: Because we now allow importing of QR codes from many provinces and states, and those provinces and states have different eligibility rules, we can no longer reliably determine who is or is not fully vaccinated at receipt import time.
colourA: Because we now allow importing of QR codes from many provinces and territories, and those regions have different eligibility rules, we can no longer reliably determine who is or is not fully vaccinated at receipt import time.
dataQ: How is the data on my vaccination receipt processed?
dataA: Inside your local web browser, it checks the uploaded PDF or image for a valid QR code. If present, the QR code is converted and added to Apple Wallet, Google Pay, or saved as a photo depending upon the option you choose.
verifyQ: How can organizations validate this QR code?
verifyA: The %s is the verification application for the new official Ontario QR codes. For other provinces and states, the official validation systems they offer are the ones to use.
verifyA: The %s is the verification application for the new official Ontario QR codes. For other provinces and territories, the official validation systems they offer are the ones to use.
familyQ: Can I use the same mobile wallet to store passes for my entire family?
familyA: Yes. You can save multiple Apple Wallet, Google Pay, or Photo cards on your device without issues.
freeQ: Is this free and non-commercial?
freeA: Similar to %s, there are no commercial interests. Just volunteers trying to do our part to help the community.
otherProvincesQ: How about support for other provinces or US states?
otherProvincesA: We now have support for Ontario, British Columbia, Québec, Alberta, Saskatchewan, Nova Scotia, Yukon, Northwest Territories, Nunavut, Newfoundland and Labrador, Prince Edward Island, California, New York, New Jersey, Louisiana, Hawaii, Virginia, Utah, Kentucky, Oklahoma, New Mexico, Nevada, Connecticut, and Delaware QR codes. If you have a QR code that is not currently supported by our app, please contact us at %s
otherProvincesQ: How about support for other provinces and territories?
otherProvincesA: We now have support for Ontario, British Columbia, Québec, Alberta, Saskatchewan, Manitoba (new QR codes only), Nova Scotia, Yukon, Northwest Territories, Nunavut, Newfoundland and Labrador, and Prince Edward Island QR codes. If you have a QR code that is not currently supported by our app, please contact us at %s
appleWatchQ: How about Apple Watch?
appleWatchA: If you have iCloud sync enabled, you will see the pass on the watch too. Please be aware though that the new QR codes may be too large to display accurately on older Apple Watches due to their screen size.
whyQ: Why have we taken time to build this?

View File

@ -3,7 +3,7 @@ import { Integrations } from '@sentry/tracing';
export const initSentry = () => {
SentryModule.init({
release: 'grassroots_covidpass@2.2.3', // App version. Needs to be manually updated as we go unless we make the build smarter
release: 'grassroots_covidpass@2.2.5', // App version. Needs to be manually updated as we go unless we make the build smarter
dsn: 'https://7120dcf8548c4c5cb148cdde2ed6a778@o1015766.ingest.sentry.io/5981424',
integrations: [
new Integrations.BrowserTracing(),

View File

@ -60,7 +60,7 @@ function decodeJWSPayload(decodedPayload) {
try {
//console.log(decompressedResult);
scannedResult = decompressedResult.toString("utf8");
resolve(JSON.parse(scannedResult));
resolve(JSON.parse(scannedResult.trim()));
} catch (e) {
reject(e);
}