From 101473a3f4d57c355cc08982cf3ee25795f899f3 Mon Sep 17 00:00:00 2001 From: Andrea Date: Wed, 27 Nov 2024 09:43:21 +0100 Subject: [PATCH] feat: [IOCOM-1897] Remove Green Pass (#6427) ## Short description This PR removes the legacy Green Pass code. |iOS|Android| |-|-| |![GreenPassiOS](https://github.com/user-attachments/assets/bd4283a4-37c6-4ebf-83f7-de9e6c7c7ff6)|![GreenPassAndroid](https://github.com/user-attachments/assets/1ff9a94e-df3b-4f67-a8a1-c79b82a08e2e)| ## List of changes proposed in this pull request - All related green pass code has been removed - New screen to handle message selection - **[extra]** Remove legacy pictograms by refactoring the legacy screens using `OperationResultScreenContent` - **[extra]** Remove `DSLegacyPictograms` from the DS section ## How to test Using the related branch on io-dev-api-server, check that messages still work and that Green Pass messages are handled with the new screen. --------- Co-authored-by: Damiano Plebani Co-authored-by: Martino Cesari Tomba <60693085+forrest57@users.noreply.github.com> --- .env.local | 2 - .env.production | 2 - .github/workflows/test-e2e.yml | 2 - android/app/src/main/AndroidManifest.xml | 4 - android/settings.gradle | 2 - assets/SiciliaVola.yml | 1111 ----------------- img/broken-link.png | Bin 4604 -> 0 bytes .../euCovidCert/certificate_expired.png | Bin 5345 -> 0 bytes .../euCovidCert/certificate_not_found.png | Bin 16108 -> 0 bytes .../euCovidCert/certificate_revoked.png | Bin 2851 -> 0 bytes .../euCovidCert/certificate_wrong_format.png | Bin 5266 -> 0 bytes img/features/euCovidCert/eu-flag.png | Bin 6157 -> 0 bytes img/features/messages/alert_header.svg | 3 - img/features/messages/pn_message_badge.svg | 3 - img/messages/empty-due-date-list-icon.png | Bin 9315 -> 0 bytes img/messages/empty-due-date-list-icon@2x.png | Bin 20626 -> 0 bytes img/messages/empty-due-date-list-icon@3x.png | Bin 33487 -> 0 bytes img/messages/empty-transaction-list-icon.png | Bin 3267 -> 0 bytes .../empty-transaction-list-icon@2x.png | Bin 5584 -> 0 bytes .../empty-transaction-list-icon@3x.png | Bin 8117 -> 0 bytes img/pictograms/doubt.png | Bin 7091 -> 0 bytes img/pictograms/payment-completed-2x.png | Bin 12578 -> 0 bytes img/pictograms/payment-completed.png | Bin 5805 -> 0 bytes img/wallet/cards-icons/abiLogoFallback.png | Bin 12580 -> 0 bytes img/wallet/errors/generic-error-icon.png | Bin 8748 -> 0 bytes img/wallet/errors/generic-error-icon.svg | 11 - img/wallet/errors/generic-error-icon@2x.png | Bin 18870 -> 0 bytes img/wallet/errors/generic-error-icon@3x.png | Bin 29794 -> 0 bytes img/wallet/errors/payment-expired-icon.png | Bin 10282 -> 0 bytes img/wallet/errors/payment-expired-icon.svg | 11 - img/wallet/errors/payment-expired-icon@2x.png | Bin 21603 -> 0 bytes img/wallet/errors/payment-expired-icon@3x.png | Bin 33730 -> 0 bytes .../errors/payment-unavailable-icon.png | Bin 8517 -> 0 bytes .../errors/payment-unavailable-icon.svg | 11 - .../errors/payment-unavailable-icon@2x.png | Bin 17638 -> 0 bytes .../errors/payment-unavailable-icon@3x.png | Bin 27642 -> 0 bytes img/wallet/errors/payment-unknown-icon.png | Bin 7727 -> 0 bytes img/wallet/errors/payment-unknown-icon.svg | 11 - img/wallet/errors/payment-unknown-icon@2x.png | Bin 16751 -> 0 bytes img/wallet/errors/payment-unknown-icon@3x.png | Bin 26578 -> 0 bytes ios/Podfile.lock | 12 - jest-e2e.config.js | 2 +- jest.config.js | 2 +- jest.config.no.timezone.js | 2 +- jestSetup.js | 2 - locales/de/index.yml | 50 - locales/en/index.yml | 54 +- locales/it/index.yml | 54 +- package.json | 4 - scripts/api-config.json | 2 +- .../__tests__/TosWebviewComponent.test.tsx | 1 - .../screens/GenericErrorComponent.tsx | 13 +- ts/config.ts | 4 - .../bonus/cdc/components/CdcGenericError.tsx | 50 +- .../cdc/components/CdcRequestCompleted.tsx | 56 +- .../components/CdcRequestPartiallySuccess.tsx | 49 +- .../bonus/cdc/components/CdcWrongFormat.tsx | 47 +- .../common/components/TosBonusComponent.tsx | 9 +- .../__snapshots__/index.test.ts.snap | 3 - ts/features/common/store/reducers/index.ts | 6 - .../design-system/core/DSLegacyPictograms.tsx | 163 --- .../design-system/navigation/navigator.tsx | 9 - .../design-system/navigation/params.ts | 1 - .../design-system/navigation/routes.ts | 4 - .../__e2e__/euCovidCertExpired00.e2e.ts | 38 - .../__e2e__/euCovidCertRevoked00.e2e.ts | 38 - .../__e2e__/euCovidCertValid00.e2e.ts | 35 - .../__e2e__/euCovidCertValid01.e2e.ts | 34 - .../__e2e__/euCovidCertValid02.e2e.ts | 30 - .../__e2e__/euCovidCertValid03.e2e.ts | 48 - ts/features/euCovidCert/__e2e__/utils.ts | 20 - ts/features/euCovidCert/analytics/index.ts | 62 - .../euCovidCert/api/backendEuCovidCert.ts | 42 - .../euCovidCert/components/EUCovidContext.tsx | 7 - .../components/EuCovidCertHeader.tsx | 49 - .../components/EuCovidCertLearnMoreLink.tsx | 25 - .../components/FlashAnimatedComponent.tsx | 87 -- .../components/MarkdownHandleCustomLink.tsx | 37 - .../__test__/EuCovidCertHeader.test.tsx | 59 - .../EuCovidCertHeader.test.tsx.snap | 82 -- ts/features/euCovidCert/navigation/actions.ts | 58 - .../euCovidCert/navigation/navigator.tsx | 26 - ts/features/euCovidCert/navigation/params.ts | 10 - ts/features/euCovidCert/navigation/routes.ts | 8 - ts/features/euCovidCert/saga/index.ts | 33 - .../networking/handleGetEuCovidCertificate.ts | 168 --- .../saga/orchestration/placeholder | 0 .../screens/BaseEuCovidCertificateLayout.tsx | 56 - .../screens/EuCovidCertExpiredScreen.tsx | 55 - .../screens/EuCovidCertLoadingScreen.tsx | 45 - .../screens/EuCovidCertRevokedScreen.tsx | 79 -- .../EuCovidCertificateRouterScreen.tsx | 146 --- .../EUCovidCertExpiredScreen.test.tsx | 50 - .../EUCovidCertRevokedScreen.test.tsx | 45 - .../__test__/EUCovidCertValidScreen.test.tsx | 155 --- .../EuCovidCertificateRouterScreen.test.tsx | 218 ---- .../ko/EuCovidCertGenericErrorKoScreen.tsx | 74 -- .../ko/EuCovidCertNotFoundKoScreen.tsx | 116 -- .../ko/EuCovidCertNotOperationalKoScreen.tsx | 35 - ...vidCertTemporarilyNotAvailableKoScreen.tsx | 39 - .../ko/EuCovidCertWrongFormatKoScreen.tsx | 117 -- .../EuCovidCertNotFoundKoScreen.test.tsx | 88 -- .../EuCovidCertWrongFormatKoScreen.test.tsx | 89 -- .../EuCovidCertMarkdownDetailsScreen.tsx | 142 --- .../valid/EuCovidCertQrCodeFullScreen.tsx | 68 - .../screens/valid/EuCovidCertValidScreen.tsx | 306 ----- .../euCovidCert/store/actions/index.ts | 22 - .../reducers/__test__/byAuthCode.test.ts | 258 ---- .../euCovidCert/store/reducers/byAuthCode.ts | 97 -- .../euCovidCert/store/reducers/index.ts | 15 - .../euCovidCert/types/EUCovidCertificate.ts | 58 - .../types/EUCovidCertificateResponse.ts | 62 - .../types/__mock__/EUCovidCertificate.mock.ts | 53 - .../EUCovidCertificateResponse.mock.ts | 18 - .../utils/__test__/screenshot.test.ts | 66 - ts/features/euCovidCert/utils/screenshot.ts | 94 -- .../messages/navigation/MessagesNavigator.tsx | 10 +- ts/features/messages/navigation/params.ts | 4 +- ts/features/messages/navigation/routes.ts | 3 +- .../__test__/handleLoadMessageData.test.ts | 19 +- .../messages/saga/handleLoadMessageData.ts | 5 +- .../screens/MessageGreenPassScreen.tsx | 27 + .../messages/screens/MessageRouterScreen.tsx | 14 +- .../__tests__/MessageGreenPassScreen.test.tsx | 68 + .../__tests__/MessageRouterScreen.test.tsx | 4 +- .../MessageGreenPassScreen.test.tsx.snap | 668 ++++++++++ ts/features/messages/store/actions/index.ts | 2 +- .../payments/transaction/store/saga/index.ts | 3 - ts/sagas/startup.ts | 7 - .../ServicePreferenceCompleteScreen.tsx | 30 +- ts/store/actions/types.ts | 2 - ts/store/middlewares/analytics.ts | 2 - ts/store/middlewares/navigation.ts | 7 - .../reducers/__tests__/backoffError.test.ts | 60 - ts/store/reducers/backoffError.ts | 76 -- ts/store/reducers/backoffErrorConfig.ts | 27 - ts/store/reducers/index.ts | 2 - ts/store/reducers/types.ts | 2 - ts/urls.ts | 3 - ts/utils/analytics.ts | 12 - ts/utils/backoffError.ts | 39 - ts/utils/image.ts | 5 - ts/utils/permission.ts | 20 - ts/utils/share.ts | 50 - yarn.lock | 10 - 145 files changed, 877 insertions(+), 5738 deletions(-) delete mode 100644 assets/SiciliaVola.yml delete mode 100644 img/broken-link.png delete mode 100644 img/features/euCovidCert/certificate_expired.png delete mode 100644 img/features/euCovidCert/certificate_not_found.png delete mode 100644 img/features/euCovidCert/certificate_revoked.png delete mode 100644 img/features/euCovidCert/certificate_wrong_format.png delete mode 100644 img/features/euCovidCert/eu-flag.png delete mode 100644 img/features/messages/alert_header.svg delete mode 100644 img/features/messages/pn_message_badge.svg delete mode 100644 img/messages/empty-due-date-list-icon.png delete mode 100644 img/messages/empty-due-date-list-icon@2x.png delete mode 100644 img/messages/empty-due-date-list-icon@3x.png delete mode 100644 img/messages/empty-transaction-list-icon.png delete mode 100644 img/messages/empty-transaction-list-icon@2x.png delete mode 100644 img/messages/empty-transaction-list-icon@3x.png delete mode 100644 img/pictograms/doubt.png delete mode 100644 img/pictograms/payment-completed-2x.png delete mode 100644 img/pictograms/payment-completed.png delete mode 100644 img/wallet/cards-icons/abiLogoFallback.png delete mode 100755 img/wallet/errors/generic-error-icon.png delete mode 100755 img/wallet/errors/generic-error-icon.svg delete mode 100755 img/wallet/errors/generic-error-icon@2x.png delete mode 100755 img/wallet/errors/generic-error-icon@3x.png delete mode 100755 img/wallet/errors/payment-expired-icon.png delete mode 100755 img/wallet/errors/payment-expired-icon.svg delete mode 100755 img/wallet/errors/payment-expired-icon@2x.png delete mode 100755 img/wallet/errors/payment-expired-icon@3x.png delete mode 100755 img/wallet/errors/payment-unavailable-icon.png delete mode 100755 img/wallet/errors/payment-unavailable-icon.svg delete mode 100755 img/wallet/errors/payment-unavailable-icon@2x.png delete mode 100755 img/wallet/errors/payment-unavailable-icon@3x.png delete mode 100755 img/wallet/errors/payment-unknown-icon.png delete mode 100755 img/wallet/errors/payment-unknown-icon.svg delete mode 100755 img/wallet/errors/payment-unknown-icon@2x.png delete mode 100755 img/wallet/errors/payment-unknown-icon@3x.png delete mode 100644 ts/features/design-system/core/DSLegacyPictograms.tsx delete mode 100644 ts/features/euCovidCert/__e2e__/euCovidCertExpired00.e2e.ts delete mode 100644 ts/features/euCovidCert/__e2e__/euCovidCertRevoked00.e2e.ts delete mode 100644 ts/features/euCovidCert/__e2e__/euCovidCertValid00.e2e.ts delete mode 100644 ts/features/euCovidCert/__e2e__/euCovidCertValid01.e2e.ts delete mode 100644 ts/features/euCovidCert/__e2e__/euCovidCertValid02.e2e.ts delete mode 100644 ts/features/euCovidCert/__e2e__/euCovidCertValid03.e2e.ts delete mode 100644 ts/features/euCovidCert/__e2e__/utils.ts delete mode 100644 ts/features/euCovidCert/analytics/index.ts delete mode 100644 ts/features/euCovidCert/api/backendEuCovidCert.ts delete mode 100644 ts/features/euCovidCert/components/EUCovidContext.tsx delete mode 100644 ts/features/euCovidCert/components/EuCovidCertHeader.tsx delete mode 100644 ts/features/euCovidCert/components/EuCovidCertLearnMoreLink.tsx delete mode 100644 ts/features/euCovidCert/components/FlashAnimatedComponent.tsx delete mode 100644 ts/features/euCovidCert/components/MarkdownHandleCustomLink.tsx delete mode 100644 ts/features/euCovidCert/components/__test__/EuCovidCertHeader.test.tsx delete mode 100644 ts/features/euCovidCert/components/__test__/__snapshots__/EuCovidCertHeader.test.tsx.snap delete mode 100644 ts/features/euCovidCert/navigation/actions.ts delete mode 100644 ts/features/euCovidCert/navigation/navigator.tsx delete mode 100644 ts/features/euCovidCert/navigation/params.ts delete mode 100644 ts/features/euCovidCert/navigation/routes.ts delete mode 100644 ts/features/euCovidCert/saga/index.ts delete mode 100644 ts/features/euCovidCert/saga/networking/handleGetEuCovidCertificate.ts delete mode 100644 ts/features/euCovidCert/saga/orchestration/placeholder delete mode 100644 ts/features/euCovidCert/screens/BaseEuCovidCertificateLayout.tsx delete mode 100644 ts/features/euCovidCert/screens/EuCovidCertExpiredScreen.tsx delete mode 100644 ts/features/euCovidCert/screens/EuCovidCertLoadingScreen.tsx delete mode 100644 ts/features/euCovidCert/screens/EuCovidCertRevokedScreen.tsx delete mode 100644 ts/features/euCovidCert/screens/EuCovidCertificateRouterScreen.tsx delete mode 100644 ts/features/euCovidCert/screens/__test__/EUCovidCertExpiredScreen.test.tsx delete mode 100644 ts/features/euCovidCert/screens/__test__/EUCovidCertRevokedScreen.test.tsx delete mode 100644 ts/features/euCovidCert/screens/__test__/EUCovidCertValidScreen.test.tsx delete mode 100644 ts/features/euCovidCert/screens/__test__/EuCovidCertificateRouterScreen.test.tsx delete mode 100644 ts/features/euCovidCert/screens/ko/EuCovidCertGenericErrorKoScreen.tsx delete mode 100644 ts/features/euCovidCert/screens/ko/EuCovidCertNotFoundKoScreen.tsx delete mode 100644 ts/features/euCovidCert/screens/ko/EuCovidCertNotOperationalKoScreen.tsx delete mode 100644 ts/features/euCovidCert/screens/ko/EuCovidCertTemporarilyNotAvailableKoScreen.tsx delete mode 100644 ts/features/euCovidCert/screens/ko/EuCovidCertWrongFormatKoScreen.tsx delete mode 100644 ts/features/euCovidCert/screens/ko/__tests__/EuCovidCertNotFoundKoScreen.test.tsx delete mode 100644 ts/features/euCovidCert/screens/ko/__tests__/EuCovidCertWrongFormatKoScreen.test.tsx delete mode 100644 ts/features/euCovidCert/screens/valid/EuCovidCertMarkdownDetailsScreen.tsx delete mode 100644 ts/features/euCovidCert/screens/valid/EuCovidCertQrCodeFullScreen.tsx delete mode 100644 ts/features/euCovidCert/screens/valid/EuCovidCertValidScreen.tsx delete mode 100644 ts/features/euCovidCert/store/actions/index.ts delete mode 100644 ts/features/euCovidCert/store/reducers/__test__/byAuthCode.test.ts delete mode 100644 ts/features/euCovidCert/store/reducers/byAuthCode.ts delete mode 100644 ts/features/euCovidCert/store/reducers/index.ts delete mode 100644 ts/features/euCovidCert/types/EUCovidCertificate.ts delete mode 100644 ts/features/euCovidCert/types/EUCovidCertificateResponse.ts delete mode 100644 ts/features/euCovidCert/types/__mock__/EUCovidCertificate.mock.ts delete mode 100644 ts/features/euCovidCert/types/__mock__/EUCovidCertificateResponse.mock.ts delete mode 100644 ts/features/euCovidCert/utils/__test__/screenshot.test.ts delete mode 100644 ts/features/euCovidCert/utils/screenshot.ts create mode 100644 ts/features/messages/screens/MessageGreenPassScreen.tsx create mode 100644 ts/features/messages/screens/__tests__/MessageGreenPassScreen.test.tsx create mode 100644 ts/features/messages/screens/__tests__/__snapshots__/MessageGreenPassScreen.test.tsx.snap delete mode 100644 ts/store/reducers/__tests__/backoffError.test.ts delete mode 100644 ts/store/reducers/backoffError.ts delete mode 100644 ts/store/reducers/backoffErrorConfig.ts delete mode 100644 ts/utils/backoffError.ts diff --git a/.env.local b/.env.local index 901248d9d24..0760361e8d6 100644 --- a/.env.local +++ b/.env.local @@ -42,8 +42,6 @@ PLAYGROUNDS_ENABLED=YES BONUS_API_URL_PREFIX='http://127.0.0.1:3000/bonus' BONUS_API_SIT_BASEURL='https://api-io.dev.cstar.pagopa.it' BONUS_API_UAT_BASEURL='https://api-io.uat.cstar.pagopa.it' -# EU Covid Certificate -EU_COVID_CERT_ENABLED=YES # Zendesk configuration ZENDESK_ENABLED=YES # CGN new merchants features diff --git a/.env.production b/.env.production index 0984b3a2b76..5c9eaf48248 100644 --- a/.env.production +++ b/.env.production @@ -42,8 +42,6 @@ PLAYGROUNDS_ENABLED=YES BONUS_API_URL_PREFIX=https://api-io.cstar.pagopa.it BONUS_API_SIT_BASEURL='https://api-io.dev.cstar.pagopa.it' BONUS_API_UAT_BASEURL='https://api-io.uat.cstar.pagopa.it' -# EU Covid Certificate -EU_COVID_CERT_ENABLED=YES # Zendesk configuration ZENDESK_ENABLED=YES # CGN new merchants features diff --git a/.github/workflows/test-e2e.yml b/.github/workflows/test-e2e.yml index ee596a8e457..fda3e5a9510 100644 --- a/.github/workflows/test-e2e.yml +++ b/.github/workflows/test-e2e.yml @@ -72,8 +72,6 @@ jobs: name: "cgn_e2e" - test: "ts/features/messages/__e2e__/" name: "messages_e2e" - - test: "ts/features/euCovidCert/__e2e__/" - name: "eucovidcert_e2e" - test: "ts/features/wallet/onboarding/__e2e__/" name: "wallet_onboarding_e2e" steps: diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index ae9f3428b25..dfea2dbe993 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -30,10 +30,6 @@ - - - - diff --git a/android/settings.gradle b/android/settings.gradle index 2f63f80bcde..f6d322ab747 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -3,8 +3,6 @@ include ':react-native-reanimated' project(':react-native-reanimated').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-reanimated/android') include ':@react-native-community_cookies' project(':@react-native-community_cookies').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/cookies/android') -include ':react-native-view-shot' -project(':react-native-view-shot').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-view-shot/android') include ':jail-monkey' project(':jail-monkey').projectDir = new File(rootProject.projectDir, '../node_modules/jail-monkey/android') include ':react-native-linear-gradient' diff --git a/assets/SiciliaVola.yml b/assets/SiciliaVola.yml deleted file mode 100644 index 3bd440dd50e..00000000000 --- a/assets/SiciliaVola.yml +++ /dev/null @@ -1,1111 +0,0 @@ ---- -swagger: "2.0" -info: - description: "" - version: "1.0.0" - title: "Sicilia vola" - x-ibm-name: "sic" -basePath: "/SICUtenteWS" -tags: -- name: "securedBeneficiario" -- name: "unsecuredGeopoi" -- name: "unsecured" -definitions: - AeroportoSedeBean: - type: "object" - properties: - codIATA: - type: "string" - denominazione: - type: "string" - sigla: - type: "string" - AeroportiAmmessiInputBean: - type: object - properties: - latitudine: - type: number - format: double - longitudine: - type: number - format: double - stato: - type: string - required: - - latitudine - - longitudine - - stato - BeneficiarioBean: - type: "object" - properties: - codErrore: - type: "string" - idBeneficiario: - type: "integer" - format: "int64" - codiceFiscale: - type: "string" - cognome: - type: "string" - nome: - type: "string" - dataNascita: - type: "string" - format: "date-time" - comuneNascita: - type: "string" - listaVoucherAttivi: - type: "array" - items: - $ref: "#/definitions/VoucherBean" - flagRegistrato: - type: "boolean" - strDataNascita: - type: "string" - accessoSpid: - type: "boolean" - flagVisioneNormativa: - type: "boolean" - flagVisioneAutocertificazione: - type: "boolean" - sesso: - type: "string" - email: - type: "string" - primaRichiesta: - type: "boolean" - VoucherCodeInputBean: - type: object - properties: - codiceVoucher: - type: "integer" - format: "int64" - VoucherBean: - type: "object" - properties: - codErrore: - type: "string" - idVoucher: - type: "integer" - format: "int64" - codVoucher: - type: "string" - idBeneficiario: - type: "integer" - format: "int64" - idEsercente: - type: "integer" - format: "int64" - idCategoria: - type: "integer" - format: "int64" - annoRiferimento: - type: "integer" - format: "int32" - annoUtilizzo: - type: "integer" - format: "int32" - importoRichiesto: - type: "number" - importoValidato: - type: "number" - qrCode: - type: "array" - items: - type: "string" - format: "byte" - codeLine: - type: "array" - items: - type: "string" - format: "byte" - dataEmissione: - type: "string" - format: "date-time" - dataScadenza: - type: "string" - format: "date-time" - dataConferma: - type: "string" - format: "date-time" - dataInserimento: - type: "string" - format: "date-time" - strFlagValidatoOnline: - type: "string" - strFlagScaduto: - type: "string" - cognomeBeneficiario: - type: "string" - nomeBeneficiario: - type: "string" - descCategoria: - type: "string" - strDataEmissione: - type: "string" - strDataScadenza: - type: "string" - strDataConferma: - type: "string" - ragioneSocialeEsercente: - type: "string" - formScaduto: - type: "string" - idStato: - type: "integer" - format: "int64" - strStatoVoucher: - type: "string" - strDataVolo: - type: "string" - strDataVoloRitorno: - type: "string" - strFlagAR: - type: "string" - stato: - type: "string" - provincia: - type: "string" - comune: - type: "string" - universita: - type: "string" - cfPivaAzienda: - type: "string" - ragioneSociale: - type: "string" - indicazione: - type: "string" - latitudine: - type: "number" - format: "double" - longitudine: - type: "number" - format: "double" - idRegione: - type: "integer" - format: "int64" - idCategoriaBeneficiario: - type: "integer" - format: "int64" - idAeroportoStart: - type: "integer" - format: "int64" - identificativo: - type: "string" - importoTotale: - type: "number" - importoBiglietto: - type: "number" - strFlagAccompagnatore: - type: "string" - codiceVolo: - type: "string" - codiceVoloRitorno: - type: "string" - aeroportoPart: - type: "string" - aeroportoDest: - type: "string" - aeroportoPartRitorno: - type: "string" - aeroportoDestRitorno: - type: "string" - facolta: - type: "string" - descrCategoriaBeneficiario: - type: "string" - descrRegione: - type: "string" - descrStato: - type: "string" - descrProvincia: - type: "string" - descrSede: - type: "string" - aeroporti: - type: "array" - items: - $ref: "#/definitions/AeroportoSedeBean" - StatoVoucherBean: - type: "object" - properties: - idStato: - type: "integer" - format: "int64" - statoDesc: - type: "string" - StatoVoucherBeanList: - type: "array" - items: - $ref: "#/definitions/StatoVoucherBean" - SimpleResponseBean: - type: "object" - properties: - codErrore: - type: "string" - ProblemBean: - type: "object" - properties: - type: - type: "string" - title: - type: "string" - status: - type: "integer" - format: "int32" - detail: - type: "string" - instance: - type: "string" - ListaVoucherBeneficiarioOutputBean: - type: "object" - properties: - size: - type: "integer" - format: "int32" - listaRisultati: - type: "array" - items: - $ref: "#/definitions/VoucherBeneficiarioOutputBean" - VoucherBeneficiarioOutputBean: - type: "object" - properties: - idVoucher: - type: "integer" - format: "int64" - dataConferma: - type: "string" - format: "date-time" - strConferma: - type: "string" - dataInserimento: - type: "string" - format: "date-time" - idEsercente: - type: "integer" - format: "int64" - importoBiglietto: - type: "number" - dataVolo: - type: "string" - format: "date-time" - importoValidato: - type: "number" - idBeneficiario: - type: "integer" - format: "int64" - codiceVoucher: - type: "string" - statoDesc: - type: "string" - aeroportoPart: - type: "string" - aeroportoDest: - type: "string" - aeroportoPartAR: - type: "string" - aeroportoDestAR: - type: "string" - VoucherBeneficiarioInputBean: - type: "object" - properties: - pagination: - type: "boolean" - pageNum: - type: "integer" - format: "int32" - elementsXPage: - type: "integer" - format: "int32" - strDataDa: - type: "string" - strDataA: - type: "string" - codiceVoucher: - type: "string" - idStato: - type: "integer" - format: "int64" - dataDa: - type: "string" - format: "date-time" - dataA: - type: "string" - format: "date-time" - GeoPoiBean: - type: "object" - properties: - key: - type: "string" - url: - type: "string" - ProvinciaBean: - type: "object" - properties: - sigla: - type: "string" - descrizione: - type: "string" - regione: - type: "string" - area: - type: "string" - idRegione: - type: "integer" - format: "int64" - StatoUEBeanList: - type: "array" - items: - $ref: "#/definitions/StatoUEBean" - ProvinciaBeanList: - type: "array" - items: - $ref: "#/definitions/ProvinciaBean" - ComuneBeanList: - type: "array" - items: - $ref: "#/definitions/ComuneBean" - AeroportoSedeBeanList: - type: "array" - items: - $ref: "#/definitions/AeroportoSedeBean" - StatoUEBean: - type: "object" - properties: - id: - type: "integer" - format: "int64" - iso: - type: "string" - descrizione: - type: "string" - TrattaBean: - type: "object" - properties: - descrTratta: - type: "string" - tipo: - type: "string" - denominazione: - type: "string" - logo: - type: "string" - icao: - type: "string" - idVettore: - type: "integer" - format: "int64" - ComuneBean: - type: "object" - properties: - codiceCatastale: - type: "string" - descrizioneComune: - type: "string" - siglaProvincia: - type: "string" - AtecoBean: - type: "object" - properties: - codiceAteco: - type: "string" - descrizioneAteco: - type: "string" - EsercentePuntoVenditaCategoriaBean: - type: "object" - properties: - idPuntoVendita: - type: "integer" - format: "int64" - denominazione: - type: "string" - indirizzo: - type: "string" - cap: - type: "string" - comune: - type: "string" - codProvincia: - type: "string" - urlSito: - type: "string" - telefonoPrincipale: - type: "string" - telefonoSecondario: - type: "string" - email: - type: "string" - latitudine: - type: "string" - longitudine: - type: "string" - flagFisicoOnline: - type: "boolean" - idEsercente: - type: "integer" - format: "int64" - ragioneSociale: - type: "string" - ListaPuntiVenditaOutputBean: - type: "object" - properties: - size: - type: "integer" - format: "int32" - listaRisultati: - type: "array" - items: - $ref: "#/definitions/EsercentePuntoVenditaCategoriaBean" - CategoriaBean: - type: "object" - properties: - idCategoria: - type: "integer" - format: "int64" - descrizione: - type: "string" - ListaPuntiVenditaInputBean: - type: "object" - properties: - pagination: - type: "boolean" - pageNum: - type: "integer" - format: "int32" - elementsXPage: - type: "integer" - format: "int32" - flagFisicoOnline: - type: "boolean" - orderByAlfabetico: - type: "boolean" - isCrescente: - type: "boolean" - denominazione: - type: "string" - indirizzo: - type: "string" - codProvincia: - type: "string" - capOComune: - type: "string" - listaCategorie: - type: "array" - items: - $ref: "#/definitions/CategoriaBean" - PuntoVenditaCategoriaBean: - type: "object" - properties: - idPuntoVendita: - type: "integer" - format: "int64" - idCategoria: - type: "integer" - format: "int64" - descrizioneCategoria: - type: "string" - percentualeSconto: - type: "number" - idEsercente: - type: "integer" - format: "int64" - codFiscaleSelezionato: - type: "string" - flagOnline: - type: "string" - CategoriaBeneficiarioBean: - type: "object" - properties: - idCategoria: - type: "integer" - format: "int64" - descrizione: - type: "string" - AeroportoBean: - type: "object" - properties: - id: - type: "integer" - format: "int64" - descrizione: - type: "string" - PdfData: - type: "object" - properties: - data: - type: "string" - required: - - data -paths: - /rest/secured/beneficiario/aeroportiAmmessi: - post: - tags: - - securedBeneficiario - operationId: getAeroportiAmmessi - security: - - Bearer: [ ] - OcpApimSubscriptionKey: [ ] - produces: - - "application/json" - parameters: - - in: "body" - name: "body" - description: "voucherBean" - required: true - schema: - $ref: "#/definitions/AeroportiAmmessiInputBean" - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/AeroportoSedeBeanList" - "400": - description: "Validazioni non superate" - schema: - $ref: "#/definitions/ProblemBean" - "500": - description: "Errore interno." - /rest/secured/beneficiario/aeroportiSede/{idRegione}: - get: - tags: - - "securedBeneficiario" - operationId: "getAeroportiBeneficiario" - security: - - Bearer: [ ] - OcpApimSubscriptionKey: [ ] - produces: - - "application/json" - parameters: - - name: "idRegione" - in: "path" - description: "idRegione" - required: true - type: "integer" - format: "int64" - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/AeroportoSedeBeanList" - 500: - description: "Errore interno." - /rest/secured/beneficiario/aeroportiStato/{idStato}: - get: - tags: - - "securedBeneficiario" - operationId: "getAeroportiStato" - security: - - Bearer: [ ] - OcpApimSubscriptionKey: [ ] - produces: - - "application/json" - parameters: - - name: "idStato" - in: "path" - description: "idStato" - required: true - type: "integer" - format: "int64" - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/AeroportoSedeBeanList" - 500: - description: "Errore interno." - /rest/secured/beneficiario/annullaVoucher: - post: - tags: - - "securedBeneficiario" - operationId: "annullaVoucher" - security: - - Bearer: [ ] - OcpApimSubscriptionKey: [ ] - parameters: - - in: "body" - name: "body" - description: "VoucherCodeInputBean" - required: true - schema: - $ref: "#/definitions/VoucherCodeInputBean" - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/SimpleResponseBean" - 400: - description: "Validazioni non superate" - content: - application/json: - schema: - $ref: "#/definitions/ProblemBean" - application/problem+json: - schema: - $ref: "#/definitions/ProblemBean" - 500: - description: "Errore interno." - /rest/secured/beneficiario/beneficiario: - get: - tags: - - "securedBeneficiario" - operationId: "getBeneficiario" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/BeneficiarioBean" - 500: - description: "Errore interno." - post: - tags: - - "securedBeneficiario" - operationId: "aggiungiBeneficiario" - consumes: - - "application/json" - produces: - - "application/json" - parameters: - - in: "body" - name: "body" - description: "beneficiarioBean" - required: true - schema: - $ref: "#/definitions/BeneficiarioBean" - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/BeneficiarioBean" - 500: - description: "Errore interno." - /rest/secured/beneficiario/dettaglioBeneficiario: - get: - tags: - - "securedBeneficiario" - operationId: "getDettaglioBeneficiario" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/BeneficiarioBean" - 500: - description: "Errore interno." - /rest/secured/beneficiario/dettaglioVoucher: - post: - tags: - - "securedBeneficiario" - operationId: "getDettaglioVoucher" - consumes: - - "application/json" - produces: - - "application/json" - parameters: - - in: "body" - name: "body" - description: "voucherBean" - required: true - schema: - $ref: "#/definitions/VoucherBean" - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/VoucherBean" - 500: - description: "Errore interno." - /rest/secured/beneficiario/ricercaVoucher: - post: - tags: - - "securedBeneficiario" - operationId: "getVoucherBeneficiario" - consumes: - - "application/json" - produces: - - "application/json" - parameters: - - in: "body" - name: "body" - description: "voucherBeneficiarioInputBean" - required: true - schema: - $ref: "#/definitions/VoucherBeneficiarioInputBean" - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/ListaVoucherBeneficiarioOutputBean" - 500: - description: "Errore interno." - /rest/secured/beneficiario/stampaVoucher: - post: - tags: - - "securedBeneficiario" - operationId: "getPdf" - security: - - Bearer: [ ] - OcpApimSubscriptionKey: [ ] - parameters: - - in: "body" - name: "body" - description: "VoucherCodeInputBean" - required: true - schema: - $ref: "#/definitions/VoucherCodeInputBean" - responses: - 200: - description: "a base64 string representing the image to be shown" - schema: - $ref: "#/definitions/PdfData" - 400: - description: "Validazioni non superate" - schema: - $ref: "#/definitions/ProblemBean" - 500: - description: "Errore interno." - /rest/secured/beneficiario/statiVoucher: - get: - tags: - - "securedBeneficiario" - operationId: "getStatiVoucher" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/StatoVoucherBeanList" - 500: - description: "Errore interno." - /rest/secured/beneficiario/ultimoVoucher: - get: - tags: - - "securedBeneficiario" - operationId: "ultimoVoucher" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/VoucherBean" - 500: - description: "Errore interno." - /rest/secured/beneficiario/voucher: - post: - tags: - - "securedBeneficiario" - operationId: "aggiungiVoucher" - consumes: - - "application/json" - produces: - - "application/json" - parameters: - - in: "body" - name: "body" - description: "voucherBean" - required: true - schema: - $ref: "#/definitions/VoucherBean" - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/VoucherBean" - 500: - description: "Errore interno." - /rest/unsecured/RegioniNoSic: - get: - tags: - - "unsecured" - operationId: "getListaRegioniNoSic" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - type: "array" - items: - $ref: "#/definitions/ProvinciaBean" - 500: - description: "Errore interno." - /rest/unsecured/aeroportiPartenza: - get: - tags: - - "unsecured" - operationId: "getListaAeroporti" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - type: "array" - items: - $ref: "#/definitions/AeroportoBean" - 500: - description: "Errore interno." - /rest/unsecured/ateco: - get: - tags: - - "unsecured" - operationId: "getListaAteco" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - type: "array" - items: - $ref: "#/definitions/AtecoBean" - 500: - description: "Errore interno." - /rest/unsecured/categorie: - get: - tags: - - "unsecured" - operationId: "getListaCategorie" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - type: "array" - items: - $ref: "#/definitions/CategoriaBean" - 500: - description: "Errore interno." - /rest/unsecured/categorieBeneficiario: - get: - tags: - - "unsecured" - operationId: "getListaCategorieBeneficiario" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - type: "array" - items: - $ref: "#/definitions/CategoriaBeneficiarioBean" - 500: - description: "Errore interno." - /rest/unsecured/categoriePuntoVendita/{idPuntoVendita}: - get: - tags: - - "unsecured" - operationId: "getListaCategoriePuntoVendita" - produces: - - "application/json" - parameters: - - name: "idPuntoVendita" - in: "path" - description: "idPuntoVendita" - required: true - type: "integer" - format: "int64" - responses: - 200: - description: "Tutto OK" - schema: - type: "array" - items: - $ref: "#/definitions/PuntoVenditaCategoriaBean" - 500: - description: "Errore interno." - /rest/unsecured/comuni/{siglaProvincia}: - get: - tags: - - "unsecured" - operationId: "getListaComuniBySiglaProvincia" - produces: - - "application/json" - parameters: - - name: "siglaProvincia" - in: "path" - description: "siglaProvincia" - required: true - type: "string" - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/ComuneBeanList" - 500: - description: "Errore interno." - /rest/unsecured/comuniConsentiti: - get: - tags: - - "unsecured" - operationId: "getListaComuni" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - type: "array" - items: - $ref: "#/definitions/ComuneBean" - 500: - description: "Errore interno." - /rest/unsecured/geopoi/getGeoPoiKey: - get: - tags: - - "unsecuredGeopoi" - operationId: "getGeoPoiKey" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/GeoPoiBean" - 500: - description: "Errore interno." - /rest/unsecured/logout: - get: - tags: - - "unsecured" - operationId: "logout" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/SimpleResponseBean" - 500: - description: "Errore interno." - /rest/unsecured/province/{idRegione}: - get: - tags: - - "unsecured" - operationId: "getListaProvinceByIdRegione" - produces: - - "application/json" - parameters: - - name: "idRegione" - in: "path" - description: "idRegione" - required: true - type: "integer" - format: "int64" - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/ProvinciaBeanList" - 500: - description: "Errore interno." - /rest/unsecured/puntiVendita: - post: - tags: - - "unsecured" - operationId: "getListaPuntiVendita" - consumes: - - "application/json" - produces: - - "application/json" - parameters: - - in: "body" - name: "body" - description: "listaPuntiVenditaInputBean" - required: true - schema: - $ref: "#/definitions/ListaPuntiVenditaInputBean" - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/ListaPuntiVenditaOutputBean" - 500: - description: "Errore interno." - /rest/unsecured/regioni: - get: - tags: - - "unsecured" - operationId: "getListaRegioni" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/ProvinciaBeanList" - 500: - description: "Errore interno." - /rest/unsecured/statiUE: - get: - tags: - - "unsecured" - operationId: "getStatiUE" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - $ref: "#/definitions/StatoUEBeanList" - 500: - description: "Errore interno." - /rest/unsecured/tratte: - get: - tags: - - "unsecured" - operationId: "getListaTratte" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "Tutto OK" - schema: - type: "array" - items: - $ref: "#/definitions/TrattaBean" - 500: - description: "Errore interno." - /rest/unsecured/versione: - get: - tags: - - "unsecured" - operationId: "getVersione" - produces: - - "text/plain" - parameters: [] - responses: - 200: - description: "successful operation" - schema: - type: "string" - headers: {} -securityDefinitions: - Bearer: - type: apiKey - name: Authorization - in: header - OcpApimSubscriptionKey: - type: basic diff --git a/img/broken-link.png b/img/broken-link.png deleted file mode 100644 index 2b6f87a641554f355491a4fabdfdbe726db99471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4604 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 diff --git a/img/features/messages/alert_header.svg b/img/features/messages/alert_header.svg deleted file mode 100644 index c69221c91d7..00000000000 --- a/img/features/messages/alert_header.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/img/features/messages/pn_message_badge.svg b/img/features/messages/pn_message_badge.svg deleted file mode 100644 index 7491033b503..00000000000 --- a/img/features/messages/pn_message_badge.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/img/messages/empty-due-date-list-icon.png b/img/messages/empty-due-date-list-icon.png deleted file mode 100644 index 6f5a09e16e9437eb4f88f4ec4bf16a6838c91c4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9315 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 REnNTr002ovPDHLkV1g@G7zF?T diff --git a/img/messages/empty-due-date-list-icon@2x.png b/img/messages/empty-due-date-list-icon@2x.png deleted file mode 100644 index f54b9232d7ebf62d40e2acb855c895c2745fb1fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20626 zcmV)>K!d-DP)lsxlc@a`was}mA9B?+c}gG_+nIW) zo`jr5lC~!j+u{3mB*oUCScAWy^(iPxB;N=8ec-)^?{ASIo+fELMK$JA6bijSLI9^4 zDop~yHNz?8U517*IU}t=!!YXRP|NH$GUBU0ypurZ(%mT8cL-#EFo-rn5hr;@N8cahXbp7cg4iOEvOdYHWPgW$G$=5hdVWf!kwmp&?Dp&7)XF^BT9!4XegFmOwmS zLkaU3DD5d28TWOZ&JRQ(q8OR4qn5@8tJ7>h1Y8)+JQO%8m08Yfa!*r9a0CHYuB@fC z8%{)tzk^xM4rNtxL9bxV{A1d7^6j+KPMgY#w-L;YF@nopK1G*OP$Yf=t=aGb6!+G$ zQ(l&oq#cRO8|bao&r&#cEO@MT)Me0u+*d+-bp-ab-a5Kwk!juxg_!3lUB8J5(Mf^8 z*QmKZ?sryI`t}m2j==V^@fX7D-1gWHDVgl9IOS!@NZCw@M1;c8?-Q4$8cHI8JVxLc z&U&TIMwNIAn^-s_t_Gz9;_+Rm$GjgnAtjy;D1-@=|3aBMNzijR0>bVwy+}sQ2UKUS zqd9ZdStKG)Z9%eUJk^LvWF~eYQ|^ZN-Lcc$gtU8DIEDNtL^lcJi`3fibRlG_Y28bJ z5Bl8&As1skl>4ZNVb!3PK&0zv>Ph|_NaNLrHc&zDK=FQ020cu5!7$C8yT%4{a5RiK zi2q*2-_pSVYG1YujB@rx2XHXz^>gT)CuYE%{E)Jqq#31-*cY)|{U;|$syN+;o#HV5=#gPE3ogn_#B;)1q6ru>pyh_$HKi z5qKWuif=)8QfuQ$zI8ONm>J&4DFu$lKS90n+LS^{wxb;s#JiYYVcHxxkLK0CItXC@ z)d{^?aV~6dU$ZANOdzbhk@#<*2$-Ha4hb~=pOZ1_5^9}RtTktp6d3Kogw}lo~mDst&++rF~Ufe2jvT*?%3s;kc z*Yq^ml`WXpx#8Fyu9Vj>Zl>jWpAmmA!4no9YMbX^2i7dc~Bd_W@bIVj1Qo|`GU-!QXhITY%{ zhTP?(K@cfVBHp~K245t=8&+=afjYr;f|D+c8{Bl7^8f6J9f6VeQb&vm z(T5EMpTkJ{ zB$?t#$NL(C3)2#MlA_Tj>Z6AcJ!dc|=Xc(Dk3?Uj)~4U&gjXZ;mViLz-i=EAqB9EO z*D%!hk`mWzddkeo5E$v&gUn-u7<&ZGn9=LHB$m?t?@-j;Laa*w4u)X9N<<_97w>h z6eu`$Hr6%2#Jc8Xq~WV#1AiRHu$nQm94Q+sq!W6KGn|x{h22XRIaJ2SIXP5 z;$zqp`w5igCFF6ox5~@Rvv&{NgmN1~p$#O)9*VZ}l!K%pY=mC!0I!PTPy(rQV28+? z(K?sygtNgP;dgoi>~RXzokPvDxdRxPp`)t-7ZW;Ac-~h~g=I8;)P6K;)(0x23|L3> zi?EKm0i*7g8S#Gn2#(*1n)kq3*=4ZKi+jW91h&_tOj0n|fLlyBx*VawL;Z2D!0p{T zkVwKOmYk3we)g**f^%H2qcVt8@Q-k;12Sn=mq5HoqXVt5SbJBE*AHboWzqX{&^^o% zz86S=y6y9}`r`G!Og^daXs~(K7J~gXOfN@Th%DI=E|Rch&7nUsFx%~>qB~nx7Pd%U zla)EgGea`Lo+?LPXpiwml3IC%=%Zj@p=0Ik=-v~`8wK6sDX$Q(=B>P3>wFt25I7Rw zG^Y!4Z|sh%H$#VOD`FiPs=QoQj$_?&8Qd!{NrjIl70e}Pm4g2K^L03)xl+%ryuk70 z_m22}n2xujQg_hP)nc$&rhcTeaKw39YC44Gh9|Jw?4To;R}f#G7;!Cr#1ne;tu zIvzs7x}7O7X#&k_s)2z>Ed@qTp_U$Z0j73V@FsSl9*PW>1Y%T$L3N} z{tndKc(_;z+CQPdxCd=FpHdeJ_)-M_v5ocp_=Ae^Ic~6y+Gg-wVebN;YlmZ}f*|h; zDE3+8w*mhJ_($hc4f#l*s=)b3EuE$##_PSE(?4^53UQ009an2}qwlYvF+L}q>`1nz zx(Mq|cK52EB4?*3nmv0xqWRDJ(AF4*yPf+$IJff$&Qa1%)X{wmzTLw=tHHel+)tt1 z=P`U!NbyZ&;e^(4v(EAJtLd zQ&8OVJiqjy%{&i;)P3(?YEsT8e&cDR1eK1cU^en`ufQZ8v!R7(70f z#;Eh5s5$JH5of`CE`QmOHy3JHdB~A}Fv)h!Qhl7l561;-4k*ie!Wtn^^PK0`ZM}lZiS%OAykm+?%oly4H&<6z zs?3EL)Q98K;f3*OHNVE8aPFpVxJ;lu2CJ;04gxbMZ-VLJ{@4hMWW-j|k8u1*$mIQ{aqT%H#)MuQT4+6B|J@ z@zTLeoNMlu+7uFe%j#oLlDZ5|1#N@}MOL17AYdG?;JsV{AIn55Xv*ZLlxxiP=o!Gf zDTChNAKb&XHhvs*Q|GLMVMD)%qi=vudtcgyaSqOLuN#`IqJFcn%ex=EgK}KMfeD9>j?@3&!(2S&pRrH3wo8Sz`S!CUD8BJ^8mcr zgFn%tor*e=9+0f{D}|xZxF#q5MJ)~S3}p;Q;iQg^R*?HS3@A=fzz0C#*lpmO&rEZL zC-7YB0_5$`g-tFJWfG^oCoUesUGpQ#gj?rqq#jv^(TetJ=SOhdFbB`IzN94XlAilD zurl`|06V)wFrK&`Zd%^N(;i_=&Atz1+SfDXdk z@WsJZtzdVXotv&%lI2(#Jy#&=XI7@8G&~AexGQRU@Ij(Lich?1R z*EhNGa*X(&1TEBwcoe<$x3ktn85vdB4|YV*W4@*2dUS9*?4zi01`}Xg>e^aC)28(d zjxOr=aP)r|KzNy^5A4LEtqIFHMQ};4ye+Zf@d@a)zCo+r{hDJTDP-dj$XLI0@8|E2)tp+kK<1CWOQ$nfioHH zVKS{*j}4>s1hdWc_ziPVi9hi^aNfh`o4|`wEp?(Je9CeH1m2xb8@*nWixc!JcHn+#{><<)KiVh0Gl~Gguljsz3Q5sCu;dl8c5EnT^ zws6&`lJ{Ml(<{FzbhsPS$i$7PhdtFLEmNqV3ouQ(vP`)vEnDH}cTunCluI1=-m{Q* z<1Med9PbRM$hsVxemsPQZ2!o$HY0L5V(e&v!^2sA~ zK0TR|>$qc@kM^}~CIvjXO9YowB>P{>bd z8bJEwi>QtP1|@x5{E_k9&iE%b;+@EnnhH*=;!0pi!p*Xiffok0{pTdWd3W0N3<58Me*HN(W z*)?neikvjRfC@bt3jOiC_!78#D+9;TyoSf}Nc|v>sAi&RO~Jo zIz(Njc8<n?))g_t<6Gg@%()Ogj<nY&+O7gX^*{wfne+O&x}te=foKaN->4Dj56N+0~F!Y zLwHgB+yv{UAJEvE>-xP&sBry-u_E`#^Dw>sI?CW?Gi>B2F?$y=`}p!g+Hx(=I^pM7 z_O zm^>LsB@?0xYt)5qr?)xtY>%p^<@1_cbwsX^b28*6(t6M5?S~-P0~{w4c(*4|`}MNB zsS=Crj>o<3LRp#|mxXBfD{&-t0AzAM6o?Hj+y{Q)L5c?`h&_#f?7&Q`uxD7TJq>Dx zudxH5%-GYAd$?!HN`YHN#%b7Sx;M}Csbm$az}!nlV*C(R?)m>vsqms+(&;d8zk4XC zY<{!BNu=vL7#S``!>Dn{*YH*1aEzzRd&SzU)NuN8BuC6U;^5h=n zbwMSO9KcAt9+xWk7;MiR(CjD!&uz9gU7QW5&=}s349D&S_s6>`0e8|u{+Mduk(hF%{>Vm7mT4$Ai=+`m3aO>gsZ+vW z)f;`2gn0qV;CxTR5cg9{=u2oT30K^=$6iAlu{lZ;uVKcygByDOuYo(dX5maV3a0BE zFvio%)AH)s!Yj8VvFY=8n+MOFSe`=MP2zmK!Pr_#}mK2y8vSpUf* zwfL5s9GXi_O|NTl%N4;|7R7&t@}A_JMe$ekp=Y>#1IRi3JTX&m7U8(d&B=)P9iH4h z*3~*a9J>Q~d?hEBY{l2scydmdO{BjH%sb9+y&Ff~Gi>r7h-O!*>}}C)u)ISiaa2kW%I>or;GBF3+ffs^TE1n=d}chvy&oEHxx9Q!F`ex{=gtx=c0jZsVO zACW9`PxDp`I1bPJ;fSCu^f||aPU;i`yV~*-nWez!TL%N8p>B0Dk+OanSutKl ztXh2y$T?76?s;4)FF(;3j$s!#$>wK^JXKznLF%m6y^9x~QnfW=lSDXKGPL4I>MG98 z^T3@a&r0~yj}VSt>0EjF=@#5BYHj>6KGnx4Zg}O+@|kDG<579V zM>m3S{Sxc_!DpYA(F5V!)G~bFyRy#!7cU9oT$KV(lex`PuJ#-{Vn^Uu=8uEfvHi~0 zMH9w;8HNz+Y;kk|b^_NU_d}WH;17)-4izNIDF`oO_8V|myTWn}%Ju@ty@(!o1^iGg z#-2tD@^QCLWqwlj3il!(XQw6saU``g{z+F9ui^eEu+@0uaR_&=hT)Z%LN;OAut9^D z0>|T@z>Ot7d!6qH-wPzSULpqP$(w13b=}$1rNK!2UHluH7yA#5&G^j?wWAAX&hoQx z^>Yv!a*eMxxk?RK^h1FV9V00eE3;rlDKWruCZOUR; zM+iov^`@*6u^-6icge(`(Qwo*Nu1Dfio>t=wKeVL6g?-Nb<;}z2l7yx6WaCQ{M4u^ zKM%z{5@p{mXC9tMVm&74cVq-_$+$0ToqNX@qb&3ES&Cmnc^5(XoXxD#1UtG~u<3a= z^8Xz2@u-6Waen58Xg}9`8q8OF?1zy5`TSKAmg32qR!@&8H5q!Zz$;gdqcs~|MuF9y zGz?=A&eHDG@RtHdVuz#g;_aXUP2%`DO+jn0%Zwdy%_ap;$qYIS)1tpR;!%YZjv@<7&agJLczV2M{qbmY-$c5-lx81H78D~ zBH5z^iEY83y3MfZYisDR&2o0aZzK-8a`_|tc{k$P+S4>RAy#=-$@2cV2n8Oyq7<(-Hr0_W(9x9(VQ~VE>;e?AdXrUZQaW3kh(={1MySh%3D}jE! zjr|YftXxT5#c@Y01RrDS!VigOq&|nBXY|`+dtqv!J~k5KMrxV%p*GJx^Si*Aqs8M3 z&_W!ZSHsZ~_W_~4{w?&(*MqW?jUYV(JnBifOErl7fW3q}tFKWo@H%ZV>b1=d+IY?S z)KfLIabu8ru>K2J=fyZPX8Um5nZ?`y-^c1RQ(|nQn!taQ7`8z9Eg%h={zX0Ta5j$faRGO;Qg%|nxByS&{5wsq zpika>4M&fK%n!1s1OL}+*M9?W{eWdpL<{k54XnLw#OHBicF<0-+M~Qnh>Fsz6?xY- zPAj~UNr;Iry8X!yI> zp(^98nT1${qoW6ucte4yD~MMQjUMzH<%KhcT6zFwWkq!!(i@-p(b+l8G^S<3YyKDV zs!K;@eX_m#)|0mL^W_L{6qtMYNbGg=NZVxP+R|S7$~x<&Olq)8N{c{YWK-I z^g>>P5y7q8;gJNF+zB^$+M2?4hg=q#%Y_GxB^OiG5AgG_S@q116aw} zBzCCnIGY(7bOkkse(#u;E-$a);rONK_;|Kx9}HS(?aA0<6a;bGkaB0%**zN%jV;X$ zOveW2L*ew(tZ;NS8qef(s_ajUz^yFy412c*eel=1e~;HOynT-D;sLg9gj=R(=}FYM_(DQB-4l7TI!(;5)_1 zHLpTG6YW_O|Adv@r|jW{LA+7maP(X#-8HtXu&d72#+@DYq{{n}$Uz9WHEC2^dD${j z0zk@o=>aIhk&bgu-Ix6dj>0a(v~jKDbbcVR8zk}e`MCK09akf=z?IAiV~+I98Jr(w z^Ma;s6z1u>4D9UJY|-$d4A?9D-blFIPm{_8ZapUJ6^{S?E2TZvshqFf8(Z>*-A)+lEm}z~~zwmvy!rSnKfQiMH?p z0fj3tGq~BqybU)(K4t^Sjt-2v0+B1T07BrUIpdhD_;QYj#BapRskscSO`fq~R!@)NFh>VE`mc@uPlwZ5w z?XgQBm#^7@hs5(vD_`umXGnZuKlw@=-|FFe!R|NCa_8OFco%qW!iI@gQIeH*aK{SsP>h`H15CmPnCSNbHmRcC+~#&^pLj zImK78cX7KT+)6`Aox;2XS?p-bx?y|+_6q6?Ew+j60fj4YIQo4sezAQPRMguU3OjgP3rHOzPq4##mks4@%1-ROCZTvwik!l%$u@nAEv%C7{Dlwg^F zChm8nyawF}g*n}|^0LJnpOtS)^11u<5N#pK%QZ6!BlThU3lksZxCv}G-r95)%J5@- zG8jDYT5;L3v3lGJ#L(^Y2q$-_-Iu#?1r|bm!QP~2-LqApDSGfcrNmV-UEno6H+(mN zUxH|lVK*O7r%LOEfx_!9GyhSz`E^rfl*3=GAsDE@SF$ch+KJZpUZq2;NI38F@P3b7 z;8!l$qm0MFi$QgLLDnK^*J~}|97^!Y7Kn_4froPphKh1q|UB=hDKKWZ}#~mWn5W~UhhX? z4-{BxDm?I!vQWbX*w@D!6za<%xK==0ZgBz{x-&CFwzrMM!x$Oi(#7Gm%0lHC?8&c9 zSdQbSd;w)sucNsGN}9K!u?GrewG7k4Hd+yc+*1L~3zT1FWn{(fX%u06P=EVKk-Q>6 z;rJIYI_{_Bm7Sg$HAil~C8R_KkewM&vI7mhNr&ngoR5Y=p;dX)W1|mYz!eZ}RMOxF z#v<{PlsJ_L)b003v5nWo@<4$#hWRsR4(}0|&sy0Xj4ntzEyF>a3O^D(20OctVy!z_ zg{FmBSMbE^P^fo+o6z7VfCpDT1qQw^D~)gKsmM!*-G-KazsGY0R!{l#wSa*K)vgM! zyux|t8jp%XdBfg*|4R_U_G%`@KX8PA-Dw9Q9OHYYFzC>9j9H}EI!gWtyZ-I?i_wY~nQ?}rvb1;Y z4+nm~!icW!6bBO%7^x|6J=MxbDAZ`b3z}MYL&@R)IrTS~inrf6ua0G3A+v`cjT>!C zT;h@Rc>G70w%hYP6@AMU`OmwDBE;p5%@BC zDDe=F$FnJ~ zHq$&2>VnukSKQQLvVz~|9VVf6qeg*guxYC&h4x?sCba@f+Qk!2%Z*4Zwlk)O`>NS8 zZo_w~ZT>nMwGr>ge|Tctx3~ zU%=6$HA^4q`H74d3jC&89zs3ER3|Q9Xo8MXGRGt3DC4I}90qoFx8nbEw0L~QGEm!$ z$GTw9Q9)sR-L=|LIGH@Yf=Xo1YBD+29%wo<`jw+s4HL<8 zuCl=^0tkjGY9v2yae&Qwp4B_5CWIA|J2~F(hyZ(41gp&aj1d_oaOihM-`n?!dmO`KpOo| z$%2rdRKhC)Xzr+FQ;_HW%?clZEz>(p@l?U=83vUzxPX$^t%@N2=-A%bP&h*n;$bN7 zuM`|gt`+`C(a2iT!AgJ8lP7}9*{HlN{y6wa9S0lppy>1xn%hAVyYe$;^t$3}`gAq`xTOEjRnm$}5uWIUzdR&&?8wKV}4WT|NAUJ>L3+fdg#CGZ;2+!9!>ijAQ zDnv}ltM!O z?OIU}vr&(bJ55FMDYUL<{AN-1L0{9C5yKeZ!_jw8ckK5XR~h*ee-gX=^XgySoW|=f zsT)<3ZOQV+rZMLCw(tS~8slr1lsmdwD4C2XQweb&+^HU?#K{N9z4E%g1*q&#qmdkh zidL^x-Q@vq6=FG(plo<)K$5*5FcFwmmQSO&E3ZG;k*+=PHnL)dVmY3_2bs4)VfjeL zy8(v8v*^elK|MY~qiY`@=#V`qYB<&ne&^a#5`Tq5htJr<^M`n=z|2QD_9O~3Psvh1 zz^=FPpGq7jK%SOE)__H>|s68Sp2OY4MozBqNp*4V6Aop17CosK&`pgW_Dgx0 zP45-hDm)yVtE_HP0y>)_(a)v6YW`;{u5k1_)VJYzV4i}Jw@#Cybl|=XPoW`v4V_D% zbWD_4&ekL6vHv6LRjhwY%`@7RlwT#$^E|c3zvaksuut+JqMpSHOw)Y~>dXttxIOx7 zBtKqF0`67)8GLPnmI6Tz10UxTKJ{5%src zaWgJ3x75`7d}<3lkdsn-48FYNeK}$2NOm~LKFfRz{wc7vVX^7IC}jV!jZG;8J&*Np zTh_*p^?arL1$sDVqqGhA9MQNL!+x41%ohdzI7l2zi1Em49DaB^a`Kx&TaG`|u|s!@ zpJDJH*I%E!75gDxJFP2n{n2m9m~;xYO#5(it#I2mH?Bmdq+Tus0JWr+PiW0!*1Ae>2(_&kmh(4mch5M45d`VtQoF1K>2KkyMSj)5|! ztf|7W-)RRHL4U^Rdzjy~?XLne_u=S0PzL?EFJGw}S9bud+w^5Lc1)S`Iuhc0r#K!! zuUTh2ic$SFPXx%X%JrC^1nr|i`#{iiKS~R+0qIW18TehE@Kmlu!m*Q3cRvMtqw-*} zoa+xqPx5@UO&E$uwb?N5{{(~e#qeL|zXJ1Asz-LB@Yu1_1?zQzNjj`7xDYR3RK0}) zqwl4r8UCI#@=kbi<8i3O)A6@!7B9L8A#R6DSbo$ysY9(OIB!&S#Baxx`9#-zS5p1q z!77wb-GLk8es~T&*0mh+NZ`K$GgF;QccVlfEAhlUc(hL<1W!qS0EPH%(G|ja_A`Do z^1lFzyq7(bIUqtjNVVd)VRK&0=euh+{04I1E2GXsrPiOSgo572p3cmyJsnk=0${~a zU}iAfbr8wqU+_)cdpRi#3rPgd#qRaJw(D6ZbiBafb#q5IM&#tRm|iaQ-5?O&1-Vjrqimc%|G3Ii7uT%$=-#?=NSCue>a#%WGOpvkbfc8H~)6Sf`!X= zwPaqUO()>s-GD_}OT%(4ZYdGiNF$MGhfK!k*%$`(7mk11y6m7Uto3SSFjVYOxVQ?O zI&SDdtWfrwNQ3K$&!b4MW7+-_xO$4BktZI#b>eTYs}~q^6&3 zd02tP8-dw#fhqq51=e&L;wM-Oe#3DY`55M{)t6#7^co7#U(X2}h)iI&y`k);(w2R5Ukq#p2UyMZZG_jKwFzn*jG5XaxuoNDoJN^E%8sp; zO!GFa@(QsSM=H2C>M(GlTD5u!lma%YMNnR5tEVP^6G$!_mr)&pkk##4S*dAw3*}C? zukU9ds#e}={h=vh^HQ2O;ZrRuk7}qm3LJ@_fT@>yBT2xmE1MTOwGnQQe+D;Ro`9gR zDOR+wl;+KTC-2<2Y*rajR#lL)8OwpwR47G-MdD{5Ki<8!50y}VLM$mt{qgO!j;=-a z!txH{zXG$*T#^@SSvHI>Ii8xfN710nKY=da-_0}NPOuQK;%^C#jh@0ED;0c{+J;S- z+MaF;bqe6=HoVA^dnt0CF?s@vtxrAMx?hU-XF}gQH zvB$!DVF!L+f^{iho+v!9t!y}UH|Q%A8GevI+;jpmhLEyfSyJ9yNP8Px_|H@6j)(aDAo|w?(S%66OQAyi)6!jXEO)OJW)PKf#CJj zTp#gFYF-esoTv3Zi}FmgCx?sVZK2&AFDvW`Pa3&MgfcBH)QG@i_RT`2EgNWgV%ThlRRr@SmrUQ2V?l>uw1 zh;?OAiRBxxqkExRd6Dx-u0KP3S1EhGoz`ofqQof>=&u4xxk$+$8@NvxbGs6Ufh$*z zgY#_m>;d~_U0|mGu$yjcJQTNtp4MTP6wYO58K{DUhtE<4X{z%c>Gik8=-agQ$8FKa z;GY7gULsWQToPU5=sxV)4cBT%0u~ZG$P-2r&XMo-QD)wePQ4?1jfP;TB(FMlESZMc zPQ8Y=YW;B=Rt1)!{wXk-SU)L(pkF&$+)H_uf=UV`#4|)= z4x#2f-qYfi8v<`|uq;%;lp1AHCC(Ej;lNK7s`ZzWj+6Q$Sz!tsj?YBtW~k~PUi4?lk-u&`OfpKwO8N?ry;K4va_YD4-`Ca@P&y@ZyGpw33;m z$xF-Y0ISvdOUWYTNMb-P9)0sifu+z)7c}pw4ldlJEw0Asw0Llo^_@N6Z!_`atoVwJ z(8xsUl*-eBYdT;JuY*~s)?Z2*LN*K*i&x*hx5Uyt;+%Rfb)uu=qjV|RqKnPaO!-Mf zfoJh3O&oozD;jB9<@%YjTKhnK)?N28M@BD&l(AZW`AN@7{fXL-Q`;Q%xxdTYy}$A# zH>pQowkuAZe>!J%+O!@ZvrVb5cBRf4@&S{}*dBw;wcO8^x=8TU_RqF(F92q*di1T< zUv4Qos=q!Sg*{bZKc>)X1?HPS)sR~PTG^Oq;H{}P>=1iDb7GoIn~;YpXn9m69_BEe zY)n$?Mjqnvegr1kOUZ{2FyOC-oDyK!NSPC4MW)=;9*heHt8km?VOX90hk|B=8XI4- zPo#jvVmnj9XvGEeeL?duU{1vhK#>5TYW>;EM^}Hs`!|xkS752SUBeAP!swzJa!P=o zKy?&wy-(7qc+TZi>P3R~7%aIUS3xg9!CnUJJt+4&bO!4!azfxrq&W`o$%xwt@SRZ+ z)8V^%YsU{sr1`4WUs@8`pSt>!G$A`tVKLq-Fo`YHy?DUWH9%p-FSpdj8<@i8!4xYZ zZ4JfTXY&XylLK_pgKGNIf@J&{z}0@M)}OtIboD2p8{P&#*1+SHEE< zfcFYa;(aBPi8}QNtxP=3ft4T|`F^$j?3$sr{^WahN%M{OL4hT^XSEMzZ?yr~NhjE& zc9YA70wORC$-jc9T7HS6pcm~(IgbYoixy}yZJjYfU0=2S?1Zar+d{1yc61f--X9|g z`X7!n6v5n50UX(&9-VB&Tm2qKUVxyWzzEBhjirr=U2rD6D-?QH*o&)Qa}?ryoW;Kg zWqpB02VbPwvr}iq7BT!6j;_N0d!~P8eWrNypySA*JPaaq^(WPySMrd6_X6Bi5>hn!zdp2 z{APwS&vFJn^UQb{P#mUa(eT%mPDbXMyqH(!xf)Uu;I=H~p&D^ikOIqKJJ!Lf1Iopv9||%$dmxmGF@OOzLDH)=&*SP;^mPc_MFB(DJTIJWOD^HZ16U+G^4t z{VJ`03e3Kr1*zZZm2@aYm(202aAi-oJ+>EkJVME*z@-I#0k7C0_3GZQG}#^jhk9Iw zkr}w{avN3!e#Ozp<3Iltmulk}9pI$xihy1R3Xqe(3fwejC3t&6$)A)9DAIMj5@$F9BV9-1!2Cc>(O#sM zxzB5G`~zEg%NNucpbS=7)L6p~%59e0t||x-rj~}(Ein~d0Wg0Rm>CNOzoq3*CVxar zmQ2**4HpDHLp4n&Gml-UyL;=B6}$84$<`fX9RpmJk#sK1ZI#=sE(khbhf*lqe+6!? zkHF)@{Ypk9eGHeKZnLT&!~@jY=!@~j;B5U@V9w19d>j9>jjer<@+dqPa;81PFoA?)cu_$f>$o(6 z7C6TB8qpNa^X4*f*@k=IHp*>P8AJ~SYV|WuB@Ji5;wbRE`d9JPhknW^=|^Y;P0m=a zK&(i-9+iKCE6!yJM_@twx#JaO<1!A{z-^P;s6O04&9h(DqZN)(90g`Rw;XpRj+OqW zW?9xjK!2vrrMs!|DiCU2H#7eV&h1U^au!SMQId6VJiZm!nURwv`^Zsn3G`RuvJSVv zZIat2p^Ykoc$ezL50oe#0*j}>)2Dv~1wKW2EMXN4@BAeD{((lTUn6=b2wzF@quIUm z5AC`s7Zasg2Pa@@r8?ru#Vg10+K|i2Wgaep+ak9~vfiMwFO_xdM7pUT zV!IRd@lIr6Whl)$ctJsOk`fkLD7z(tf+&?PF}FQ#gWMK%L5RnxC3K+<&1-n^6wAJCu>&-i@ry+8|a@aLht150hF{j}eNmz+3>nZfMZaC~%*?JaQ6*_y`)o z_n`~{J${KXq%^2Kei3-avjUo%d=eenySAvj78QNPQv&V!7nf85fdf!~>uq^X z16T$u3ri-DO}PhdV^&*3n%_gZ=-W~GpHF^(u6 zE$balcJ>yDVY9=$3{~Zzv*GhX;|OYNgd;#&tgPN*u7h>!U*?q!bOarV`s-ElodQA@ zkVz!|NLf3?y?m z+ACK=NxnzVKd;%&cSO+}q?Idc!P5mKl24)XF`7CGNvQZSSU3IK!j^KeGF5Tc!3&hU zP=9CB+W0SY!dMQGv#Fz$7_}iImKDpaTmrWxZd2U0ba%7UJafk-=qPGw{9QV#6rZJ4 zU@mc6!=GW~aU{N}Ewu)uGYaqjTte@xS&6G`UxL7WcphdTGvzm)Znei2(wg-vz|$4r z#ojGWCZSCz^RcLW+?nnVf#Blw*PNdc?-dne9h|bgR&TlmYX*4bPS~L1U39`@ELpAD zu-uYeDVIgucDN03TjDn5{EQy;huKGwcbs#z3;U~Vxv>3=3wLAWN^G}~aWu7s9>_{JIHEl& z2mj3aKCek#=j}0=2}(sCSgW^%K8C4tWUU~kKo_Qx_^KzLC-_^uY%9(d;GjN zJCGs1gifzzdIt7k`Q`{VD`bdc0BVjKyZ>-BsLFu+=d?eZRB}}Yvtv}DvZ{g%4_A1qX<=y=6))$ zCotVwThQZK%F7wIgq|d$rWKtj6w*cD4v=NZGG*DajQt4QCU`fT+X%N6tIfDnUJ|d7 z5!k<6l$XV%?v4Erq>d(E)!LANkmcufsP=Gd>yvy84ej4BDt|0*yHwtkGUR?R58NO0 z_J_i5XP>7ABE(-PFzy6u-s3%6%=YLRfZb#Z7vgDbcW{WSMel@e4F(u^XiVaF!2xHyhVe}pu>4F*D$=zFnb_n}hPsbg$8dHyg(xtue>WvD zjaPUHsj1zIQjQwzI7r1?x31XmUyf5FI)DoL5Owt|>f>1~KVC)({+(Taf+mnjs6R0s zW!MdPsMmr6@6DV;^O|lhn34|!%2$E8u;KVjjDGjwoBfF3gHSvpDMULQ(tVj48((rv zQ@0K_0>_{;_^mCyLKHaP^{*W>JOcL8olxSv?NG`(o@YFPz_BUE0Tg%HN#+<^XAAr>g%g#dLvo^)r`x$igP(;0$W1*R0Vumn8R>aM!0{mBq(}HMtQ=5zG4&@)uMW zyqxOm-z^0P`Q};vBk<6Y<7PhV000m@Nkl&j zp}(yLY5vVRrYOV_U2DVBm}RIH$w(|Hl-;cKI$LW277*$0LGKi#yxc*AV|PG#|5_Hx z%WX!$Mw{CZx24vmvnow_xehB&fzvH-_U!dEuMx%@jR%rZy8|i%ri@hB=#ZwJ?G_9#Dx@; zJK{Y40ILmgTdL5IZv!i@;W}G25L#g4%NKPm&!xAoX;U9{R zQrf$|LGv0ObCo}@gQa=2Z5lt;!8%*(eAd71UHd}@H=-OkMR30NWm|5y0N#@zis9&~ zgJhtSM&XU+3Y#M9id@>>P{*AYaPILVT{zb@wnIh2%ujAP@F%uJy9yv1oGHqWNE+yg z%}el`?T9JpF}%@I*2>)^oXDbzAEd#at!8rbXgFMF}*l|Mqq3A0Qu11`N7 zbQvg)N4@d+GQX>gixl#GOoa#jq=2!E`6iCraBl2k*W621i$rVqE3g|urp}$0tCLt( zUhXY=*oKyjD{1QFYiOsP^cOe6QJDKFd=J~52j`=};rJIY;@h7s^ZK`~N$=z8<(Eg% zs`t)=LcvDd@x_io;&ve0K+SF?eXU{;x8?A)a@W9qNKb0rsIH`mV_@MUu13%9Ibo4T5J6*iM_ zF$5M@s$eGeQ-Mbstg66+Yh1wYSryo}dd7@(*!cJs1!`tu`u2AfdQO;>yONoBTtNmbS9dlYk58pU@8eM1U2~RM70EW@WX!+_{~hAZBtidHp#!e2BW2>@2dpY^ zx=vGGKjx=@=KK_Lpm82`Dq@ z2lD!t?;0zErZed?&j7>QD@hCm3h@FI_fVW7;I9GS`-3nBWSov0{HZfG8H_suzE>4E zUCA9?c&Aw51IhCFJO1%By7jqi*;rhD*cPJ#*0*khfY(MvXbU|9x@z-L*{kkw6y!I9 zbZ5$ZCe3Hls$hy)DzFWV@6~QgEW^RU3@#r0GwZvgDcF?UBP)J{MpP9zUGb)7Y9{6K z%~t`r0kz|JWPQ(Dm^R*uKeaNZ^T_tLb@HW z`S}xGODltB{mW_D!>AF!I=H~V4gqEI_u%PdB_)ZDtJD@-AYkw z{yOSd_Hjo!3e5;8#R5lkav|x~zq+&NG);c|%aqrre-`Dlx(>F)TvcEegD8TtxWTR3 zTKDznUF>ig-88z8b+B&zt6zhsO0@}_QN;G&MGVF7bcSjb^P6hWH;!O zO8r#2u@R<)Y$L1)GLLnzE)B1Lc@3@#{Cucs{#b?554!=Ic6Y)t+!-`^JkHJG*|OlP zpE$F(&h8!LK8#VS3M|DZ@~U6Fw#V@aJQg>TlP}0<`f7_!cVjXaZl18fRi)>%aXl+~!Wj>ll2jPEPT!NX#TS|IWV3q_#R*YW} z%a>204ZV#P`7yPzvT=~z@jOPs4_;RuBc;}}k3w;8rq=q0pp;3+VhYEu!xa7hl=!@M z4ifw=H=%RL5jvOdhRXu#TRJskr&>>3I=N05T{(sN)~l!G!q~%h3e8hz>f?vNG>#I) zb-4I(PL2}gjy4?@=a5j)Tm;wH!r^)n>!@O5#`1>O)i%x|Xjcw78 z&xUVj_2{Q6LEH8lK~F!GCiyAs=$>LrO80)SZcRIwunt#s_8g9}U#o)$lgs+fQ|Dmd zMBAxzR)QQ6?ESK>@oUz`Aa4+o;F-^IDD<6hwmu&hEbhsXYQ#lpEM7d2hY9ZtcENfb zjvlfD7d1Y$md(AMEtC;9HEfTup~E+oq-641isKRN+^%;PBki$@^a~WQOpwlTf!*;D z8=siH*JTpR^$SyHegNEy!1u3-Ztef`g5t2E;r|FM2-o!Nf}Cpy8Fulh=_IDYiojFp z9+`V89jIBXNQwO`#ZygS=e{(Gv*yx0fPgH@Y&H)%~IPv+V zqEm%AmVo~X?3k4ifXI(}3#m7Jkdmj;+2_-`b+F#I6_%2;Kq={5>)({!HeMRk1WDIY zOGAeSs|xl|0#ya}P?(NL$*DZOR8OVZU1~2Lz0MAcv!e#Z@HIPK(Bb4-|FW@(Zt5(= zGqmki-_vDZg?lT3VkmG@!E*M|jRJXCfOsk$3@*Zss>Z-W9)PLzS2N12TL<%-#@e94 z8M^*uBNH|@QHLbTQ=K}iW#kLge+3r8-aU#CrF{y;7m+$3YVFWsr&brFyoTDlci4=U zS_k`RtpuCv!Ry~>bbGkM)lZ!baV<y2fVX5}n&1egu1~iPfpIZJFaZVJ~+6gH#lu2e-Fp5h7z2oE&{(_ z8=Oh4b6=s3CDSO`r`rTmle2>cYj-D}rdw|tnJe_8FP@5N3teDGt{U&Z1oBhhaO`X} zx+}q+oo}a27+JmpQ#faCR=lR?zudgb!Fo?<^%BT)x{|1%$I$5=0J%z7b-fA8jct|q zu7Ozp&TCB3Y>)i|^bgdKSV`MVYN(FB8Y%e+pO*21(C_w|@@ng0G=J8?i>;|M8nP)u0P>1NF6)!AAsmOtg#;*%*S2B6LCEePT(k z>Cha*1-%00y+(^~&{eQ??$Y8_5sD@O;W{UF*?-P-sSj4C>lL2v0P znW_Nb^Uv4OyK8t?dJiSHyc<2(z(a|w0Xm_@jt(Y_3Bhq+b@bJUvzTD_3Y_Myvuhtp z$oWKO>gXXIPsUpmz&USA=*i7d{DtqKCN{QMalz3Ymj9-~2yW>OPCMMbhht4p&M=A< zD3hY`)VbNwdroD-@JL}Je+70Up>XtEJYRA-jwk9;$wUvX)m;SFqWbBgn|y{7Za8`+ zW;yoWOo~}nL6@PfzFW*Jt9dz-fd2~I9y)HxVDp*nRg|7KTJ z;PS5{O4%L5{TqU8rH1FlB%2|5RFtB~*)hzSU3> z5-5fO|5qUi6-<$A1cKNCDm9h%uhZkHGe5*#-F2>*2Ijv48^$kerJ;h^CK|y2>k6Nr zQ)zJ-Y@L^nU^4Z|lp)gj8ICBvYI&F#0;v8}NMPm4T3WlI3#OKP zDX`pwgy@E;BwQrng}`d47zy~Vz-duL;?1zgg6%X1@p#n@X-X1#{om2mK*?kW(t7ha zoe;R70BftZ(2BhHsU|9!1d6A?B`e}E%{UUh3{CzYAPMaRC;DXM1|V|8b{LgF!U5eXa)uX%$ZUfaRbOl$Q#d>Ng9m7<5mdm2VaSFgw z=hEGFa>;NNJzE0R5ja~Wl@*h6akB_ayO>JDp+Ze9Po1mETUoW8#cfrAvqVyX5q#xO z7(Z~#xe%97(;WZJG95EiMa)+M)hTqok}J1#@pujVI`giydMYhM6l>?U>gZc;6__7C z)e$&9xs_ikwqNEefGIB;HvD1gY*;TMR;SK35~{T5ssdM9jj8x;n!6O%Zg3uG69ipM zE%hVwQFR-URC;uE3SH?nIFx_3J&(kHg6K0aogS!PgKnhOrn82kSASQw1O_U&vddBB xey9XGx@J)lPlO6nVA}kT>Mf(80vaB_{~v00gXp6L{u}@R002ovPDHLkV1hNTd2#>% diff --git a/img/messages/empty-due-date-list-icon@3x.png b/img/messages/empty-due-date-list-icon@3x.png deleted file mode 100644 index 47e34af00a8e0d58e3ee3613c30493bccc98078c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33487 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 QO#lD@07*qoM6N<$f-4qccmMzZ diff --git a/img/messages/empty-transaction-list-icon.png b/img/messages/empty-transaction-list-icon.png deleted file mode 100644 index bb4b63a65db757deb81e25233102468e74f57f25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3267 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 diff --git a/img/messages/empty-transaction-list-icon@2x.png b/img/messages/empty-transaction-list-icon@2x.png deleted file mode 100644 index 904aa482dad06990198624961e4d548c1ed201ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5584 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 E1LlO<^Z)<= diff --git a/img/messages/empty-transaction-list-icon@3x.png b/img/messages/empty-transaction-list-icon@3x.png deleted file mode 100644 index b236118593a29efe51844ad5ef7f9584a94a7dfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8117 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 diff --git a/img/pictograms/doubt.png b/img/pictograms/doubt.png deleted file mode 100644 index c3185aa1f256f5dd91744b100ad3584dee3b86ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7091 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 diff --git a/img/pictograms/payment-completed-2x.png b/img/pictograms/payment-completed-2x.png deleted file mode 100644 index 9fe8e390b5365ddc00ac8782783d4f247bf8e4b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12578 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 diff --git a/img/wallet/errors/generic-error-icon.png b/img/wallet/errors/generic-error-icon.png deleted file mode 100755 index 800dd6426c10c607e58dd679e2520550299bdb42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8748 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 - - - B0D61543-7372-446E-BDAE-142791D292B2 - Created with sketchtool. - - - - - - \ No newline at end of file diff --git a/img/wallet/errors/generic-error-icon@2x.png b/img/wallet/errors/generic-error-icon@2x.png deleted file mode 100755 index 5b20a951a1f743d159534b054b6e672be97582a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18870 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 JPDHLkV1l=&_elT% diff --git a/img/wallet/errors/generic-error-icon@3x.png b/img/wallet/errors/generic-error-icon@3x.png deleted file mode 100755 index 7cf9bca988f9b438bcb4eb6301dadf80388409e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29794 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 diff --git a/img/wallet/errors/payment-expired-icon.svg b/img/wallet/errors/payment-expired-icon.svg deleted file mode 100755 index 0247086b882..00000000000 --- a/img/wallet/errors/payment-expired-icon.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - E4C38C32-2CA4-44F9-965E-37E2911E6F38 - Created with sketchtool. - - - - - - \ No newline at end of file diff --git a/img/wallet/errors/payment-expired-icon@2x.png b/img/wallet/errors/payment-expired-icon@2x.png deleted file mode 100755 index c83ad663fd143f6c5168377047411cbb0465d78a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21603 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 - - - FFBCB338-3580-4F9B-A1BB-6054E9B1398A - Created with sketchtool. - - - - - - \ No newline at end of file diff --git a/img/wallet/errors/payment-unavailable-icon@2x.png b/img/wallet/errors/payment-unavailable-icon@2x.png deleted file mode 100755 index a7c8d0e6555d89523a1b853f0577d3559cd19da0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17638 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

w#+`fUlUorW_(2Ir>w|Jo(m~a5sFD^b>oU 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 Z{|{}|{ylawG_C*u002ovPDHLkV1m%gSf&5~ diff --git a/img/wallet/errors/payment-unavailable-icon@3x.png b/img/wallet/errors/payment-unavailable-icon@3x.png deleted file mode 100755 index 52578f6be8d97dcbeef3e4fe9271fd2650a3c923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27642 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 diff --git a/img/wallet/errors/payment-unknown-icon.png b/img/wallet/errors/payment-unknown-icon.png deleted file mode 100755 index 6bb5a5219e82627a9c37ccb10151262d916f7bae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7727 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

diff --git a/ts/config.ts b/ts/config.ts index 2b9ec058ce7..d3a61a44185 100644 --- a/ts/config.ts +++ b/ts/config.ts @@ -71,10 +71,6 @@ export const bonusApiUrlPrefix: string = Config.BONUS_API_URL_PREFIX; export const isPlaygroundsEnabled: boolean = Config.PLAYGROUNDS_ENABLED === "YES"; -// EU Covid Certificate feature flag -export const euCovidCertificateEnabled: boolean = - Config.EU_COVID_CERT_ENABLED === "YES"; - // Zendesk Feature Flag export const zendeskEnabled: boolean = Config.ZENDESK_ENABLED === "YES"; diff --git a/ts/features/bonus/cdc/components/CdcGenericError.tsx b/ts/features/bonus/cdc/components/CdcGenericError.tsx index c1c5eab6e22..7ec39dc3553 100644 --- a/ts/features/bonus/cdc/components/CdcGenericError.tsx +++ b/ts/features/bonus/cdc/components/CdcGenericError.tsx @@ -1,20 +1,12 @@ -import { FooterWithButtons } from "@pagopa/io-app-design-system"; import { useNavigation } from "@react-navigation/native"; import * as React from "react"; -import { SafeAreaView } from "react-native"; -import image from "../../../../../img/wallet/errors/generic-error-icon.png"; -import { IOStyles } from "../../../../components/core/variables/IOStyles"; -import { InfoScreenComponent } from "../../../../components/infoScreen/InfoScreenComponent"; -import { renderInfoRasterImage } from "../../../../components/infoScreen/imageRendering"; +import { OperationResultScreenContent } from "../../../../components/screens/OperationResultScreenContent"; import I18n from "../../../../i18n"; import { AppParamsList, IOStackNavigationProp } from "../../../../navigation/params/AppParamsList"; -/** - ** @deprecated Use `OperationResultScreen` instead - * */ const CdcGenericError = () => { const navigation = useNavigation>(); @@ -23,31 +15,21 @@ const CdcGenericError = () => { }; return ( - <> - - - - - + ); }; diff --git a/ts/features/bonus/cdc/components/CdcRequestCompleted.tsx b/ts/features/bonus/cdc/components/CdcRequestCompleted.tsx index 42d55a6413b..2224f5c0ceb 100644 --- a/ts/features/bonus/cdc/components/CdcRequestCompleted.tsx +++ b/ts/features/bonus/cdc/components/CdcRequestCompleted.tsx @@ -1,20 +1,12 @@ -import { FooterWithButtons } from "@pagopa/io-app-design-system"; import { useNavigation } from "@react-navigation/native"; import * as React from "react"; -import { SafeAreaView } from "react-native"; -import image from "../../../../../img/pictograms/payment-completed.png"; -import { IOStyles } from "../../../../components/core/variables/IOStyles"; -import { InfoScreenComponent } from "../../../../components/infoScreen/InfoScreenComponent"; -import { renderInfoRasterImage } from "../../../../components/infoScreen/imageRendering"; +import { OperationResultScreenContent } from "../../../../components/screens/OperationResultScreenContent"; import I18n from "../../../../i18n"; import { AppParamsList, IOStackNavigationProp } from "../../../../navigation/params/AppParamsList"; -/** - ** @deprecated Use `OperationResultScreen` instead - * */ const CdcRequestCompleted = () => { const navigation = useNavigation>(); @@ -22,35 +14,23 @@ const CdcRequestCompleted = () => { navigation.getParent()?.goBack(); }; return ( - <> - - - - - + ); }; diff --git a/ts/features/bonus/cdc/components/CdcRequestPartiallySuccess.tsx b/ts/features/bonus/cdc/components/CdcRequestPartiallySuccess.tsx index 68399ef222e..9fc67d1d301 100644 --- a/ts/features/bonus/cdc/components/CdcRequestPartiallySuccess.tsx +++ b/ts/features/bonus/cdc/components/CdcRequestPartiallySuccess.tsx @@ -1,13 +1,8 @@ -import { FooterWithButtons } from "@pagopa/io-app-design-system"; import { useNavigation } from "@react-navigation/native"; import * as React from "react"; -import { SafeAreaView } from "react-native"; import { Anno } from "../../../../../definitions/cdc/Anno"; -import image from "../../../../../img/wallet/errors/payment-unknown-icon.png"; import { isReady } from "../../../../common/model/RemoteValue"; -import { IOStyles } from "../../../../components/core/variables/IOStyles"; -import { InfoScreenComponent } from "../../../../components/infoScreen/InfoScreenComponent"; -import { renderInfoRasterImage } from "../../../../components/infoScreen/imageRendering"; +import { OperationResultScreenContent } from "../../../../components/screens/OperationResultScreenContent"; import I18n from "../../../../i18n"; import { AppParamsList, @@ -97,33 +92,21 @@ const CdcRequestPartiallySuccess = () => { }, ""); return ( - <> - - - - - + ); }; diff --git a/ts/features/bonus/cdc/components/CdcWrongFormat.tsx b/ts/features/bonus/cdc/components/CdcWrongFormat.tsx index 66a0d83d1bc..e9d68748047 100644 --- a/ts/features/bonus/cdc/components/CdcWrongFormat.tsx +++ b/ts/features/bonus/cdc/components/CdcWrongFormat.tsx @@ -1,11 +1,6 @@ -import { FooterWithButtons } from "@pagopa/io-app-design-system"; import { useNavigation } from "@react-navigation/native"; import * as React from "react"; -import { SafeAreaView } from "react-native"; -import image from "../../../../../img/wallet/errors/generic-error-icon.png"; -import { IOStyles } from "../../../../components/core/variables/IOStyles"; -import { InfoScreenComponent } from "../../../../components/infoScreen/InfoScreenComponent"; -import { renderInfoRasterImage } from "../../../../components/infoScreen/imageRendering"; +import { OperationResultScreenContent } from "../../../../components/screens/OperationResultScreenContent"; import I18n from "../../../../i18n"; import { AppParamsList, @@ -19,31 +14,21 @@ const CdcWrongFormat = () => { navigation.getParent()?.goBack(); }; return ( - <> - - - - - + ); }; diff --git a/ts/features/bonus/common/components/TosBonusComponent.tsx b/ts/features/bonus/common/components/TosBonusComponent.tsx index 8eb96b10a4a..f83524c64c7 100644 --- a/ts/features/bonus/common/components/TosBonusComponent.tsx +++ b/ts/features/bonus/common/components/TosBonusComponent.tsx @@ -4,19 +4,18 @@ import { FooterWithButtons, H2, IconButton, + Pictogram, VSpacer } from "@pagopa/io-app-design-system"; import * as React from "react"; import { BackHandler, - Image, SafeAreaView, ScrollView, StyleSheet, View } from "react-native"; import WebView from "react-native-webview"; -import brokenLinkImage from "../../../../../img/broken-link.png"; import { IOStyles } from "../../../../components/core/variables/IOStyles"; import { withLoadingSpinner } from "../../../../components/helpers/withLoadingSpinner"; import I18n from "../../../../i18n"; @@ -85,11 +84,7 @@ const TosBonusComponent: React.FunctionComponent = props => { } return ( - +

{I18n.t("onboarding.tos.error")}

diff --git a/ts/features/common/store/reducers/__tests__/__snapshots__/index.test.ts.snap b/ts/features/common/store/reducers/__tests__/__snapshots__/index.test.ts.snap index 02e39e410a1..5b05f98032c 100644 --- a/ts/features/common/store/reducers/__tests__/__snapshots__/index.test.ts.snap +++ b/ts/features/common/store/reducers/__tests__/__snapshots__/index.test.ts.snap @@ -2,9 +2,6 @@ exports[`featuresPersistor should match snapshot 1`] = ` { - "euCovidCert": { - "byAuthCode": {}, - }, "fci": { "documentPreview": { "kind": "PotNone", diff --git a/ts/features/common/store/reducers/index.ts b/ts/features/common/store/reducers/index.ts index 64b2a0bef08..b6604bf2cfc 100644 --- a/ts/features/common/store/reducers/index.ts +++ b/ts/features/common/store/reducers/index.ts @@ -10,10 +10,6 @@ import { CieLoginState, cieLoginPersistor } from "../../../cieLogin/store/reducers"; -import { - EuCovidCertState, - euCovidCertReducer -} from "../../../euCovidCert/store/reducers"; import { FastLoginState, fastLoginReducer @@ -70,7 +66,6 @@ type LoginFeaturesState = { }; export type FeaturesState = { - euCovidCert: EuCovidCertState; pn: PnState; fci: FciState; idPay: IDPayState; @@ -90,7 +85,6 @@ export type FeaturesState = { export type PersistedFeaturesState = FeaturesState & PersistPartial; const rootReducer = combineReducers({ - euCovidCert: euCovidCertReducer, pn: pnReducer, fci: fciReducer, idPay: idPayReducer, diff --git a/ts/features/design-system/core/DSLegacyPictograms.tsx b/ts/features/design-system/core/DSLegacyPictograms.tsx deleted file mode 100644 index 080958f8c43..00000000000 --- a/ts/features/design-system/core/DSLegacyPictograms.tsx +++ /dev/null @@ -1,163 +0,0 @@ -import { - H4, - IOPictograms, - IOPictogramsLegacy, - Pictogram, - VStack, - useIOTheme -} from "@pagopa/io-app-design-system"; -import * as React from "react"; -import { StyleSheet, View } from "react-native"; -import { - DSAssetViewerBox, - assetItemGutter, - renderRasterImage -} from "../components/DSAssetViewerBox"; - -/* PICTOGRAMS */ -import BrokenLink from "../../../../img/broken-link.png"; -import PiggyBank from "../../../../img/messages/empty-transaction-list-icon.png"; -import Question from "../../../../img/pictograms/doubt.png"; -import CompletedRaster from "../../../../img/pictograms/payment-completed.png"; -import ABILogo from "../../../../img/wallet/cards-icons/abiLogoFallback.png"; -import Umbrella from "../../../../img/wallet/errors/generic-error-icon.png"; -import NotAvailable from "../../../../img/wallet/errors/payment-unavailable-icon.png"; -import Unrecognized from "../../../../img/wallet/errors/payment-unknown-icon.png"; -/* EU Covid Certificate */ -import CertificateExpired from "../../../../img/features/euCovidCert/certificate_expired.png"; -import CertificateNotFound from "../../../../img/features/euCovidCert/certificate_not_found.png"; -import CertificateRevoked from "../../../../img/features/euCovidCert/certificate_revoked.png"; -import CertificateWrongFormat from "../../../../img/features/euCovidCert/certificate_wrong_format.png"; -import Baloons from "../../../../img/messages/empty-due-date-list-icon.png"; -/* Sections */ -import { DesignSystemScreen } from "../components/DesignSystemScreen"; - -const styles = StyleSheet.create({ - itemsWrapper: { - flexDirection: "row", - flexWrap: "wrap", - justifyContent: "flex-start", - marginLeft: (assetItemGutter / 2) * -1, - marginRight: (assetItemGutter / 2) * -1, - rowGap: 16 - } -}); - -const sectionTitleMargin = 16; -const blockMargin = 48; - -export const DSLegacyPictograms = () => { - const theme = useIOTheme(); - - return ( - - - -

Vector

- {renderVectorPictograms()} -
- - -

Raster

- {renderRasterPictograms()} -
- - -

EU Covid Certificate

- {renderEUCovidCertificatePictograms()} -
-
-
- ); -}; - -const renderVectorPictograms = () => ( - - {Object.entries(IOPictogramsLegacy).map(([pictogramItemName]) => ( - - } - /> - ))} - -); - -const renderRasterPictograms = () => ( - - - - - - - - - - - -); - -const renderEUCovidCertificatePictograms = () => ( - - - - - - - {/* ↳ Duplicate of Question */} - -); diff --git a/ts/features/design-system/navigation/navigator.tsx b/ts/features/design-system/navigation/navigator.tsx index 9d98a75766a..094c1ea9fc3 100644 --- a/ts/features/design-system/navigation/navigator.tsx +++ b/ts/features/design-system/navigation/navigator.tsx @@ -56,7 +56,6 @@ import { DSLegacyAlert } from "../core/DSLegacyAlert"; import { DSLegacyBadges } from "../core/DSLegacyBadges"; import { DSLegacyButtons } from "../core/DSLegacyButtons"; import { DSLegacyListItems } from "../core/DSLegacyListItems"; -import { DSLegacyPictograms } from "../core/DSLegacyPictograms"; import { DSLegacyTextFields } from "../core/DSLegacyTextFields"; import { DSListItems } from "../core/DSListItems"; import { DSLoaders } from "../core/DSLoaders"; @@ -587,14 +586,6 @@ export const DesignSystemNavigator = () => { {/* LEGACY */} - - { - beforeAll(async () => { - await device.launchApp({ newInstance: true }); - await ensureLoggedIn(); - }); - - it("should find the expired EuCovidCert message, open it and check all the correct elements in the details page", async () => { - await openExpiredEUCovidMessage(); - - await waitFor(element(by.text(euCovidCertExpiredTitle))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - await waitFor(element(by.text(euCovidCertExpiredSubTitle))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - await waitFor(element(by.id(learnMoreLinkTestId))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - }); -}); - -const openExpiredEUCovidMessage = async () => { - await scrollToEUCovidMessage(euCovidCertExpiredSubject); - - const subject = element(by.text(euCovidCertExpiredSubject)); - await subject.tap(); -}; diff --git a/ts/features/euCovidCert/__e2e__/euCovidCertRevoked00.e2e.ts b/ts/features/euCovidCert/__e2e__/euCovidCertRevoked00.e2e.ts deleted file mode 100644 index d0a0e9cc314..00000000000 --- a/ts/features/euCovidCert/__e2e__/euCovidCertRevoked00.e2e.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { device } from "detox"; -import { ensureLoggedIn } from "../../../__e2e__/utils"; -import { e2eWaitRenderTimeout } from "../../../__e2e__/config"; -import { learnMoreLinkTestId, scrollToEUCovidMessage } from "./utils"; - -const euCovidCertRevokedSubject = "🏥 EUCovidCert - revoked"; -const euCovidCertRevokedTitle = "Revoked Certificate title"; -const euCovidCertRevokedSubTitle = "Revoked Certificate sub title"; - -describe("EuCovidCert Revoked", () => { - beforeAll(async () => { - await device.launchApp({ newInstance: true }); - await ensureLoggedIn(); - }); - - it("should find the revoked EuCovidCert message, open it and check all the correct elements in the details page", async () => { - await openRevokedEUCovidMessage(); - - await waitFor(element(by.text(euCovidCertRevokedTitle))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - await waitFor(element(by.text(euCovidCertRevokedSubTitle))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - await waitFor(element(by.id(learnMoreLinkTestId))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - }); -}); - -const openRevokedEUCovidMessage = async () => { - await scrollToEUCovidMessage(euCovidCertRevokedSubject); - - const subject = element(by.text(euCovidCertRevokedSubject)); - await subject.tap(); -}; diff --git a/ts/features/euCovidCert/__e2e__/euCovidCertValid00.e2e.ts b/ts/features/euCovidCert/__e2e__/euCovidCertValid00.e2e.ts deleted file mode 100644 index c76e0ebc284..00000000000 --- a/ts/features/euCovidCert/__e2e__/euCovidCertValid00.e2e.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { device } from "detox"; -import I18n from "../../../i18n"; -import { ensureLoggedIn } from "../../../__e2e__/utils"; -import { e2eWaitRenderTimeout } from "../../../__e2e__/config"; -import { openValidEUCovidMessage, qrCodeTestId } from "./utils"; - -const euCovidCertValidTitle = "Valid Certificate title"; -const euCovidCertValidSubTitle = "Valid Certificate sub title"; - -describe("EuCovidCert Valid", () => { - beforeAll(async () => { - await device.launchApp({ newInstance: true }); - await ensureLoggedIn(); - }); - - it("should find the valid EuCovidCert message, open it and check all the correct elements in the details page", async () => { - await openValidEUCovidMessage(); - - await waitFor(element(by.text(euCovidCertValidTitle))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - await waitFor(element(by.text(euCovidCertValidSubTitle))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - await waitFor(element(by.text(I18n.t("global.genericSave")))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - await waitFor(element(by.id(qrCodeTestId))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - }); -}); diff --git a/ts/features/euCovidCert/__e2e__/euCovidCertValid01.e2e.ts b/ts/features/euCovidCert/__e2e__/euCovidCertValid01.e2e.ts deleted file mode 100644 index b2d36406d8b..00000000000 --- a/ts/features/euCovidCert/__e2e__/euCovidCertValid01.e2e.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { device } from "detox"; -import I18n from "../../../i18n"; -import { e2eWaitRenderTimeout } from "../../../__e2e__/config"; -import { ensureLoggedIn } from "../../../__e2e__/utils"; -import { - fullScreenQrCodeTestId, - openValidEUCovidMessage, - qrCodeTestId -} from "./utils"; - -describe("EuCovidCert Valid", () => { - beforeAll(async () => { - await device.launchApp({ newInstance: true }); - await ensureLoggedIn(); - }); - - it("should open the QRCode in fullscreen and return back", async () => { - await openValidEUCovidMessage(); - - const qrCode = element(by.id(qrCodeTestId)); - await qrCode.tap(); - - await waitFor(element(by.id(fullScreenQrCodeTestId))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - await waitFor(element(by.text(I18n.t("global.buttons.close")))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - const closeButton = element(by.text(I18n.t("global.buttons.close"))); - await closeButton.tap(); - }); -}); diff --git a/ts/features/euCovidCert/__e2e__/euCovidCertValid02.e2e.ts b/ts/features/euCovidCert/__e2e__/euCovidCertValid02.e2e.ts deleted file mode 100644 index 964a37c6645..00000000000 --- a/ts/features/euCovidCert/__e2e__/euCovidCertValid02.e2e.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { device } from "detox"; -import I18n from "../../../i18n"; -import { e2eWaitRenderTimeout } from "../../../__e2e__/config"; -import { ensureLoggedIn } from "../../../__e2e__/utils"; -import { openValidEUCovidMessage } from "./utils"; - -describe("EuCovidCert Valid", () => { - beforeAll(async () => { - await device.launchApp({ newInstance: true }); - await ensureLoggedIn(); - }); - - it("should open the certificate details page and return back", async () => { - await openValidEUCovidMessage(); - - await waitFor(element(by.text(I18n.t("global.buttons.details")))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - const detailsButton = element(by.text(I18n.t("global.buttons.details"))); - await detailsButton.tap(); - - await waitFor(element(by.text(I18n.t("global.buttons.close")))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - const closeButton = element(by.text(I18n.t("global.buttons.close"))); - await closeButton.tap(); - }); -}); diff --git a/ts/features/euCovidCert/__e2e__/euCovidCertValid03.e2e.ts b/ts/features/euCovidCert/__e2e__/euCovidCertValid03.e2e.ts deleted file mode 100644 index 493ec46b041..00000000000 --- a/ts/features/euCovidCert/__e2e__/euCovidCertValid03.e2e.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { device } from "detox"; -import I18n from "../../../i18n"; -import { e2eWaitRenderTimeout } from "../../../__e2e__/config"; -import { ensureLoggedIn } from "../../../__e2e__/utils"; -import { openValidEUCovidMessage } from "./utils"; - -describe("EuCovidCert Valid", () => { - beforeAll(async () => { - await device.launchApp({ newInstance: true }); - await ensureLoggedIn(); - }); - - it("should save the certificate in the gallery", async () => { - await openValidEUCovidMessage(); - - await waitFor(element(by.text(I18n.t("global.genericSave")))) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - const saveButton = element(by.text(I18n.t("global.genericSave"))); - await saveButton.tap(); - - await waitFor( - element( - by.text( - I18n.t( - "features.euCovidCertificate.save.bottomSheet.saveAsImage.title" - ) - ) - ) - ) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - - const saveIntoGalleryButton = element( - by.text( - I18n.t("features.euCovidCertificate.save.bottomSheet.saveAsImage.title") - ) - ); - await saveIntoGalleryButton.tap(); - - await waitFor( - element(by.text(I18n.t("features.euCovidCertificate.save.ok"))) - ) - .toBeVisible() - .withTimeout(e2eWaitRenderTimeout); - }); -}); diff --git a/ts/features/euCovidCert/__e2e__/utils.ts b/ts/features/euCovidCert/__e2e__/utils.ts deleted file mode 100644 index 759fde03a09..00000000000 --- a/ts/features/euCovidCert/__e2e__/utils.ts +++ /dev/null @@ -1,20 +0,0 @@ -const euCovidCertValidSubject = "🏥 EUCovidCert - valid"; - -export const learnMoreLinkTestId = "euCovidCertLearnMoreLink"; -export const messageListTestId = "MessageList_inbox"; -export const qrCodeTestId = "QRCode"; -export const fullScreenQrCodeTestId = "fullScreenQRCode"; - -export const scrollToEUCovidMessage = async (messageSubject: string) => { - await waitFor(element(by.text(messageSubject))) - .toBeVisible() - .whileElement(by.id(messageListTestId)) - .scroll(350, "down"); -}; - -export const openValidEUCovidMessage = async () => { - await scrollToEUCovidMessage(euCovidCertValidSubject); - - const subject = element(by.text(euCovidCertValidSubject)); - await subject.tap(); -}; diff --git a/ts/features/euCovidCert/analytics/index.ts b/ts/features/euCovidCert/analytics/index.ts deleted file mode 100644 index 748c6a73eb6..00000000000 --- a/ts/features/euCovidCert/analytics/index.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { getType } from "typesafe-actions"; -import { constVoid } from "fp-ts/lib/function"; -import { euCovidCertificateEnabled } from "../../../config"; -import { mixpanel } from "../../../mixpanel"; -import { Action } from "../../../store/actions/types"; -import { getNetworkErrorMessage } from "../../../utils/errors"; -import { euCovidCertificateGet } from "../store/actions"; -import { - EUCovidCertificateResponse, - isEuCovidCertificateSuccessResponse -} from "../types/EUCovidCertificateResponse"; - -const trackEuCovidCertificateActions = - (mp: NonNullable) => - (action: Action): void => { - switch (action.type) { - case getType(euCovidCertificateGet.request): - return mp.track(action.type); - case getType(euCovidCertificateGet.success): - return mp.track( - action.type, - trackEuCovidCertificateGetSuccessResponse(action.payload) - ); - case getType(euCovidCertificateGet.failure): - return mp.track(action.type, { - reason: getNetworkErrorMessage(action.payload) - }); - } - }; - -const trackEuCovidCertificateGetSuccessResponse = ( - response: EUCovidCertificateResponse -): Record => { - if (!isEuCovidCertificateSuccessResponse(response)) { - return { - containsInfo: false, - containsDetails: false, - qrCodeLength: undefined - }; - } - const containsInfo = response.value.markdownInfo !== undefined; - const containsDetails = - response.value.kind === "valid" - ? response.value.markdownDetails !== undefined - : false; - const qrCodeLength = - response.value.kind === "valid" - ? response.value.qrCode.content.length - : undefined; - return { - containsInfo, - containsDetails, - qrCodeLength - }; -}; - -const emptyTracking = (_: NonNullable) => (__: Action) => - constVoid(); - -export default euCovidCertificateEnabled - ? trackEuCovidCertificateActions - : emptyTracking; diff --git a/ts/features/euCovidCert/api/backendEuCovidCert.ts b/ts/features/euCovidCert/api/backendEuCovidCert.ts deleted file mode 100644 index 8da836104c8..00000000000 --- a/ts/features/euCovidCert/api/backendEuCovidCert.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { - ApiHeaderJson, - composeHeaderProducers, - createFetchRequestForApi -} from "@pagopa/ts-commons/lib/requests"; -import { - getCertificateDefaultDecoder, - GetCertificateT -} from "../../../../definitions/eu_covid_cert/requestTypes"; -import { SessionToken } from "../../../types/SessionToken"; -import { - tokenHeaderProducer, - withBearerToken as withToken -} from "../../../utils/api"; -import { defaultRetryingFetch } from "../../../utils/fetch"; - -const getCertificate: GetCertificateT = { - method: "post", - url: () => "/api/v1/eucovidcert/certificate", - headers: composeHeaderProducers(tokenHeaderProducer, ApiHeaderJson), - query: _ => ({}), - body: p => JSON.stringify({ accessData: p.accessData }), - response_decoder: getCertificateDefaultDecoder() -}; - -// client for eu covid to handle API communications -export const BackendEuCovidCertClient = ( - baseUrl: string, - token: SessionToken, - fetchApi: typeof fetch = defaultRetryingFetch() -) => { - const options = { - baseUrl, - fetchApi - }; - const withBearerToken = withToken(token); - return { - getCertificate: withBearerToken( - createFetchRequestForApi(getCertificate, options) - ) - }; -}; diff --git a/ts/features/euCovidCert/components/EUCovidContext.tsx b/ts/features/euCovidCert/components/EUCovidContext.tsx deleted file mode 100644 index a20b1437e9f..00000000000 --- a/ts/features/euCovidCert/components/EUCovidContext.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from "react"; -import { EuCovidCertificateRouterScreenNavigationParams } from "../screens/EuCovidCertificateRouterScreen"; - -export const EUCovidContext = - React.createContext( - null - ); diff --git a/ts/features/euCovidCert/components/EuCovidCertHeader.tsx b/ts/features/euCovidCert/components/EuCovidCertHeader.tsx deleted file mode 100644 index 47eeb6edae8..00000000000 --- a/ts/features/euCovidCert/components/EuCovidCertHeader.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import * as React from "react"; -import { Image, StyleSheet, View } from "react-native"; -import { H3, H4 } from "@pagopa/io-app-design-system"; -import { isStringNullyOrEmpty } from "../../../utils/strings"; -import { WithEUCovidCertificateHeaderData } from "../types/EUCovidCertificate"; - -const styles = StyleSheet.create({ - row: { - flexDirection: "row", - justifyContent: "space-between" - }, - column: { flexDirection: "column", flex: 1 }, - logo: { - width: 84, - height: 84 - } -}); - -/** - * header with - * | title | logo | - * | subtitle | | - * @param props - * @constructor - */ -export const EuCovidCertHeader = (props: WithEUCovidCertificateHeaderData) => ( - <> - - -

{props.headerData.title}

-

- {props.headerData.subTitle} -

-
- {/* it could happen we don't want to show any logo, in that case url will be empty */} - {!isStringNullyOrEmpty(props.headerData.logoUrl) && ( - - )} -
- -); diff --git a/ts/features/euCovidCert/components/EuCovidCertLearnMoreLink.tsx b/ts/features/euCovidCert/components/EuCovidCertLearnMoreLink.tsx deleted file mode 100644 index dfd60441def..00000000000 --- a/ts/features/euCovidCert/components/EuCovidCertLearnMoreLink.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as React from "react"; -import { ButtonLink } from "@pagopa/io-app-design-system"; -import { StyleSheet, View } from "react-native"; -import I18n from "../../../i18n"; -import { euCovidCertificateUrl } from "../../../urls"; -import { openWebUrl } from "../../../utils/url"; - -const styles = StyleSheet.create({ - container: { - alignItems: "center" - } -}); - -export const EuCovidCertLearnMoreLink = (): React.ReactElement => ( - - - openWebUrl(euCovidCertificateUrl)} - testID="euCovidCertLearnMoreLink" - /> - - -); diff --git a/ts/features/euCovidCert/components/FlashAnimatedComponent.tsx b/ts/features/euCovidCert/components/FlashAnimatedComponent.tsx deleted file mode 100644 index ae792776416..00000000000 --- a/ts/features/euCovidCert/components/FlashAnimatedComponent.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { Millisecond } from "@pagopa/ts-commons/lib/units"; -import * as React from "react"; -import { useCallback } from "react"; -import { Animated, Easing, StyleSheet } from "react-native"; -import { hexToRgba, IOColors } from "@pagopa/io-app-design-system"; - -const whiteBgTransparent = hexToRgba(IOColors.white, 0); -const whiteBg = hexToRgba(IOColors.white, 1); -const defaultAnimationDuration = 240 as Millisecond; -export type FlashAnimationState = "fadeIn" | "fadeOut" | undefined; - -const styles = StyleSheet.create({ - hover: { - minWidth: "100%", - minHeight: "100%", - bottom: 0, - left: 0, - top: 0, - position: "absolute", - alignItems: "center", - justifyContent: "center" - } -}); -type Props = { - state: FlashAnimationState; - animationDuration?: Millisecond; - onFadeInCompleted?: () => void; - onFadeOutCompleted?: () => void; -}; - -/* an overlay animated view. it is used when screenshot is captured, to simulate flash effect */ -export const FlashAnimatedComponent = (props: Props) => { - const backgroundAnimation = React.useRef(new Animated.Value(0)).current; - const animation = React.useRef(); - const backgroundInterpolation = backgroundAnimation.interpolate({ - inputRange: [0, 1], - outputRange: [whiteBgTransparent, whiteBg] - }); - const { state, onFadeInCompleted, onFadeOutCompleted, animationDuration } = - props; - - const fadeOut = useCallback(() => { - animation.current?.stop(); - // eslint-disable-next-line functional/immutable-data - animation.current = Animated.timing(backgroundAnimation, { - duration: animationDuration ?? defaultAnimationDuration, - toValue: 0, - useNativeDriver: false, - easing: Easing.cubic - }); - animation.current.start(() => onFadeOutCompleted?.()); - }, [animationDuration, backgroundAnimation, onFadeOutCompleted]); - - const fadeIn = useCallback(() => { - animation.current?.stop(); - // eslint-disable-next-line functional/immutable-data - animation.current = Animated.timing(backgroundAnimation, { - duration: animationDuration ?? defaultAnimationDuration, - toValue: 1, - useNativeDriver: false, - easing: Easing.cubic - }); - animation.current.start(() => onFadeInCompleted?.()); - }, [backgroundAnimation, onFadeInCompleted, animationDuration]); - - React.useEffect(() => { - if (state) { - switch (state) { - case "fadeIn": - fadeIn(); - break; - case "fadeOut": - fadeOut(); - break; - } - } - return () => { - animation.current?.stop(); - }; - }, [state, fadeIn, fadeOut]); - return ( - - ); -}; diff --git a/ts/features/euCovidCert/components/MarkdownHandleCustomLink.tsx b/ts/features/euCovidCert/components/MarkdownHandleCustomLink.tsx deleted file mode 100644 index 6e7240e74fd..00000000000 --- a/ts/features/euCovidCert/components/MarkdownHandleCustomLink.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import * as E from "fp-ts/lib/Either"; -import { pipe } from "fp-ts/lib/function"; -import * as React from "react"; -import { useIOToast } from "@pagopa/io-app-design-system"; -import { deriveCustomHandledLink } from "../../../components/ui/Markdown/handlers/link"; -import I18n from "../../../i18n"; -import { clipboardSetStringWithFeedback } from "../../../utils/clipboard"; -import { taskLinking } from "../../../utils/url"; -import { Markdown } from "../../../components/ui/Markdown/Markdown"; - -export const MarkdownHandleCustomLink = ( - props: React.ComponentProps -): React.ReactElement => { - const toast = useIOToast(); - return ( - { - pipe( - deriveCustomHandledLink(link), - E.map(hl => { - if (hl.schema === "copy") { - clipboardSetStringWithFeedback(hl.value); - return; - } - taskLinking(hl.url)().catch(_ => - toast.error(I18n.t("global.genericError")) - ); - }) - ); - }} - > - {props.children} - - ); -}; diff --git a/ts/features/euCovidCert/components/__test__/EuCovidCertHeader.test.tsx b/ts/features/euCovidCert/components/__test__/EuCovidCertHeader.test.tsx deleted file mode 100644 index 6cb63e4eb3f..00000000000 --- a/ts/features/euCovidCert/components/__test__/EuCovidCertHeader.test.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { render } from "@testing-library/react-native"; -import React from "react"; -import { EuCovidCertHeader } from "../EuCovidCertHeader"; - -const headerData = { - title: "title", - subTitle: "subtitle", - logoUrl: "logoUrl" -}; -describe("EuCovidCertHeader", () => { - it(`it should match the snapshot`, () => { - const component = render(); - expect(component).toMatchSnapshot(); - }); -}); - -describe("when the headerData is full filled", () => { - it(`it should show the title, subtitle and logo`, () => { - const component = render(); - expect(component.queryByText(headerData.title)).not.toBeNull(); - expect(component.queryByText(headerData.subTitle)).not.toBeNull(); - expect(component.queryByTestId("EuCovidCertHeaderLogoID")).not.toBeNull(); - }); -}); - -describe("when title and subtitle are empty", () => { - it(`it should show the title, subtitle and the logo`, () => { - const component = render( - - ); - expect(component.queryByTestId("EuCovidCertHeaderTitle")).not.toBeNull(); - expect(component.queryByTestId("EuCovidCertHeaderSubTitle")).not.toBeNull(); - expect(component.queryByTestId("EuCovidCertHeaderLogoID")).not.toBeNull(); - }); -}); - -describe("when the logo url is empty", () => { - it(`it should show the title, subtitle and not the logo`, () => { - const component = render( - - ); - expect(component.queryByText(headerData.title)).not.toBeNull(); - expect(component.queryByText(headerData.subTitle)).not.toBeNull(); - expect(component.queryByTestId("EuCovidCertHeaderLogoID")).toBeNull(); - }); -}); - -describe("when the logo url is filled with blank spaces", () => { - it(`it should show the title, subtitle and not the logo`, () => { - const component = render( - - ); - expect(component.queryByText(headerData.title)).not.toBeNull(); - expect(component.queryByText(headerData.subTitle)).not.toBeNull(); - expect(component.queryByTestId("EuCovidCertHeaderLogoID")).toBeNull(); - }); -}); diff --git a/ts/features/euCovidCert/components/__test__/__snapshots__/EuCovidCertHeader.test.tsx.snap b/ts/features/euCovidCert/components/__test__/__snapshots__/EuCovidCertHeader.test.tsx.snap deleted file mode 100644 index 81dddce39ed..00000000000 --- a/ts/features/euCovidCert/components/__test__/__snapshots__/EuCovidCertHeader.test.tsx.snap +++ /dev/null @@ -1,82 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`EuCovidCertHeader it should match the snapshot 1`] = ` - - - - title - - - subtitle - - - - -`; diff --git a/ts/features/euCovidCert/navigation/actions.ts b/ts/features/euCovidCert/navigation/actions.ts deleted file mode 100644 index 284a7b7eb37..00000000000 --- a/ts/features/euCovidCert/navigation/actions.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { CommonActions } from "@react-navigation/native"; -import NavigationService from "../../../navigation/NavigationService"; -import { EuCovidCertificateRouterScreenNavigationParams } from "../screens/EuCovidCertificateRouterScreen"; -import { EuCovidCertMarkdownDetailsScreenNavigationParams } from "../screens/valid/EuCovidCertMarkdownDetailsScreen"; -import { EuCovidCertQrCodeFullScreenNavigationParams } from "../screens/valid/EuCovidCertQrCodeFullScreen"; -import { MESSAGES_ROUTES } from "../../messages/navigation/routes"; -import EUCOVIDCERT_ROUTES from "./routes"; - -/** - * @deprecated Do not use this method when you have access to a navigation prop or useNavigation since it will behave differently, - * and many helper methods specific to screens won't be available. - */ -export const navigateToEuCovidCertificateDetailScreen = ( - params: EuCovidCertificateRouterScreenNavigationParams -) => - NavigationService.dispatchNavigationAction( - CommonActions.navigate(MESSAGES_ROUTES.MESSAGES_NAVIGATOR, { - screen: EUCOVIDCERT_ROUTES.MAIN, - params: { - screen: EUCOVIDCERT_ROUTES.CERTIFICATE, - params - } - }) - ); - -/** - * @deprecated Do not use this method when you have access to a navigation prop or useNavigation since it will behave differently, - * and many helper methods specific to screens won't be available. - */ -export const navigateToEuCovidCertificateQrCodeFullScreen = ( - params: EuCovidCertQrCodeFullScreenNavigationParams -) => - NavigationService.dispatchNavigationAction( - CommonActions.navigate(MESSAGES_ROUTES.MESSAGES_NAVIGATOR, { - screen: EUCOVIDCERT_ROUTES.MAIN, - params: { - screen: EUCOVIDCERT_ROUTES.QRCODE, - params - } - }) - ); - -/** - * @deprecated Do not use this method when you have access to a navigation prop or useNavigation since it will behave differently, - * and many helper methods specific to screens won't be available. - */ -export const navigateToEuCovidCertificateMarkdownDetailsScreen = ( - params: EuCovidCertMarkdownDetailsScreenNavigationParams -) => - NavigationService.dispatchNavigationAction( - CommonActions.navigate(MESSAGES_ROUTES.MESSAGES_NAVIGATOR, { - screen: EUCOVIDCERT_ROUTES.MAIN, - params: { - screen: EUCOVIDCERT_ROUTES.MARKDOWN_DETAILS, - params - } - }) - ); diff --git a/ts/features/euCovidCert/navigation/navigator.tsx b/ts/features/euCovidCert/navigation/navigator.tsx deleted file mode 100644 index bbf1f8d9406..00000000000 --- a/ts/features/euCovidCert/navigation/navigator.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { createStackNavigator } from "@react-navigation/stack"; -import * as React from "react"; -import { EuCovidCertificateRouterScreen } from "../screens/EuCovidCertificateRouterScreen"; -import { EuCovidCertMarkdownDetailsScreen } from "../screens/valid/EuCovidCertMarkdownDetailsScreen"; -import { EuCovidCertQrCodeFullScreen } from "../screens/valid/EuCovidCertQrCodeFullScreen"; -import { EUCovidCertParamsList } from "./params"; -import EUCOVIDCERT_ROUTES from "./routes"; - -const Stack = createStackNavigator(); - -export const EUCovidCertStackNavigator = () => ( - - - - - -); diff --git a/ts/features/euCovidCert/navigation/params.ts b/ts/features/euCovidCert/navigation/params.ts deleted file mode 100644 index 7478915af0d..00000000000 --- a/ts/features/euCovidCert/navigation/params.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { EuCovidCertificateRouterScreenNavigationParams } from "../screens/EuCovidCertificateRouterScreen"; -import { EuCovidCertMarkdownDetailsScreenNavigationParams } from "../screens/valid/EuCovidCertMarkdownDetailsScreen"; -import { EuCovidCertQrCodeFullScreenNavigationParams } from "../screens/valid/EuCovidCertQrCodeFullScreen"; -import EUCOVIDCERT_ROUTES from "./routes"; - -export type EUCovidCertParamsList = { - [EUCOVIDCERT_ROUTES.CERTIFICATE]: EuCovidCertificateRouterScreenNavigationParams; - [EUCOVIDCERT_ROUTES.QRCODE]: EuCovidCertQrCodeFullScreenNavigationParams; - [EUCOVIDCERT_ROUTES.MARKDOWN_DETAILS]: EuCovidCertMarkdownDetailsScreenNavigationParams; -}; diff --git a/ts/features/euCovidCert/navigation/routes.ts b/ts/features/euCovidCert/navigation/routes.ts deleted file mode 100644 index 3fdf9dca090..00000000000 --- a/ts/features/euCovidCert/navigation/routes.ts +++ /dev/null @@ -1,8 +0,0 @@ -const EUCOVIDCERT_ROUTES = { - MAIN: "EUCOVIDCERT_ROUTES_MAIN", - CERTIFICATE: "EUCOVIDCERT_CERTIFICATE", - QRCODE: "EUCOVIDCERT_QRCODE", - MARKDOWN_DETAILS: "EUCOVIDCERT_MARKDOWN_DETAILS" -} as const; - -export default EUCOVIDCERT_ROUTES; diff --git a/ts/features/euCovidCert/saga/index.ts b/ts/features/euCovidCert/saga/index.ts deleted file mode 100644 index 63c622f13a4..00000000000 --- a/ts/features/euCovidCert/saga/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { SagaIterator } from "redux-saga"; -import { call, takeLatest } from "typed-redux-saga/macro"; -import { ActionType } from "typesafe-actions"; -import { euCovidCertificateGet } from "../store/actions"; -import { BackendEuCovidCertClient } from "../api/backendEuCovidCert"; -import { apiUrlPrefix } from "../../../config"; -import { SessionToken } from "../../../types/SessionToken"; -import { waitBackoffError } from "../../../utils/backoffError"; -import { handleGetEuCovidCertificate } from "./networking/handleGetEuCovidCertificate"; - -/** - * Handle the EU Covid Certificate requests - * @param bearerToken - */ -export function* watchEUCovidCertificateSaga( - bearerToken: SessionToken -): SagaIterator { - const euCovidCertClient = BackendEuCovidCertClient(apiUrlPrefix, bearerToken); - - // handle the request of getting eu covid cert - yield* takeLatest( - euCovidCertificateGet.request, - function* (action: ActionType) { - // wait backoff time if there were previous errors - yield* call(waitBackoffError, euCovidCertificateGet.failure); - yield* call( - handleGetEuCovidCertificate, - euCovidCertClient.getCertificate, - action - ); - } - ); -} diff --git a/ts/features/euCovidCert/saga/networking/handleGetEuCovidCertificate.ts b/ts/features/euCovidCert/saga/networking/handleGetEuCovidCertificate.ts deleted file mode 100644 index a44eff453a5..00000000000 --- a/ts/features/euCovidCert/saga/networking/handleGetEuCovidCertificate.ts +++ /dev/null @@ -1,168 +0,0 @@ -import * as pot from "@pagopa/ts-commons/lib/pot"; -import * as E from "fp-ts/lib/Either"; -import { pipe } from "fp-ts/lib/function"; -import * as O from "fp-ts/lib/Option"; -import { call, put, select } from "typed-redux-saga/macro"; -import { ActionType } from "typesafe-actions"; -import { PreferredLanguageEnum } from "../../../../../definitions/backend/PreferredLanguage"; -import { Certificate } from "../../../../../definitions/eu_covid_cert/Certificate"; -import { HeaderInfo } from "../../../../../definitions/eu_covid_cert/HeaderInfo"; -import { contentRepoUrl } from "../../../../config"; -import { mixpanelTrack } from "../../../../mixpanel"; -import { profileSelector } from "../../../../store/reducers/profile"; -import { SagaCallReturnType } from "../../../../types/utils"; -import { getGenericError, getNetworkError } from "../../../../utils/errors"; -import { readablePrivacyReport } from "../../../../utils/reporters"; -import { BackendEuCovidCertClient } from "../../api/backendEuCovidCert"; -import { euCovidCertificateGet } from "../../store/actions"; -import { - EUCovidCertificate, - EUCovidCertificateAuthCode -} from "../../types/EUCovidCertificate"; -import { - EUCovidCertificateResponse, - EUCovidCertificateResponseFailure -} from "../../types/EUCovidCertificateResponse"; - -const mapKinds: Record = { - 400: "wrongFormat", - 403: "notFound", - 410: "notOperational", - 504: "temporarilyNotAvailable" -}; - -export const convertHeaderInfo = ( - headerInfo: HeaderInfo -): EUCovidCertificate["headerData"] => ({ - title: headerInfo.title, - subTitle: headerInfo.subtitle, - logoUrl: `${contentRepoUrl}/logos/eucovidcert/${headerInfo.logo_id}.png` -}); - -// convert a success response to the logical app representation of it -const convertSuccess = ( - certificate: Certificate, - authCode: EUCovidCertificateAuthCode -): EUCovidCertificateResponse => { - const getCertificate = (): EUCovidCertificate | undefined => { - switch (certificate.status) { - case "valid": - return { - kind: "valid", - id: certificate.uvci as EUCovidCertificate["id"], - qrCode: { - mimeType: certificate.qr_code.mime_type, - content: certificate.qr_code.content - }, - markdownInfo: certificate.info, - markdownDetails: certificate.detail, - headerData: convertHeaderInfo(certificate.header_info) - }; - case "revoked": - return { - kind: "revoked", - id: certificate.uvci as EUCovidCertificate["id"], - revokedOn: certificate.revoked_on, - markdownInfo: certificate.info, - headerData: convertHeaderInfo(certificate.header_info) - }; - case "expired": - return { - kind: "expired", - id: certificate.uvci as EUCovidCertificate["id"], - markdownInfo: certificate.info, - headerData: convertHeaderInfo(certificate.header_info) - }; - default: - return undefined; - } - }; - return pipe( - getCertificate(), - O.fromNullable, - O.foldW( - () => { - // track the conversion failure - void mixpanelTrack("EUCOVIDCERT_CONVERT_SUCCESS_ERROR", { - status: certificate.status - }); - return { kind: "wrongFormat", authCode }; - }, - value => ({ kind: "success", value, authCode }) - ) - ); -}; - -/** - * Handle the remote call to retrieve the certificate data - * @param getCertificate - * @param action - */ -export function* handleGetEuCovidCertificate( - getCertificate: ReturnType["getCertificate"], - action: ActionType -) { - const authCode = action.payload; - - const profile: ReturnType = yield* select( - profileSelector - ); - - try { - const getCertificateResult: SagaCallReturnType = - yield* call(getCertificate, { - accessData: { - auth_code: authCode, - preferred_languages: pot.getOrElse( - pot.mapNullable(profile, p => p.preferred_languages), - [PreferredLanguageEnum.it_IT] - ) - } - }); - if (E.isRight(getCertificateResult)) { - if (getCertificateResult.right.status === 200) { - // handled success - yield* put( - euCovidCertificateGet.success( - convertSuccess(getCertificateResult.right.value, authCode) - ) - ); - return; - } - if (mapKinds[getCertificateResult.right.status] !== undefined) { - yield* put( - euCovidCertificateGet.success({ - kind: mapKinds[getCertificateResult.right.status], - authCode - }) - ); - return; - } - // not handled error codes - yield* put( - euCovidCertificateGet.failure({ - ...getGenericError( - new Error( - `response status code ${getCertificateResult.right.status}` - ) - ), - authCode - }) - ); - } else { - // cannot decode response - yield* put( - euCovidCertificateGet.failure({ - ...getGenericError( - new Error(readablePrivacyReport(getCertificateResult.left)) - ), - authCode - }) - ); - } - } catch (e) { - yield* put( - euCovidCertificateGet.failure({ ...getNetworkError(e), authCode }) - ); - } -} diff --git a/ts/features/euCovidCert/saga/orchestration/placeholder b/ts/features/euCovidCert/saga/orchestration/placeholder deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/ts/features/euCovidCert/screens/BaseEuCovidCertificateLayout.tsx b/ts/features/euCovidCert/screens/BaseEuCovidCertificateLayout.tsx deleted file mode 100644 index 8b6d7aba07b..00000000000 --- a/ts/features/euCovidCert/screens/BaseEuCovidCertificateLayout.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { useFocusEffect } from "@react-navigation/native"; -import * as React from "react"; -import { useRef } from "react"; -import { ScrollView, StyleSheet, View } from "react-native"; -import { heightPercentageToDP } from "react-native-responsive-screen"; -import SectionStatusComponent from "../../../components/SectionStatus"; -import { IOStyles } from "../../../components/core/variables/IOStyles"; -import { useHeaderSecondLevel } from "../../../hooks/useHeaderSecondLevel"; -import { WithTestID } from "../../../types/WithTestID"; -import { setAccessibilityFocus } from "../../../utils/accessibility"; - -type Props = WithTestID<{ - header?: React.ReactElement; - content: React.ReactElement; - footer?: React.ReactElement; -}>; - -const styles = StyleSheet.create({ - emptyHeader: { - flex: 1, - height: heightPercentageToDP("10%") - } -}); - -export const BaseEuCovidCertificateLayout = ({ - testID, - header, - content, - footer -}: Props) => { - const elementRef = useRef(null); - - useHeaderSecondLevel({ - supportRequest: true, - title: "" - }); - - useFocusEffect( - React.useCallback(() => { - setAccessibilityFocus(elementRef); - }, []) - ); - - return ( - <> - - {/* if the header is not defined put an empty header that works as a spacer - (design directions, to avoid content too close with the top of the screen) */} - {header ?? } - {content} - - - {footer} - - ); -}; diff --git a/ts/features/euCovidCert/screens/EuCovidCertExpiredScreen.tsx b/ts/features/euCovidCert/screens/EuCovidCertExpiredScreen.tsx deleted file mode 100644 index 56600980c90..00000000000 --- a/ts/features/euCovidCert/screens/EuCovidCertExpiredScreen.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { VSpacer } from "@pagopa/io-app-design-system"; -import * as React from "react"; -import { Image } from "react-native"; -import expiredImage from "../../../../img/features/euCovidCert/certificate_expired.png"; -import { InfoScreenComponent } from "../../../components/infoScreen/InfoScreenComponent"; -import I18n from "../../../i18n"; -import { EuCovidCertHeader } from "../components/EuCovidCertHeader"; -import { EuCovidCertLearnMoreLink } from "../components/EuCovidCertLearnMoreLink"; -import { MarkdownHandleCustomLink } from "../components/MarkdownHandleCustomLink"; -import { WithEUCovidCertificateHeaderData } from "../types/EUCovidCertificate"; -import { BaseEuCovidCertificateLayout } from "./BaseEuCovidCertificateLayout"; - -type Props = { - expiredInfo?: string; -} & WithEUCovidCertificateHeaderData; - -const EuCovidCertExpiredContentComponent = (props: Props) => ( - <> - - - - } - title={I18n.t("features.euCovidCertificate.expired.title")} - body={} - /> - - {props.expiredInfo && ( - - {props.expiredInfo} - - )} - -); - -/** - * TODO: this screen is identical to EuCovidCertRevokedScreen but but it is still being finalized and could change a lot. - * If it remains so, do a refactoring to unify common behaviors - * @param props - * @constructor - */ -export const EuCovidCertExpiredScreen = (props: Props): React.ReactElement => ( - } - header={} - /> -); diff --git a/ts/features/euCovidCert/screens/EuCovidCertLoadingScreen.tsx b/ts/features/euCovidCert/screens/EuCovidCertLoadingScreen.tsx deleted file mode 100644 index af6df84ca27..00000000000 --- a/ts/features/euCovidCert/screens/EuCovidCertLoadingScreen.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import * as React from "react"; -import { StyleSheet, View } from "react-native"; -import { - Body, - H4, - LoadingSpinner, - VSpacer -} from "@pagopa/io-app-design-system"; -import I18n from "../../../i18n"; -import { BaseEuCovidCertificateLayout } from "./BaseEuCovidCertificateLayout"; - -const styles = StyleSheet.create({ - container: { - alignItems: "center" - }, - subtitle: { - textAlign: "center" - }, - title: { - textAlign: "center" - } -}); - -export const EuCovidCertLoadingScreen = (): React.ReactElement => ( - - - - - - - -

- {I18n.t("features.euCovidCertificate.loading.title")} -

- - - {I18n.t("features.euCovidCertificate.loading.subtitle")} - -
- } - /> -); diff --git a/ts/features/euCovidCert/screens/EuCovidCertRevokedScreen.tsx b/ts/features/euCovidCert/screens/EuCovidCertRevokedScreen.tsx deleted file mode 100644 index ff6c1a93657..00000000000 --- a/ts/features/euCovidCert/screens/EuCovidCertRevokedScreen.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import * as pot from "@pagopa/ts-commons/lib/pot"; -import { - Divider, - H3, - Label, - Pictogram, - VSpacer -} from "@pagopa/io-app-design-system"; -import * as React from "react"; -import { StyleSheet, View } from "react-native"; -import I18n from "../../../i18n"; -import { EuCovidCertHeader } from "../components/EuCovidCertHeader"; -import { EuCovidCertLearnMoreLink } from "../components/EuCovidCertLearnMoreLink"; -import { MarkdownHandleCustomLink } from "../components/MarkdownHandleCustomLink"; -import { WithEUCovidCertificateHeaderData } from "../types/EUCovidCertificate"; -import { useIOSelector } from "../../../store/hooks"; -import { EUCovidContext } from "../components/EUCovidContext"; -import { getPaginatedMessageById } from "../../messages/store/reducers/paginatedById"; -import { localeDateFormat } from "../../../utils/locale"; -import { BaseEuCovidCertificateLayout } from "./BaseEuCovidCertificateLayout"; - -const styles = StyleSheet.create({ - container: { - alignItems: "center" - }, - title: { - textAlign: "center" - } -}); - -type Props = { - revokeInfo?: string; -} & WithEUCovidCertificateHeaderData; - -const EuCovidCertRevokedContentComponent = (props: Props) => { - const currentCert = React.useContext(EUCovidContext); - const messageId = currentCert?.messageId ?? ""; - const paginatedMessagePot = useIOSelector(state => - getPaginatedMessageById(state, messageId) - ); - const createdAtOrUndefined = pot.toUndefined(paginatedMessagePot)?.createdAt; - - return ( - <> - - {createdAtOrUndefined && ( - - )} - - - - - -

- {I18n.t("features.euCovidCertificate.revoked.title")} -

-
- - {props.revokeInfo && ( - {props.revokeInfo} - )} - - - - ); -}; - -export const EuCovidCertRevokedScreen = (props: Props): React.ReactElement => ( - } - content={} - /> -); diff --git a/ts/features/euCovidCert/screens/EuCovidCertificateRouterScreen.tsx b/ts/features/euCovidCert/screens/EuCovidCertificateRouterScreen.tsx deleted file mode 100644 index 02565fcbdb6..00000000000 --- a/ts/features/euCovidCert/screens/EuCovidCertificateRouterScreen.tsx +++ /dev/null @@ -1,146 +0,0 @@ -import * as pot from "@pagopa/ts-commons/lib/pot"; -import * as React from "react"; -import { useEffect, useRef } from "react"; -import { euCovidCertificateGet } from "../store/actions"; -import { - euCovidCertificateFromAuthCodeSelector, - euCovidCertificateShouldBeLoadedSelector -} from "../store/reducers/byAuthCode"; -import { - EUCovidCertificate, - EUCovidCertificateAuthCode -} from "../types/EUCovidCertificate"; -import { IOStackNavigationRouteProps } from "../../../navigation/params/AppParamsList"; -import { EUCovidContext } from "../components/EUCovidContext"; -import { EUCovidCertParamsList } from "../navigation/params"; -import { EUCovidCertificateResponse } from "../types/EUCovidCertificateResponse"; -import { useIODispatch, useIOSelector } from "../../../store/hooks"; -import { EuCovidCertExpiredScreen } from "./EuCovidCertExpiredScreen"; -import { EuCovidCertLoadingScreen } from "./EuCovidCertLoadingScreen"; -import { EuCovidCertRevokedScreen } from "./EuCovidCertRevokedScreen"; -import { EuCovidCertGenericErrorKoScreen } from "./ko/EuCovidCertGenericErrorKoScreen"; -import { EuCovidCertNotFoundKoScreen } from "./ko/EuCovidCertNotFoundKoScreen"; -import { EuCovidCertNotOperationalKoScreen } from "./ko/EuCovidCertNotOperationalKoScreen"; -import { EuCovidCertTemporarilyNotAvailableKoScreen } from "./ko/EuCovidCertTemporarilyNotAvailableKoScreen"; -import { EuCovidCertWrongFormatKoScreen } from "./ko/EuCovidCertWrongFormatKoScreen"; -import { EuCovidCertValidScreen } from "./valid/EuCovidCertValidScreen"; - -export type EuCovidCertificateRouterScreenNavigationParams = Readonly<{ - authCode: EUCovidCertificateAuthCode; - messageId: string; -}>; - -/** - * Return the right screen based on the response value - * @param response - */ -const routeEuCovidResponse = ( - response: EUCovidCertificateResponse -): React.ReactElement => { - switch (response.kind) { - case "notFound": - return ; - case "notOperational": - return ; - case "temporarilyNotAvailable": - return ; - case "wrongFormat": - return ; - case "success": - return routeSuccessEuCovidResponse(response.value); - } -}; - -const routeSuccessEuCovidResponse = ( - certificate: EUCovidCertificate -): React.ReactElement => { - switch (certificate.kind) { - case "valid": - return ( - - ); - case "revoked": - return ( - - ); - case "expired": - return ( - - ); - } -}; - -/** - * Router screen that triggers the first loading of the certificate (if not present in the store) - * and dispatch the rendering, based on the results of the certificate received - * @constructor - * @param props - */ -export const EuCovidCertificateRouterScreen = ( - props: IOStackNavigationRouteProps< - EUCovidCertParamsList, - "EUCOVIDCERT_CERTIFICATE" - > -): React.ReactElement | null => { - const authCode = props.route.params.authCode; - const messageId = props.route.params.messageId; - const shouldBeLoaded = useIOSelector(state => - euCovidCertificateShouldBeLoadedSelector(state, authCode) - ); - const euCovidCertificateResponse = useIOSelector(state => - euCovidCertificateFromAuthCodeSelector(state, authCode) - ); - const dispatch = useIODispatch(); - const firstLoading = useRef(true); - - useEffect(() => { - if (firstLoading.current) { - // check if a load is required - if (shouldBeLoaded) { - dispatch(euCovidCertificateGet.request(authCode)); - } - // eslint-disable-next-line functional/immutable-data - firstLoading.current = false; - } - }, [dispatch, shouldBeLoaded, messageId, authCode]); - - // handle with the fold the remote state and with routeEuCovidResponse the different response values - return ( - - {pot.fold( - euCovidCertificateResponse, - () => ( - - ), - () => ( - - ), - _ => ( - - ), - _ => ( - - ), - response => routeEuCovidResponse(response), - _ => ( - - ), - (_, __) => ( - - ), - _ => ( - - ) - )} - - ); -}; diff --git a/ts/features/euCovidCert/screens/__test__/EUCovidCertExpiredScreen.test.tsx b/ts/features/euCovidCert/screens/__test__/EUCovidCertExpiredScreen.test.tsx deleted file mode 100644 index 0d2515fe738..00000000000 --- a/ts/features/euCovidCert/screens/__test__/EUCovidCertExpiredScreen.test.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import * as React from "react"; - -import { Store } from "redux"; -import configureMockStore from "redux-mock-store"; -import { applicationChangeState } from "../../../../store/actions/application"; -import { appReducer } from "../../../../store/reducers"; -import { GlobalState } from "../../../../store/reducers/types"; -import { renderScreenWithNavigationStoreContext } from "../../../../utils/testWrapper"; -import EUCOVIDCERT_ROUTES from "../../navigation/routes"; -import { expiredCertificate } from "../../types/__mock__/EUCovidCertificate.mock"; -import { ExpiredCertificate } from "../../types/EUCovidCertificate"; -import { EuCovidCertExpiredScreen } from "../EuCovidCertExpiredScreen"; - -describe("Test EuCovidCertExpiredScreen", () => { - jest.useFakeTimers(); - - it("With expiredCertificate, the header should match the data contained in the certificate", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const mockStore = configureMockStore(); - const store: ReturnType = mockStore(globalState); - const render = renderComponent(store, { - ...expiredCertificate, - headerData: { - title: "titleValid", - subTitle: "subtitleValid", - logoUrl: "logoUrlValid" - } - }); - expect(render.component.queryByText("titleValid")).not.toBeNull(); - expect(render.component.queryByText("subtitleValid")).not.toBeNull(); - expect( - render.component.findByTestId("EuCovidCertHeaderLogoID") - ).not.toBeNull(); - }); -}); - -const renderComponent = ( - store: Store, - revokedCertificate: ExpiredCertificate -) => ({ - component: renderScreenWithNavigationStoreContext( - () => ( - - ), - EUCOVIDCERT_ROUTES.CERTIFICATE, - {}, - store - ), - store -}); diff --git a/ts/features/euCovidCert/screens/__test__/EUCovidCertRevokedScreen.test.tsx b/ts/features/euCovidCert/screens/__test__/EUCovidCertRevokedScreen.test.tsx deleted file mode 100644 index a1961f20553..00000000000 --- a/ts/features/euCovidCert/screens/__test__/EUCovidCertRevokedScreen.test.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import * as React from "react"; - -import { Store } from "redux"; -import configureMockStore from "redux-mock-store"; -import { applicationChangeState } from "../../../../store/actions/application"; -import { appReducer } from "../../../../store/reducers"; -import { GlobalState } from "../../../../store/reducers/types"; -import { renderScreenWithNavigationStoreContext } from "../../../../utils/testWrapper"; -import EUCOVIDCERT_ROUTES from "../../navigation/routes"; -import { revokedCertificate } from "../../types/__mock__/EUCovidCertificate.mock"; -import { RevokedCertificate } from "../../types/EUCovidCertificate"; -import { EuCovidCertRevokedScreen } from "../EuCovidCertRevokedScreen"; - -describe("Test EuCovidCertRevokedScreen", () => { - jest.useFakeTimers(); - - it("With revokedCertificate, the header should match the data contained in the certificate", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const mockStore = configureMockStore(); - const store: ReturnType = mockStore(globalState); - const render = renderComponent(store, { - ...revokedCertificate, - headerData: { - title: "titleValid", - subTitle: "subtitleValid", - logoUrl: "logoUrlValid" - } - }); - expect(render.component.queryByText("titleValid")).not.toBeNull(); - expect(render.component.queryByText("subtitleValid")).not.toBeNull(); - expect( - render.component.findByTestId("EuCovidCertHeaderLogoID") - ).not.toBeNull(); - }); -}); - -const renderComponent = (store: Store, certificate: RevokedCertificate) => ({ - component: renderScreenWithNavigationStoreContext( - () => , - EUCOVIDCERT_ROUTES.CERTIFICATE, - {}, - store - ), - store -}); diff --git a/ts/features/euCovidCert/screens/__test__/EUCovidCertValidScreen.test.tsx b/ts/features/euCovidCert/screens/__test__/EUCovidCertValidScreen.test.tsx deleted file mode 100644 index 3c4e7f70cc4..00000000000 --- a/ts/features/euCovidCert/screens/__test__/EUCovidCertValidScreen.test.tsx +++ /dev/null @@ -1,155 +0,0 @@ -import { NavigationAction } from "@react-navigation/native"; -import { fireEvent } from "@testing-library/react-native"; -import * as React from "react"; -import { Store } from "redux"; -import configureMockStore from "redux-mock-store"; -import I18n from "../../../../i18n"; -import NavigationService from "../../../../navigation/NavigationService"; -import { applicationChangeState } from "../../../../store/actions/application"; -import { appReducer } from "../../../../store/reducers"; -import { GlobalState } from "../../../../store/reducers/types"; -import { renderScreenWithNavigationStoreContext } from "../../../../utils/testWrapper"; -import EUCOVIDCERT_ROUTES from "../../navigation/routes"; -import { - baseValidCertificate, - completeValidCertificate, - validCertificateWithoutDetails, - validCertificateWithoutPreview -} from "../../types/__mock__/EUCovidCertificate.mock"; -import { ValidCertificate } from "../../types/EUCovidCertificate"; -import { EuCovidCertValidScreen } from "../valid/EuCovidCertValidScreen"; -import { MESSAGES_ROUTES } from "../../../messages/navigation/routes"; - -describe("Test EUCovidCertificateValidScreen", () => { - jest.useFakeTimers(); - it("With baseValidCertificate, the details button and the preview markdown shouldn't be rendered", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const mockStore = configureMockStore(); - const store: ReturnType = mockStore(globalState); - const render = renderComponent(store, baseValidCertificate); - - expect( - render.component.queryByText(I18n.t("global.buttons.details")) - ).toBeNull(); - - expect(render.component.queryByTestId("markdownPreview")).toBeNull(); - }); - it("With validCertificateWithoutPreview, the details button should be rendered but the preview markdown shouldn't be rendered", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const mockStore = configureMockStore(); - const store: ReturnType = mockStore(globalState); - const render = renderComponent(store, validCertificateWithoutPreview); - - expect( - render.component.queryByText(I18n.t("global.buttons.details")) - ).not.toBeNull(); - - expect(render.component.queryByTestId("markdownPreview")).toBeNull(); - }); - - it("With validCertificateWithoutDetails, the details button shouldn't be rendered but the preview markdown should be rendered", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const mockStore = configureMockStore(); - const store: ReturnType = mockStore(globalState); - const render = renderComponent(store, validCertificateWithoutDetails); - - expect( - render.component.queryByText(I18n.t("global.buttons.details")) - ).toBeNull(); - - expect(render.component.queryByTestId("markdownPreview")).not.toBeNull(); - }); - it("With completeValidCertificate, the details button and preview markdown should be rendered", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const spy = jest.spyOn(NavigationService, "dispatchNavigationAction"); - const mockStore = configureMockStore(); - const store: ReturnType = mockStore(globalState); - const render = renderComponent(store, completeValidCertificate); - - const detailsButton = render.component.queryByText( - I18n.t("global.buttons.details") - ); - - const qrCodeTouchable = render.component.queryByTestId("QRCode"); - - expect(detailsButton).not.toBeNull(); - - expect(qrCodeTouchable).not.toBeNull(); - - if (detailsButton) { - fireEvent.press(detailsButton); - const detailsPayload: NavigationAction = { - type: "NAVIGATE", - payload: { - name: MESSAGES_ROUTES.MESSAGES_NAVIGATOR, - params: { - screen: EUCOVIDCERT_ROUTES.MAIN, - params: { - screen: EUCOVIDCERT_ROUTES.MARKDOWN_DETAILS, - params: { - markdownDetails: "markdownDetails" - } - } - } - } - }; - expect(spy).toHaveBeenCalledWith(detailsPayload); - } - - if (qrCodeTouchable) { - fireEvent.press(qrCodeTouchable); - const qrCodePayload: NavigationAction = { - type: "NAVIGATE", - payload: { - name: MESSAGES_ROUTES.MESSAGES_NAVIGATOR, - params: { - screen: EUCOVIDCERT_ROUTES.MAIN, - params: { - screen: EUCOVIDCERT_ROUTES.QRCODE, - params: { - qrCodeContent: - "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" - } - } - } - } - }; - expect(spy).toHaveBeenCalledWith(qrCodePayload); - } - expect(render.component.queryByTestId("markdownPreview")).not.toBeNull(); - }); - - it("With baseValidCertificate, the header should match the data contained in the certificate", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const mockStore = configureMockStore(); - const store: ReturnType = mockStore(globalState); - const render = renderComponent(store, { - ...baseValidCertificate, - headerData: { - title: "titleValid", - subTitle: "subtitleValid", - logoUrl: "logoUrlValid" - } - }); - expect(render.component.queryByText("titleValid")).not.toBeNull(); - expect(render.component.queryByText("subtitleValid")).not.toBeNull(); - expect( - render.component.findByTestId("EuCovidCertHeaderLogoID") - ).not.toBeNull(); - }); -}); - -const renderComponent = (store: Store, validCertificate: ValidCertificate) => ({ - component: renderScreenWithNavigationStoreContext( - () => ( - - ), - EUCOVIDCERT_ROUTES.CERTIFICATE, - {}, - store - ), - store -}); diff --git a/ts/features/euCovidCert/screens/__test__/EuCovidCertificateRouterScreen.test.tsx b/ts/features/euCovidCert/screens/__test__/EuCovidCertificateRouterScreen.test.tsx deleted file mode 100644 index a4e84705341..00000000000 --- a/ts/features/euCovidCert/screens/__test__/EuCovidCertificateRouterScreen.test.tsx +++ /dev/null @@ -1,218 +0,0 @@ -import { createStore, Store } from "redux"; -import { applicationChangeState } from "../../../../store/actions/application"; -import { appReducer } from "../../../../store/reducers"; -import { GlobalState } from "../../../../store/reducers/types"; -import { renderScreenWithNavigationStoreContext } from "../../../../utils/testWrapper"; -import { navigateToEuCovidCertificateDetailScreen } from "../../navigation/actions"; -import EUCOVIDCERT_ROUTES from "../../navigation/routes"; -import { euCovidCertificateGet } from "../../store/actions"; -import { - baseValidCertificate, - revokedCertificate -} from "../../types/__mock__/EUCovidCertificate.mock"; -import { EUCovidCertificateAuthCode } from "../../types/EUCovidCertificate"; -import { EuCovidCertificateRouterScreen } from "../EuCovidCertificateRouterScreen"; - -const authCode = "authCode" as EUCovidCertificateAuthCode; - -describe("Test EuCovidCertificateRouterScreen", () => { - jest.useFakeTimers(); - it("With the default store state, the loading screen should be rendered", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - const render = renderComponent(store); - - expect( - render.component.queryByTestId("EuCovidCertLoadingScreen") - ).not.toBeNull(); - }); - it("With a failure, the loading screen should be rendered EuCovidCertGenericErrorKoScreen", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - - const render = renderComponent(store); - - navigateToEuCovidCertificateDetailScreen({ - authCode, - messageId: "messageId" - }); - - expect( - render.component.queryByTestId("EuCovidCertLoadingScreen") - ).not.toBeNull(); - - render.store.dispatch( - euCovidCertificateGet.failure({ - kind: "generic", - authCode, - value: new Error("An error") - }) - ); - - expect( - render.component.queryByTestId("EuCovidCertGenericErrorKoScreen") - ).not.toBeNull(); - }); - - it("With a revoked certificate, the loading screen should be rendered EuCovidCertRevokedScreen", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - const render = renderComponent(store); - - expect( - render.component.queryByTestId("EuCovidCertLoadingScreen") - ).not.toBeNull(); - - render.store.dispatch( - euCovidCertificateGet.success({ - authCode, - kind: "success", - value: revokedCertificate - }) - ); - - expect( - render.component.queryByTestId("EuCovidCertRevokedScreen") - ).not.toBeNull(); - }); - it("With a valid certificate response, the loading screen should be rendered EuCovidCertValidScreen", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - const render = renderComponent(store); - - expect( - render.component.queryByTestId("EuCovidCertLoadingScreen") - ).not.toBeNull(); - - render.store.dispatch( - euCovidCertificateGet.success({ - authCode, - kind: "success", - value: baseValidCertificate - }) - ); - - expect( - render.component.queryByTestId("EuCovidCertValidScreen") - ).not.toBeNull(); - }); - - it("With a notFound response, the loading screen should be rendered EuCovidCertNotFoundKoScreen", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, { - ...globalState, - features: { - ...globalState.features, - euCovidCert: { - ...globalState.features.euCovidCert, - current: { - messageId: "123", - authCode: "123" as EUCovidCertificateAuthCode - } - } - } - } as any); - const render = renderComponent(store); - - expect( - render.component.queryByTestId("EuCovidCertLoadingScreen") - ).not.toBeNull(); - - render.store.dispatch( - euCovidCertificateGet.success({ - authCode, - kind: "notFound" - }) - ); - - expect( - render.component.queryByTestId("EuCovidCertNotFoundKoScreen") - ).not.toBeNull(); - }); - - it("With a notOperational response, the loading screen should be rendered EuCovidCertNotOperationalKoScreen", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - const render = renderComponent(store); - - expect( - render.component.queryByTestId("EuCovidCertLoadingScreen") - ).not.toBeNull(); - - render.store.dispatch( - euCovidCertificateGet.success({ - authCode, - kind: "notOperational" - }) - ); - - expect( - render.component.queryByTestId("EuCovidCertNotOperationalKoScreen") - ).not.toBeNull(); - }); - - it("With a temporarilyNotAvailable response, the loading screen should be rendered EuCovidCertTemporarilyNotAvailableKoScreen", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - const render = renderComponent(store); - - expect( - render.component.queryByTestId("EuCovidCertLoadingScreen") - ).not.toBeNull(); - - render.store.dispatch( - euCovidCertificateGet.success({ - authCode, - kind: "temporarilyNotAvailable" - }) - ); - - expect( - render.component.queryByTestId( - "EuCovidCertTemporarilyNotAvailableKoScreen" - ) - ).not.toBeNull(); - }); - it("With a wrongFormat response, the loading screen should be rendered EuCovidCertWrongFormatKoScreen", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, { - ...globalState, - features: { - ...globalState.features, - euCovidCert: { - ...globalState.features.euCovidCert, - current: { - messageId: "123", - authCode: "123" as EUCovidCertificateAuthCode - } - } - } - } as any); - const render = renderComponent(store); - - expect( - render.component.queryByTestId("EuCovidCertLoadingScreen") - ).not.toBeNull(); - - render.store.dispatch( - euCovidCertificateGet.success({ - authCode, - kind: "wrongFormat" - }) - ); - - expect( - render.component.queryByTestId("EuCovidCertWrongFormatKoScreen") - ).not.toBeNull(); - }); -}); - -const renderComponent = (store: Store) => ({ - component: renderScreenWithNavigationStoreContext( - EuCovidCertificateRouterScreen, - EUCOVIDCERT_ROUTES.CERTIFICATE, - { authCode, messageId: "messageId" }, - store - ), - store -}); diff --git a/ts/features/euCovidCert/screens/ko/EuCovidCertGenericErrorKoScreen.tsx b/ts/features/euCovidCert/screens/ko/EuCovidCertGenericErrorKoScreen.tsx deleted file mode 100644 index 1c6552befaa..00000000000 --- a/ts/features/euCovidCert/screens/ko/EuCovidCertGenericErrorKoScreen.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { - Body, - FooterWithButtons, - H4, - Pictogram, - VSpacer -} from "@pagopa/io-app-design-system"; -import * as React from "react"; -import { useContext } from "react"; -import { StyleSheet, View } from "react-native"; -import WorkunitGenericFailure from "../../../../components/error/WorkunitGenericFailure"; -import I18n from "../../../../i18n"; -import { useIODispatch } from "../../../../store/hooks"; -import { EUCovidContext } from "../../components/EUCovidContext"; -import { euCovidCertificateGet } from "../../store/actions"; -import { BaseEuCovidCertificateLayout } from "../BaseEuCovidCertificateLayout"; - -const styles = StyleSheet.create({ - container: { - alignItems: "center" - }, - subtitle: { - textAlign: "center" - } -}); - -const EuCovidCertGenericErrorKoComponent = () => ( - - - - - -

{I18n.t("features.euCovidCertificate.ko.genericError.title")}

- - - {I18n.t("features.euCovidCertificate.ko.genericError.subtitle")} - -
-); - -export const EuCovidCertGenericErrorKoScreen = (): React.ReactElement => { - const currentCertificate = useContext(EUCovidContext); - const dispatch = useIODispatch(); - // read from the store the authCode for the current certificate and create the refresh callback - const authCode = currentCertificate?.authCode; - const reloadCertificate = React.useCallback(() => { - if (authCode) { - dispatch(euCovidCertificateGet.request(authCode)); - } - }, [authCode, dispatch]); - - // reloadCertificate === undefined should never happens, handled with WorkunitGenericFailure - return reloadCertificate ? ( - } - footer={ - - } - /> - ) : ( - - ); -}; diff --git a/ts/features/euCovidCert/screens/ko/EuCovidCertNotFoundKoScreen.tsx b/ts/features/euCovidCert/screens/ko/EuCovidCertNotFoundKoScreen.tsx deleted file mode 100644 index 4868a425042..00000000000 --- a/ts/features/euCovidCert/screens/ko/EuCovidCertNotFoundKoScreen.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import { - FooterWithButtons, - H6, - HSpacer, - VSpacer -} from "@pagopa/io-app-design-system"; -import * as React from "react"; -import { useContext } from "react"; -import { Image, StyleSheet, View } from "react-native"; -import doubtImage from "../../../../../img/features/euCovidCert/certificate_not_found.png"; -import CopyButtonComponent from "../../../../components/CopyButtonComponent"; -import WorkunitGenericFailure from "../../../../components/error/WorkunitGenericFailure"; -import { InfoScreenComponent } from "../../../../components/infoScreen/InfoScreenComponent"; -import I18n from "../../../../i18n"; -import { mixpanelTrack } from "../../../../mixpanel"; -import { euCovidCertificateUrl } from "../../../../urls"; -import { openWebUrl } from "../../../../utils/url"; -import { EUCovidContext } from "../../components/EUCovidContext"; -import { EUCovidCertificateAuthCode } from "../../types/EUCovidCertificate"; -import { BaseEuCovidCertificateLayout } from "../BaseEuCovidCertificateLayout"; - -const styles = StyleSheet.create({ - row: { - flexDirection: "row", - justifyContent: "space-between" - }, - shrink: { - flexShrink: 1 - } -}); - -const CopyWithTitleItem: React.FC<{ - title: string; - toCopy: string; - testId?: string; -}> = ({ title, toCopy, testId }) => ( - <> - -
{title}
-
- -
- {toCopy} -
- - -
- -); - -const EuCovidCertNotFoundKoComponent: React.FC<{ - currentAuthCode: EUCovidCertificateAuthCode; - messageId: string; -}> = ({ currentAuthCode, messageId }) => ( - <> - - } - title={I18n.t("features.euCovidCertificate.ko.notFound.title")} - /> -
{I18n.t("features.euCovidCertificate.ko.notFound.subtitle")}
- - - - - -); - -export const EuCovidCertNotFoundKoScreen = (): React.ReactElement => { - const euCovidCertCurrent = useContext(EUCovidContext); - // Handling unexpected error - if (euCovidCertCurrent === null) { - void mixpanelTrack("EUCOVIDCERT_UNEXPECTED_ERROR"); - return ; - } - - return ( - - } - footer={ - openWebUrl(euCovidCertificateUrl), - label: I18n.t("features.euCovidCertificate.ko.notFound.cta") - } - }} - /> - } - /> - ); -}; diff --git a/ts/features/euCovidCert/screens/ko/EuCovidCertNotOperationalKoScreen.tsx b/ts/features/euCovidCert/screens/ko/EuCovidCertNotOperationalKoScreen.tsx deleted file mode 100644 index 41f08ab110d..00000000000 --- a/ts/features/euCovidCert/screens/ko/EuCovidCertNotOperationalKoScreen.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { VSpacer } from "@pagopa/io-app-design-system"; -import * as React from "react"; -import { Image } from "react-native"; -import notOperational from "../../../../../img/messages/empty-due-date-list-icon.png"; -import { InfoScreenComponent } from "../../../../components/infoScreen/InfoScreenComponent"; -import I18n from "../../../../i18n"; -import { EuCovidCertLearnMoreLink } from "../../components/EuCovidCertLearnMoreLink"; -import { BaseEuCovidCertificateLayout } from "../BaseEuCovidCertificateLayout"; - -const EuCovidCertNotOperationalComponent = (): React.ReactElement => ( - <> - - - - } - title={I18n.t("features.euCovidCertificate.ko.notOperational.title")} - body={} - /> - -); - -export const EuCovidCertNotOperationalKoScreen = (): React.ReactElement => ( - } - /> -); diff --git a/ts/features/euCovidCert/screens/ko/EuCovidCertTemporarilyNotAvailableKoScreen.tsx b/ts/features/euCovidCert/screens/ko/EuCovidCertTemporarilyNotAvailableKoScreen.tsx deleted file mode 100644 index d1a68d29d84..00000000000 --- a/ts/features/euCovidCert/screens/ko/EuCovidCertTemporarilyNotAvailableKoScreen.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { VSpacer } from "@pagopa/io-app-design-system"; -import * as React from "react"; -import { Image } from "react-native"; -import unavailableImage from "../../../../../img/wallet/errors/payment-expired-icon.png"; -import { InfoScreenComponent } from "../../../../components/infoScreen/InfoScreenComponent"; -import I18n from "../../../../i18n"; -import { BaseEuCovidCertificateLayout } from "../BaseEuCovidCertificateLayout"; - -const EuCovidCertTemporarilyNotAvailableComponent = (): React.ReactElement => ( - <> - - - - } - title={I18n.t( - "features.euCovidCertificate.ko.temporarilyNotAvailable.title" - )} - body={I18n.t( - "features.euCovidCertificate.ko.temporarilyNotAvailable.subtitle" - )} - /> - -); - -export const EuCovidCertTemporarilyNotAvailableKoScreen = - (): React.ReactElement => ( - } - /> - ); diff --git a/ts/features/euCovidCert/screens/ko/EuCovidCertWrongFormatKoScreen.tsx b/ts/features/euCovidCert/screens/ko/EuCovidCertWrongFormatKoScreen.tsx deleted file mode 100644 index 0e2f127deeb..00000000000 --- a/ts/features/euCovidCert/screens/ko/EuCovidCertWrongFormatKoScreen.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import { - FooterWithButtons, - H6, - HSpacer, - VSpacer -} from "@pagopa/io-app-design-system"; -import * as React from "react"; -import { useContext } from "react"; -import { Image, StyleSheet, View } from "react-native"; -import wrongFormatImage from "../../../../../img/features/euCovidCert/certificate_wrong_format.png"; -import CopyButtonComponent from "../../../../components/CopyButtonComponent"; -import WorkunitGenericFailure from "../../../../components/error/WorkunitGenericFailure"; -import { InfoScreenComponent } from "../../../../components/infoScreen/InfoScreenComponent"; -import I18n from "../../../../i18n"; -import { mixpanelTrack } from "../../../../mixpanel"; -import { euCovidCertificateUrl } from "../../../../urls"; -import { openWebUrl } from "../../../../utils/url"; -import { EUCovidContext } from "../../components/EUCovidContext"; -import { EUCovidCertificateAuthCode } from "../../types/EUCovidCertificate"; -import { BaseEuCovidCertificateLayout } from "../BaseEuCovidCertificateLayout"; - -const styles = StyleSheet.create({ - row: { - flexDirection: "row", - justifyContent: "space-between" - }, - shrink: { - flexShrink: 1 - } -}); - -const CopyWithTitleItem: React.FC<{ - title: string; - toCopy: string; - testId?: string; -}> = ({ title, toCopy, testId }) => ( - <> - -
{title}
-
- -
- {toCopy} -
- - -
- -); - -const EuCovidCertWrongFormatKoComponent: React.FC<{ - currentAuthCode: EUCovidCertificateAuthCode; - messageId: string; -}> = ({ currentAuthCode, messageId }) => ( - <> - - } - title={I18n.t("features.euCovidCertificate.ko.wrongFormat.title")} - /> -
{I18n.t("features.euCovidCertificate.ko.wrongFormat.subtitle")}
- - - - - -); - -export const EuCovidCertWrongFormatKoScreen = (): React.ReactElement => { - const euCovidCertCurrent = useContext(EUCovidContext); - - // Handling unexpected error - if (euCovidCertCurrent === null) { - void mixpanelTrack("EUCOVIDCERT_UNEXPECTED_ERROR"); - return ; - } - - return ( - - } - footer={ - openWebUrl(euCovidCertificateUrl) - } - }} - /> - } - /> - ); -}; diff --git a/ts/features/euCovidCert/screens/ko/__tests__/EuCovidCertNotFoundKoScreen.test.tsx b/ts/features/euCovidCert/screens/ko/__tests__/EuCovidCertNotFoundKoScreen.test.tsx deleted file mode 100644 index e301939e325..00000000000 --- a/ts/features/euCovidCert/screens/ko/__tests__/EuCovidCertNotFoundKoScreen.test.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { fireEvent } from "@testing-library/react-native"; -import * as React from "react"; - -import { createStore } from "redux"; -import i18n from "../../../../../i18n"; -import * as mixpanelTrack from "../../../../../mixpanel"; -import { applicationChangeState } from "../../../../../store/actions/application"; -import { appReducer } from "../../../../../store/reducers"; -import { GlobalState } from "../../../../../store/reducers/types"; -import { renderScreenWithNavigationStoreContext } from "../../../../../utils/testWrapper"; -import * as openWebUrl from "../../../../../utils/url"; -import EUCOVIDCERT_ROUTES from "../../../navigation/routes"; -import { EUCovidCertificateAuthCode } from "../../../types/EUCovidCertificate"; -import { EuCovidCertNotFoundKoScreen } from "../EuCovidCertNotFoundKoScreen"; -import { EuCovidCertWrongFormatKoScreen } from "../EuCovidCertWrongFormatKoScreen"; -import { EUCovidContext } from "../../../components/EUCovidContext"; - -describe("Test EuCovidCertNotFoundKoScreen", () => { - jest.useFakeTimers(); - it("Should show the WorkunitGenericFailure and should send the mixpanel event if euCovidCertCurrentSelector return null", () => { - const spyMixpanelTrack = jest.spyOn(mixpanelTrack, "mixpanelTrack"); - const globalState = appReducer(undefined, applicationChangeState("active")); - const notFoundScreen = renderComponent(globalState, false); - - expect( - notFoundScreen.queryByTestId("WorkunitGenericFailure") - ).not.toBeNull(); - expect( - notFoundScreen.queryByTestId("EuCovidCertNotFoundKoScreen") - ).toBeNull(); - expect(spyMixpanelTrack).toBeCalled(); - }); - it("Should show the authorization code and the message identifier if euCovidCertCurrentSelector is not null, and onButton click should open the web url", () => { - const spyOpenWebUrl = jest.spyOn(openWebUrl, "openWebUrl"); - const globalState = appReducer(undefined, applicationChangeState("active")); - const notFoundScreen = renderComponent({ - ...globalState, - features: { - ...globalState.features, - euCovidCert: { - ...globalState.features.euCovidCert - } - } - }); - const requestAssistanceButton = notFoundScreen.queryByText( - i18n.t("features.euCovidCertificate.ko.notFound.cta") - ); - - expect(requestAssistanceButton).not.toBeNull(); - - if (requestAssistanceButton !== null) { - fireEvent.press(requestAssistanceButton); - expect(spyOpenWebUrl).toBeCalled(); - } - - expect( - notFoundScreen.queryByTestId("authorizationCodeToCopy") - ).not.toBeNull(); - expect( - notFoundScreen.queryByTestId("messageIdentifierToCopy") - ).not.toBeNull(); - expect(notFoundScreen.queryByTestId("WorkunitGenericFailure")).toBeNull(); - }); -}); - -const renderComponent = (state: GlobalState, withContext: boolean = true) => { - const store = createStore(appReducer, state as any); - - const Component = withContext ? ( - - - - ) : ( - - ); - - return renderScreenWithNavigationStoreContext( - () => Component, - EUCOVIDCERT_ROUTES.CERTIFICATE, - {}, - store - ); -}; diff --git a/ts/features/euCovidCert/screens/ko/__tests__/EuCovidCertWrongFormatKoScreen.test.tsx b/ts/features/euCovidCert/screens/ko/__tests__/EuCovidCertWrongFormatKoScreen.test.tsx deleted file mode 100644 index 454ccf6ff2b..00000000000 --- a/ts/features/euCovidCert/screens/ko/__tests__/EuCovidCertWrongFormatKoScreen.test.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import { fireEvent } from "@testing-library/react-native"; -import * as React from "react"; - -import { createStore } from "redux"; -import i18n from "../../../../../i18n"; -import * as mixpanelTrack from "../../../../../mixpanel"; -import { applicationChangeState } from "../../../../../store/actions/application"; -import { appReducer } from "../../../../../store/reducers"; -import { GlobalState } from "../../../../../store/reducers/types"; -import { renderScreenWithNavigationStoreContext } from "../../../../../utils/testWrapper"; -import * as openWebUrl from "../../../../../utils/url"; -import EUCOVIDCERT_ROUTES from "../../../navigation/routes"; -import { EUCovidCertificateAuthCode } from "../../../types/EUCovidCertificate"; -import { EuCovidCertWrongFormatKoScreen } from "../EuCovidCertWrongFormatKoScreen"; -import { EUCovidContext } from "../../../components/EUCovidContext"; - -describe("Test EuCovidCertNotFoundKoScreen", () => { - jest.useFakeTimers(); - it("Should show the WorkunitGenericFailure and should send the mixpanel event if euCovidCertCurrentSelector return null", () => { - const spyMixpanelTrack = jest.spyOn(mixpanelTrack, "mixpanelTrack"); - const globalState = appReducer(undefined, applicationChangeState("active")); - const wrongFormatScreen = renderComponent(globalState, false); - - expect( - wrongFormatScreen.queryByTestId("WorkunitGenericFailure") - ).not.toBeNull(); - expect( - wrongFormatScreen.queryByTestId("EuCovidCertWrongFormatKoScreen") - ).toBeNull(); - expect(spyMixpanelTrack).toBeCalled(); - }); - it("Should show the authorization code and the message identifier if euCovidCertCurrentSelector is not null, and onButton click should open the web url", () => { - const spyOpenWebUrl = jest.spyOn(openWebUrl, "openWebUrl"); - const globalState = appReducer(undefined, applicationChangeState("active")); - const wrongFormatScreen = renderComponent({ - ...globalState, - features: { - ...globalState.features, - euCovidCert: { - ...globalState.features.euCovidCert - } - } - }); - const requestAssistanceButton = wrongFormatScreen.queryByText( - i18n.t("features.euCovidCertificate.ko.wrongFormat.cta") - ); - - expect(requestAssistanceButton).not.toBeNull(); - - if (requestAssistanceButton !== null) { - fireEvent.press(requestAssistanceButton); - expect(spyOpenWebUrl).toBeCalled(); - } - - expect( - wrongFormatScreen.queryByTestId("authorizationCodeToCopy") - ).not.toBeNull(); - expect( - wrongFormatScreen.queryByTestId("messageIdentifierToCopy") - ).not.toBeNull(); - expect( - wrongFormatScreen.queryByTestId("WorkunitGenericFailure") - ).toBeNull(); - }); -}); - -const renderComponent = (state: GlobalState, withContext: boolean = true) => { - const store = createStore(appReducer, state as any); - - const Component = withContext ? ( - - - - ) : ( - - ); - - return renderScreenWithNavigationStoreContext( - () => Component, - EUCOVIDCERT_ROUTES.CERTIFICATE, - {}, - store - ); -}; diff --git a/ts/features/euCovidCert/screens/valid/EuCovidCertMarkdownDetailsScreen.tsx b/ts/features/euCovidCert/screens/valid/EuCovidCertMarkdownDetailsScreen.tsx deleted file mode 100644 index fe0187ca48a..00000000000 --- a/ts/features/euCovidCert/screens/valid/EuCovidCertMarkdownDetailsScreen.tsx +++ /dev/null @@ -1,142 +0,0 @@ -import { - FooterWithButtons, - IOColors, - IOToast, - VSpacer -} from "@pagopa/io-app-design-system"; -import * as React from "react"; -import { useState } from "react"; -import { ScrollView, StyleSheet, View } from "react-native"; -import { IOStyles } from "../../../../components/core/variables/IOStyles"; -import { useHeaderSecondLevel } from "../../../../hooks/useHeaderSecondLevel"; -import I18n from "../../../../i18n"; -import { mixpanelTrack } from "../../../../mixpanel"; -import { IOStackNavigationRouteProps } from "../../../../navigation/params/AppParamsList"; -import { - FlashAnimatedComponent, - FlashAnimationState -} from "../../components/FlashAnimatedComponent"; -import { MarkdownHandleCustomLink } from "../../components/MarkdownHandleCustomLink"; -import { EUCovidCertParamsList } from "../../navigation/params"; -import { captureScreenshot, screenshotOptions } from "../../utils/screenshot"; - -export type EuCovidCertMarkdownDetailsScreenNavigationParams = Readonly<{ - markdownDetails: string; -}>; - -const styles = StyleSheet.create({ - viewShot: { - flex: 1, - backgroundColor: IOColors.white - } -}); - -const showToastError = (error: string = I18n.t("global.genericError")) => - IOToast.error(error); - -export const EuCovidCertMarkdownDetailsScreen = ( - props: IOStackNavigationRouteProps< - EUCovidCertParamsList, - "EUCOVIDCERT_MARKDOWN_DETAILS" - > -): React.ReactElement => { - const [loadMarkdownComplete, setLoadMarkdownComplete] = useState(false); - const [isCapturingScreenShoot, setIsCapturingScreenShoot] = useState(false); - const [flashAnimationState, setFlashAnimationState] = - useState(); - const screenShotViewContainerRef = React.createRef(); - - React.useEffect(() => { - if (isCapturingScreenShoot) { - // at the end of fadeIn animation, the views inside screenShotViewContainerRef - // will be captured in an screenshot image - setFlashAnimationState("fadeIn"); - } - }, [isCapturingScreenShoot]); - - const saveScreenShoot = () => { - // it should not never happen - if (screenShotViewContainerRef.current === null) { - showToastError(); - setIsCapturingScreenShoot(false); - return; - } - captureScreenshot(screenShotViewContainerRef, screenshotOptions, { - onSuccess: () => - IOToast.success(I18n.t("features.euCovidCertificate.save.ok")), - onNoPermissions: () => - IOToast.info(I18n.t("features.euCovidCertificate.save.noPermission")), - onError: () => IOToast.error(I18n.t("global.genericError")), - onEnd: () => { - setFlashAnimationState("fadeOut"); - setIsCapturingScreenShoot(false); - } - }); - }; - // show button when markdown is loaded and it is not capturing the screenshot - const canShowButton = !isCapturingScreenShoot && loadMarkdownComplete; - - useHeaderSecondLevel({ - title: I18n.t( - "features.euCovidCertificate.valid.markdownDetails.headerTitle" - ), - supportRequest: true - }); - - return ( - <> - - {/* add an extra padding while capturing the screenshot */} - - {/* add an extra top and bottom (as extra height in the markdown component) - margin while capturing the screenshot */} - {isCapturingScreenShoot && } - setLoadMarkdownComplete(true)} - > - {props.route.params.markdownDetails} - - - - {canShowButton && ( - props.navigation.goBack() - } - }} - secondary={{ - type: "Solid", - buttonProps: { - label: I18n.t( - "features.euCovidCertificate.valid.markdownDetails.save" - ), - onPress: () => { - void mixpanelTrack("EUCOVIDCERT_SAVE_MARKDOWN_DETAILS"); - setIsCapturingScreenShoot(true); - } - } - }} - /> - )} - {/* this view must be the last one, since it must be drawn on top of all */} - - - ); -}; diff --git a/ts/features/euCovidCert/screens/valid/EuCovidCertQrCodeFullScreen.tsx b/ts/features/euCovidCert/screens/valid/EuCovidCertQrCodeFullScreen.tsx deleted file mode 100644 index 62f28e65654..00000000000 --- a/ts/features/euCovidCert/screens/valid/EuCovidCertQrCodeFullScreen.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { FooterWithButtons, VSpacer } from "@pagopa/io-app-design-system"; -import * as React from "react"; -import { Dimensions, Image, ScrollView, StyleSheet } from "react-native"; -import { useHeaderSecondLevel } from "../../../../hooks/useHeaderSecondLevel"; -import I18n from "../../../../i18n"; -import { IOStackNavigationRouteProps } from "../../../../navigation/params/AppParamsList"; -import { useMaxBrightness } from "../../../../utils/brightness"; -import { withBase64Uri } from "../../../../utils/image"; -import { EUCovidCertParamsList } from "../../navigation/params"; - -export type EuCovidCertQrCodeFullScreenNavigationParams = Readonly<{ - qrCodeContent: string; -}>; - -const styles = StyleSheet.create({ - qrCode: { - // TODO: it's preferable to use the hook useWindowDimensions, but we need to upgrade react native - width: Dimensions.get("window").width, - height: Dimensions.get("window").width, - flex: 1 - } -}); - -export const EuCovidCertQrCodeFullScreen = ( - props: IOStackNavigationRouteProps< - EUCovidCertParamsList, - "EUCOVIDCERT_QRCODE" - > -): React.ReactElement => { - useMaxBrightness(); - - useHeaderSecondLevel({ - title: "", - supportRequest: true - }); - - return ( - <> - - - - - - props.navigation.goBack() - } - }} - /> - - ); -}; diff --git a/ts/features/euCovidCert/screens/valid/EuCovidCertValidScreen.tsx b/ts/features/euCovidCert/screens/valid/EuCovidCertValidScreen.tsx deleted file mode 100644 index 00b2f64d846..00000000000 --- a/ts/features/euCovidCert/screens/valid/EuCovidCertValidScreen.tsx +++ /dev/null @@ -1,306 +0,0 @@ -import { - BlockButtonProps, - FooterWithButtons, - H4, - H6, - IOColors, - IOToast, - Icon, - VSpacer -} from "@pagopa/io-app-design-system"; -import * as React from "react"; -import { useContext, useState } from "react"; -import { - Dimensions, - Image, - Pressable, - StyleProp, - StyleSheet, - TouchableOpacity, - View, - ViewStyle -} from "react-native"; -import { IOStyles } from "../../../../components/core/variables/IOStyles"; -import I18n from "../../../../i18n"; -import { mixpanelTrack } from "../../../../mixpanel"; -import themeVariables from "../../../../theme/variables"; -import { useLegacyIOBottomSheetModal } from "../../../../utils/hooks/bottomSheet"; -import { withBase64Uri } from "../../../../utils/image"; -import { EUCovidContext } from "../../components/EUCovidContext"; -import { EuCovidCertHeader } from "../../components/EuCovidCertHeader"; -import { - FlashAnimatedComponent, - FlashAnimationState -} from "../../components/FlashAnimatedComponent"; -import { MarkdownHandleCustomLink } from "../../components/MarkdownHandleCustomLink"; -import { - navigateToEuCovidCertificateMarkdownDetailsScreen, - navigateToEuCovidCertificateQrCodeFullScreen -} from "../../navigation/actions"; -import { - ValidCertificate, - WithEUCovidCertificateHeaderData -} from "../../types/EUCovidCertificate"; -import { captureScreenshot, screenshotOptions } from "../../utils/screenshot"; -import { BaseEuCovidCertificateLayout } from "../BaseEuCovidCertificateLayout"; - -type Props = { - validCertificate: ValidCertificate; -} & WithEUCovidCertificateHeaderData; - -const styles = StyleSheet.create({ - qrCode: { - // TODO: it's preferable to use the hook useWindowDimensions, but we need to upgrade react native - width: Dimensions.get("window").width - themeVariables.contentPadding * 2, - height: Dimensions.get("window").width - themeVariables.contentPadding * 2, - flex: 1 - }, - container: { - paddingRight: 0, - paddingLeft: 0, - marginVertical: 20, - height: 60, - backgroundColor: IOColors.white - }, - flexColumn: { - flexDirection: "column", - flex: 1 - }, - row: { - flexDirection: "row", - alignItems: "flex-start", - justifyContent: "space-between" - } -}); - -type EuCovidCertValidComponentProps = Props & { - markdownWebViewStyle?: StyleProp; - messageId?: string; -}; -const EuCovidCertValidComponent = ( - props: EuCovidCertValidComponentProps -): React.ReactElement => ( - - {props.validCertificate.qrCode.mimeType === "image/png" && ( - <> - - - navigateToEuCovidCertificateQrCodeFullScreen({ - qrCodeContent: props.validCertificate.qrCode.content - }) - } - > - { - void mixpanelTrack("EUCOVIDCERT_QRCODE_IMAGE_NOT_VALID", { - messageId: props.messageId - }); - }} - /> - - - - )} - {props.validCertificate.markdownInfo && ( - - - {props.validCertificate.markdownInfo} - - - - )} - -); - -const showToastError = (error: string = I18n.t("global.genericError")) => - IOToast.error(error); - -const addBottomSheetItem = (config: { - title: string; - subTitle: string; - onPress: () => void; -}) => ( - - - - -

{config.title}

-
{config.subTitle}
-
- -
-
- -
-); - -type FooterProps = Props & { onSave: () => void }; -const Footer = (props: FooterProps): React.ReactElement => { - const { - present: presentBottomSheet, - bottomSheet, - dismiss - } = useLegacyIOBottomSheetModal( - - {addBottomSheetItem({ - title: I18n.t( - "features.euCovidCertificate.save.bottomSheet.saveAsImage.title" - ), - subTitle: I18n.t( - "features.euCovidCertificate.save.bottomSheet.saveAsImage.subTitle" - ), - onPress: () => { - props.onSave(); - dismiss(); - } - })} - , - -

- {I18n.t("features.euCovidCertificate.save.bottomSheet.title")} -

-
- {I18n.t("features.euCovidCertificate.save.bottomSheet.subTitle")} -
- -
, - 320 - ); - - const saveButton: BlockButtonProps = { - type: "Solid", - buttonProps: { - onPress: presentBottomSheet, - label: I18n.t("global.genericSave") - } - }; - - const markdownDetails = props.validCertificate.markdownDetails; - - return ( - <> - {bottomSheet} - {markdownDetails ? ( - - navigateToEuCovidCertificateMarkdownDetailsScreen({ - markdownDetails - }), - label: I18n.t("global.buttons.details") - } - }} - secondary={saveButton} - /> - ) : ( - - )} - - ); -}; - -export const EuCovidCertValidScreen = (props: Props): React.ReactElement => { - const currentCert = useContext(EUCovidContext); - const screenShotViewContainer = React.createRef(); - const [flashAnimationState, setFlashAnimationState] = - useState(); - const [isCapturingScreenShoot, setIsCapturingScreenShoot] = useState(false); - React.useEffect(() => { - if (isCapturingScreenShoot) { - // at the end of fadeIn animation, the views inside screenShotViewContainerRef - // will be captured in an screenshot image - setFlashAnimationState("fadeIn"); - } - }, [isCapturingScreenShoot]); - - const saveScreenShoot = () => { - // it should not never happen - if (screenShotViewContainer.current === null) { - showToastError(); - return; - } - captureScreenshot(screenShotViewContainer, screenshotOptions, { - onSuccess: () => - IOToast.success(I18n.t("features.euCovidCertificate.save.ok")), - onNoPermissions: () => - IOToast.info(I18n.t("features.euCovidCertificate.save.noPermission")), - onError: () => IOToast.error(I18n.t("global.genericError")), - onEnd: () => { - setFlashAnimationState("fadeOut"); - setIsCapturingScreenShoot(false); - } - }); - }; - const header = ; - return ( - - {/* add extra space (top,sides,bottom) and padding while capturing the screenshot */} - {isCapturingScreenShoot && } - {isCapturingScreenShoot && ( - {header} - )} - {isCapturingScreenShoot && } - - {isCapturingScreenShoot && } - - } - footer={ - <> -
{ - void mixpanelTrack("EUCOVIDCERT_SAVE_QRCODE"); - setIsCapturingScreenShoot(true); - }} - /> - {/* this view must be the last one, since it must be drawn on top of all */} - - - } - /> - ); -}; diff --git a/ts/features/euCovidCert/store/actions/index.ts b/ts/features/euCovidCert/store/actions/index.ts deleted file mode 100644 index d6e8ae45bd2..00000000000 --- a/ts/features/euCovidCert/store/actions/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ActionType, createAsyncAction } from "typesafe-actions"; -import { NetworkError } from "../../../../utils/errors"; -import { EUCovidCertificateAuthCode } from "../../types/EUCovidCertificate"; -import { - EUCovidCertificateResponse, - WithEUCovidCertAuthCode -} from "../../types/EUCovidCertificateResponse"; - -/** - * The user requests the EU Covid certificate, starting from the auth_code - */ -export const euCovidCertificateGet = createAsyncAction( - "EUCOVIDCERT_REQUEST", - "EUCOVIDCERT_SUCCESS", - "EUCOVIDCERT_FAILURE" -)< - EUCovidCertificateAuthCode, - EUCovidCertificateResponse, - WithEUCovidCertAuthCode ->(); - -export type EuCovidCertActions = ActionType; diff --git a/ts/features/euCovidCert/store/reducers/__test__/byAuthCode.test.ts b/ts/features/euCovidCert/store/reducers/__test__/byAuthCode.test.ts deleted file mode 100644 index f5fb224e946..00000000000 --- a/ts/features/euCovidCert/store/reducers/__test__/byAuthCode.test.ts +++ /dev/null @@ -1,258 +0,0 @@ -import * as pot from "@pagopa/ts-commons/lib/pot"; -import MockDate from "mockdate"; -import { createStore } from "redux"; -import { applicationChangeState } from "../../../../../store/actions/application"; -import { appReducer } from "../../../../../store/reducers"; -import { - getGenericError, - getNetworkErrorMessage, - NetworkError -} from "../../../../../utils/errors"; -import { completeValidCertificate } from "../../../types/__mock__/EUCovidCertificate.mock"; -import { EUCovidCertificateAuthCode } from "../../../types/EUCovidCertificate"; -import { WithEUCovidCertAuthCode } from "../../../types/EUCovidCertificateResponse"; -import { euCovidCertificateGet } from "../../actions"; -import { - euCovidCertificateFromAuthCodeSelector, - EUCovidCertificateResponseWithTimestamp, - euCovidCertificateShouldBeLoadedSelector -} from "../byAuthCode"; - -const authCode = "authCode1" as EUCovidCertificateAuthCode; -const mockResponseSuccess: EUCovidCertificateResponseWithTimestamp = { - authCode, - kind: "success", - lastUpdate: new Date("2021-06-07"), - value: completeValidCertificate -}; - -const mockFailure: WithEUCovidCertAuthCode = { - authCode, - ...getGenericError(new Error("A generic error")) -}; - -const errorFromFailure = new Error(getNetworkErrorMessage(mockFailure)); - -describe("Test byAuthCode reducer & selector behaviour", () => { - it("Initial state should be pot.none", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - expect(globalState.features.euCovidCert.byAuthCode).toStrictEqual({}); - expect( - euCovidCertificateFromAuthCodeSelector(globalState, authCode) - ).toStrictEqual(pot.none); - }); - it("Should be pot.noneLoading after the first loading action dispatched", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - store.dispatch(euCovidCertificateGet.request(authCode)); - - const byAuthCode = store.getState().features.euCovidCert.byAuthCode; - - expect(byAuthCode[authCode]).toStrictEqual(pot.noneLoading); - expect( - euCovidCertificateFromAuthCodeSelector(store.getState(), authCode) - ).toStrictEqual(pot.noneLoading); - }); - it("Should be pot.some with the response, after the success action", () => { - MockDate.set("2021-06-07"); - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - store.dispatch(euCovidCertificateGet.request(authCode)); - store.dispatch(euCovidCertificateGet.success(mockResponseSuccess)); - - expect( - store.getState().features.euCovidCert.byAuthCode[authCode] - ).toStrictEqual(pot.some(mockResponseSuccess)); - expect( - euCovidCertificateFromAuthCodeSelector(store.getState(), authCode) - ).toStrictEqual(pot.some(mockResponseSuccess)); - - store.dispatch(euCovidCertificateGet.request(authCode)); - - expect( - store.getState().features.euCovidCert.byAuthCode[authCode] - ).toStrictEqual(pot.someLoading(mockResponseSuccess)); - expect( - euCovidCertificateFromAuthCodeSelector(store.getState(), authCode) - ).toStrictEqual(pot.someLoading(mockResponseSuccess)); - - store.dispatch(euCovidCertificateGet.failure(mockFailure)); - - expect( - store.getState().features.euCovidCert.byAuthCode[authCode] - ).toStrictEqual(pot.someError(mockResponseSuccess, errorFromFailure)); - expect( - euCovidCertificateFromAuthCodeSelector(store.getState(), authCode) - ).toStrictEqual(pot.someError(mockResponseSuccess, errorFromFailure)); - MockDate.reset(); - }); - it("Should be pot.noneError after the failure action", () => { - MockDate.set("2021-06-07"); - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - store.dispatch(euCovidCertificateGet.request(authCode)); - store.dispatch(euCovidCertificateGet.failure(mockFailure)); - - expect( - store.getState().features.euCovidCert.byAuthCode[authCode] - ).toStrictEqual(pot.noneError(errorFromFailure)); - expect( - euCovidCertificateFromAuthCodeSelector(store.getState(), authCode) - ).toStrictEqual(pot.noneError(errorFromFailure)); - - store.dispatch(euCovidCertificateGet.request(authCode)); - expect( - store.getState().features.euCovidCert.byAuthCode[authCode] - ).toStrictEqual(pot.noneLoading); - expect( - euCovidCertificateFromAuthCodeSelector(store.getState(), authCode) - ).toStrictEqual(pot.noneLoading); - - store.dispatch(euCovidCertificateGet.success(mockResponseSuccess)); - - expect( - store.getState().features.euCovidCert.byAuthCode[authCode] - ).toStrictEqual(pot.some(mockResponseSuccess)); - expect( - euCovidCertificateFromAuthCodeSelector(store.getState(), authCode) - ).toStrictEqual(pot.some(mockResponseSuccess)); - MockDate.reset(); - }); - - it("Should return true if the authCode is not in byAuthCode", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeTruthy(); - }); - - it("Should return true if the authCode slice is error or loading", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - - store.dispatch(euCovidCertificateGet.request(authCode)); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeTruthy(); - - store.dispatch( - euCovidCertificateGet.failure({ - kind: "generic", - authCode, - value: new Error("An error") - }) - ); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeTruthy(); - }); - - it("Should return true if the authCode slice isn't a success response", () => { - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - - store.dispatch(euCovidCertificateGet.request(authCode)); - store.dispatch( - euCovidCertificateGet.success({ kind: "notOperational", authCode }) - ); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeTruthy(); - - store.dispatch(euCovidCertificateGet.request(authCode)); - store.dispatch( - euCovidCertificateGet.success({ kind: "wrongFormat", authCode }) - ); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeTruthy(); - - store.dispatch(euCovidCertificateGet.request(authCode)); - store.dispatch( - euCovidCertificateGet.success({ kind: "notFound", authCode }) - ); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeTruthy(); - - store.dispatch(euCovidCertificateGet.request(authCode)); - store.dispatch( - euCovidCertificateGet.success({ - kind: "temporarilyNotAvailable", - authCode - }) - ); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeTruthy(); - }); - - it("Should return true after 1h (ttl) if the response is success", () => { - MockDate.set("2021-06-07T00:00"); - const globalState = appReducer(undefined, applicationChangeState("active")); - const store = createStore(appReducer, globalState as any); - - store.dispatch(euCovidCertificateGet.request(authCode)); - store.dispatch(euCovidCertificateGet.success(mockResponseSuccess)); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeFalsy(); - - MockDate.set("2021-06-07T00:30"); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeFalsy(); - - MockDate.set("2021-06-07T00:59:59"); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeFalsy(); - - MockDate.set("2021-06-07T01:00:00"); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeTruthy(); - - MockDate.set("2021-06-07T15:00:00"); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeTruthy(); - - MockDate.set("2021-06-10T15:00:00"); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeTruthy(); - - store.dispatch(euCovidCertificateGet.request(authCode)); - store.dispatch(euCovidCertificateGet.success(mockResponseSuccess)); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeFalsy(); - - MockDate.set("2021-06-10T15:30:00"); - - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeFalsy(); - - MockDate.set("2021-06-10T16:00:00"); - expect( - euCovidCertificateShouldBeLoadedSelector(store.getState(), authCode) - ).toBeTruthy(); - }); -}); diff --git a/ts/features/euCovidCert/store/reducers/byAuthCode.ts b/ts/features/euCovidCert/store/reducers/byAuthCode.ts deleted file mode 100644 index 88706b627b0..00000000000 --- a/ts/features/euCovidCert/store/reducers/byAuthCode.ts +++ /dev/null @@ -1,97 +0,0 @@ -import * as pot from "@pagopa/ts-commons/lib/pot"; -import { Millisecond } from "@pagopa/ts-commons/lib/units"; -import { createSelector } from "reselect"; -import { getType } from "typesafe-actions"; -import { Action } from "../../../../store/actions/types"; -import { IndexedById } from "../../../../store/helpers/indexer"; -import { - toError, - toLoading, - toSome -} from "../../../../store/reducers/IndexedByIdPot"; -import { GlobalState } from "../../../../store/reducers/types"; -import { getNetworkErrorMessage } from "../../../../utils/errors"; -import { isStrictSome } from "../../../../utils/pot"; -import { EUCovidCertificateAuthCode } from "../../types/EUCovidCertificate"; -import { - EUCovidCertificateResponse, - isEuCovidCertificateSuccessResponse -} from "../../types/EUCovidCertificateResponse"; -import { euCovidCertificateGet } from "../actions"; - -export type EUCovidCertificateResponseWithTimestamp = - EUCovidCertificateResponse & { - lastUpdate: Date; - }; - -export type EuCovidCertByIdState = IndexedById< - pot.Pot ->; - -/** - * Store the EU Certificate response status based on the AuthCode used to issue the request - * @param state - * @param action - */ -export const euCovidCertByAuthCodeReducer = ( - state: EuCovidCertByIdState = {}, - action: Action -): EuCovidCertByIdState => { - switch (action.type) { - case getType(euCovidCertificateGet.request): - return toLoading(action.payload, state); - case getType(euCovidCertificateGet.success): - return toSome(action.payload.authCode, state, { - ...action.payload, - lastUpdate: new Date() - }); - case getType(euCovidCertificateGet.failure): - return toError( - action.payload.authCode, - state, - new Error(getNetworkErrorMessage(action.payload)) - ); - } - - return state; -}; - -/** - * From authCode to EUCovidCertificateResponse - */ -export const euCovidCertificateFromAuthCodeSelector = createSelector( - [ - (state: GlobalState) => state.features.euCovidCert.byAuthCode, - (_: GlobalState, authCode: EUCovidCertificateAuthCode) => authCode - ], - ( - byAuthCode, - authCode - ): pot.Pot => - byAuthCode[authCode] ?? pot.none -); - -// 1h -const ttlTime: Millisecond = (60 * 60 * 1000) as Millisecond; - -/** - * Return true when the remote data should be reloaded: - * - no entry for the selected authCode - * - the slice is not potSome - * - the slice response is not a success response - * - ttlTime is elapsed from the last update of the success response - * Using an unmemorized selector is intentional, as the result changes over time - */ -export const euCovidCertificateShouldBeLoadedSelector = ( - state: GlobalState, - authCode: EUCovidCertificateAuthCode -) => { - const slice = euCovidCertificateFromAuthCodeSelector(state, authCode); - const now = new Date(); - return ( - slice === undefined || - !isStrictSome(slice) || - !isEuCovidCertificateSuccessResponse(slice.value) || - now.getTime() - slice.value.lastUpdate.getTime() >= ttlTime - ); -}; diff --git a/ts/features/euCovidCert/store/reducers/index.ts b/ts/features/euCovidCert/store/reducers/index.ts deleted file mode 100644 index d7aacb200a0..00000000000 --- a/ts/features/euCovidCert/store/reducers/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { combineReducers } from "redux"; -import { Action } from "../../../../store/actions/types"; -import { - euCovidCertByAuthCodeReducer, - EuCovidCertByIdState -} from "./byAuthCode"; - -export type EuCovidCertState = { - byAuthCode: EuCovidCertByIdState; -}; - -export const euCovidCertReducer = combineReducers({ - // save, using the AuthCode as key the the pot.Pot response - byAuthCode: euCovidCertByAuthCodeReducer -}); diff --git a/ts/features/euCovidCert/types/EUCovidCertificate.ts b/ts/features/euCovidCert/types/EUCovidCertificate.ts deleted file mode 100644 index 511a6d8ecf5..00000000000 --- a/ts/features/euCovidCert/types/EUCovidCertificate.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { IUnitTag } from "@pagopa/ts-commons/lib/units"; - -/** - * The unique ID of a EU Covid Certificate - */ -export type EUCovidCertificateId = string & IUnitTag<"EUCovidCertificateId">; - -/** - * The auth code used to request the EU Covid Certificate, received via message - */ -export type EUCovidCertificateAuthCode = string & - IUnitTag<"EUCovidCertificateAuthCode">; - -type WithEUCovidCertificateId = { - id?: EUCovidCertificateId; -}; - -type QRCode = { - mimeType: "image/png" | "image/svg"; - content: string; -}; - -export type WithEUCovidCertificateHeaderData = { - headerData: { - title: string; - subTitle: string; - logoUrl: string; - }; -}; - -export type ValidCertificate = WithEUCovidCertificateId & - WithEUCovidCertificateHeaderData & { - kind: "valid"; - qrCode: QRCode; - markdownInfo?: string; - markdownDetails?: string; - }; - -export type RevokedCertificate = WithEUCovidCertificateId & - WithEUCovidCertificateHeaderData & { - kind: "revoked"; - markdownInfo?: string; - revokedOn?: Date; - }; - -export type ExpiredCertificate = WithEUCovidCertificateId & - WithEUCovidCertificateHeaderData & { - kind: "expired"; - markdownInfo?: string; - }; - -/** - * This type represents the EU Covid Certificate with the different states & data - */ -export type EUCovidCertificate = - | ValidCertificate - | RevokedCertificate - | ExpiredCertificate; diff --git a/ts/features/euCovidCert/types/EUCovidCertificateResponse.ts b/ts/features/euCovidCert/types/EUCovidCertificateResponse.ts deleted file mode 100644 index 4ac47088fad..00000000000 --- a/ts/features/euCovidCert/types/EUCovidCertificateResponse.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { - EUCovidCertificate, - EUCovidCertificateAuthCode -} from "./EUCovidCertificate"; - -export type EUCovidCertificateResponseSuccess = { - kind: "success"; - value: EUCovidCertificate; -}; - -/** - * The required certificated is not found (403) - */ -type EUCovidCertificateResponseNotFound = { - kind: "notFound"; -}; - -/** - * The required certificate have a wrong format (400) - */ -type EUCovidCertificateResponseWrongFormat = { - kind: "wrongFormat"; -}; - -/** - * The EU Covid certificate service is not operational (410) - */ -type EUCovidCertificateResponseNotOperational = { - kind: "notOperational"; -}; - -/** - * The EU Covid certificate service is not operational (504) - */ -type EUCovidCertificateResponseTemporarilyNotAvailable = { - kind: "temporarilyNotAvailable"; -}; - -export type EUCovidCertificateResponseFailure = - | EUCovidCertificateResponseNotFound - | EUCovidCertificateResponseWrongFormat - | EUCovidCertificateResponseNotOperational - | EUCovidCertificateResponseTemporarilyNotAvailable; - -/** - * Bind the response with the initial authCode - */ -export type WithEUCovidCertAuthCode = T & { - authCode: EUCovidCertificateAuthCode; -}; - -/** - * This type represents all the possible remote responses - */ -export type EUCovidCertificateResponse = WithEUCovidCertAuthCode< - EUCovidCertificateResponseSuccess | EUCovidCertificateResponseFailure ->; - -export const isEuCovidCertificateSuccessResponse = ( - r: EUCovidCertificateResponse -): r is WithEUCovidCertAuthCode => - r.kind === "success"; diff --git a/ts/features/euCovidCert/types/__mock__/EUCovidCertificate.mock.ts b/ts/features/euCovidCert/types/__mock__/EUCovidCertificate.mock.ts deleted file mode 100644 index a3210340311..00000000000 --- a/ts/features/euCovidCert/types/__mock__/EUCovidCertificate.mock.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { - EUCovidCertificateId, - RevokedCertificate, - ValidCertificate, - ExpiredCertificate -} from "../EUCovidCertificate"; - -const headerData = { - title: "title", - subTitle: "sub title", - logoUrl: "logoUrl" -}; - -export const expiredCertificate: ExpiredCertificate = { - markdownInfo: "Markdown info", - kind: "expired", - headerData -}; - -export const revokedCertificate: RevokedCertificate = { - id: "id" as EUCovidCertificateId, - kind: "revoked", - revokedOn: new Date(), - markdownInfo: "Markdown info", - headerData -}; - -export const baseValidCertificate: ValidCertificate = { - id: "id" as EUCovidCertificateId, - kind: "valid", - qrCode: { - mimeType: "image/png", - content: - "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" - }, - headerData -}; - -export const completeValidCertificate: ValidCertificate = { - ...baseValidCertificate, - markdownDetails: "markdownDetails", - markdownInfo: "markdownPreview" -}; - -export const validCertificateWithoutPreview: ValidCertificate = { - ...baseValidCertificate, - markdownDetails: "markdownDetails" -}; - -export const validCertificateWithoutDetails: ValidCertificate = { - ...baseValidCertificate, - markdownInfo: "markdownPreview" -}; diff --git a/ts/features/euCovidCert/types/__mock__/EUCovidCertificateResponse.mock.ts b/ts/features/euCovidCert/types/__mock__/EUCovidCertificateResponse.mock.ts deleted file mode 100644 index 00abf88b6a4..00000000000 --- a/ts/features/euCovidCert/types/__mock__/EUCovidCertificateResponse.mock.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { EUCovidCertificateResponseFailure } from "../EUCovidCertificateResponse"; - -export const euCertificateNotFound: EUCovidCertificateResponseFailure = { - kind: "notFound" -}; - -export const euCertificateNotOperational: EUCovidCertificateResponseFailure = { - kind: "notOperational" -}; - -export const euCertificateTemporarilyNotAvailable: EUCovidCertificateResponseFailure = - { - kind: "temporarilyNotAvailable" - }; - -export const euCertificateWrongFormat: EUCovidCertificateResponseFailure = { - kind: "wrongFormat" -}; diff --git a/ts/features/euCovidCert/utils/__test__/screenshot.test.ts b/ts/features/euCovidCert/utils/__test__/screenshot.test.ts deleted file mode 100644 index 70122150b4e..00000000000 --- a/ts/features/euCovidCert/utils/__test__/screenshot.test.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { right } from "fp-ts/lib/TaskEither"; -import * as T from "fp-ts/lib/Task"; -import { captureScreenshot, screenshotOptions } from "../screenshot"; -import { saveImageToGallery } from "../../../../utils/share"; -import I18n from "../../../../i18n"; - -const temporaryDirectory = "/tmp"; -const defaultScreenshotFilename = "screenshot"; -const defaultScreenshotExtension = "png"; - -jest.mock("react-native-i18n", () => ({ - t: jest.fn(key => key) -})); - -jest.mock("react-native-view-shot", () => ({ - captureRef: jest.fn(() => - Promise.resolve( - `${defaultScreenshotFilename}.${defaultScreenshotExtension}` - ) - ) -})); - -jest.mock("react-native-fs", () => ({ - TemporaryDirectoryPath: temporaryDirectory, - exists: jest.fn(_ => Promise.resolve(true)), - unlink: jest.fn(_ => Promise.resolve()), - moveFile: jest.fn(_ => Promise.resolve()) -})); - -// the resolved value returned by saveImageToGallery doesn't matter for the testing purpose -const mockSave = right(T.of(() => Promise.resolve(""))); -jest.mock("../../../../utils/share", () => ({ - saveImageToGallery: jest.fn(_ => mockSave) -})); - -describe("EuCovidCertificate screenshot", () => { - describe("given filename and album", () => { - const givenFilename = "Covid 19 Green Pass"; - const givenAlbum = "IO"; - const options = { - ...screenshotOptions, - filename: givenFilename, - album: givenAlbum - }; - it("saves the certificate in the given album with the given filename", done => { - captureScreenshot(1, options, { - onSuccess: () => { - expect(saveImageToGallery).toHaveBeenCalledWith( - `${temporaryDirectory}/${givenFilename}.${defaultScreenshotExtension}`, - givenAlbum - ); - done(); - } - }); - }); - }); - - describe("given default screenshotOptions", () => { - const options = screenshotOptions; - it("filename is returned from locales", () => { - expect(options.filename).toEqual( - I18n.t("features.euCovidCertificate.common.title") - ); - }); - }); -}); diff --git a/ts/features/euCovidCert/utils/screenshot.ts b/ts/features/euCovidCert/utils/screenshot.ts deleted file mode 100644 index ad847d7df75..00000000000 --- a/ts/features/euCovidCert/utils/screenshot.ts +++ /dev/null @@ -1,94 +0,0 @@ -import * as path from "path"; -import * as E from "fp-ts/lib/Either"; -import { ReactInstance, RefObject } from "react"; -import { Dimensions } from "react-native"; -import RNFS from "react-native-fs"; -import { CaptureOptions, captureRef } from "react-native-view-shot"; -import I18n from "../../../i18n"; -import { isIos } from "../../../utils/platform"; -import { saveImageToGallery } from "../../../utils/share"; - -type CaptureScreenshotEvents = { - onSuccess?: () => void; // invoked on success - onError?: () => void; // invoked on error - onEnd?: () => void; // always invoked onSuccess/onError - onNoPermissions?: () => void; // invoked in no given required permission -}; - -export type ScreenshotOptions = CaptureOptions & { - filename: string; - album?: string; -}; - -export const screenshotOptions: ScreenshotOptions = { - width: Dimensions.get("window").width, - format: "png", - filename: I18n.t("features.euCovidCertificate.common.title"), - album: isIos ? I18n.t("features.euCovidCertificate.save.album") : undefined -}; - -/** - * utility to save a screenshot as image in the device camera roll - * @param viewRef the view you want to export as image - * @param options screenshot options - * @param onEvent invoked events - */ -export const captureScreenshot = ( - viewRef: number | ReactInstance | RefObject, - options?: ScreenshotOptions, - onEvent?: CaptureScreenshotEvents -) => - void captureRef(viewRef, options) - .then(screenshotUri => { - const imagePath = savePath(screenshotUri, options); - void rename(screenshotUri, imagePath) - .then(destinationPath => - saveImageToGallery(destinationPath, options?.album)() - ) - .then( - E.fold( - () => onEvent?.onNoPermissions?.(), - () => onEvent?.onSuccess?.() - ) - ) - .catch(onEvent?.onError); - }) - .catch(onEvent?.onError) - .finally(onEvent?.onEnd); - -/** - * Build the save path for the screenshot using the filename - * specified in the given options. If no options are provided - * the path returned is the same of the source. - * @param screenshotUri the path of the taken screenshot - * @param options screenshot options - * @return a save path for the screenshot with the specified name - * (if no options are provided it returns the original path) - */ -const savePath = (screenshotUri: string, options?: ScreenshotOptions): string => - options - ? path.join( - RNFS.TemporaryDirectoryPath, - `${options.filename}${path.extname(screenshotUri)}` - ) - : screenshotUri; - -/** - * Rename file source to destination, overwriting destination - * if it already exists. - * @param source the path of the file to rename - * @param destination the destination path - * @return a Promise with the path of the renamed image - */ -const rename = (source: string, destination: string): Promise => { - if (source === destination) { - return Promise.resolve(source); - } - - // in iOS the move operation will fail if destination already exists, - // so we need to delete it first - return RNFS.exists(destination) - .then(exists => (exists ? RNFS.unlink(destination) : Promise.resolve())) - .then(_ => RNFS.moveFile(source, destination)) - .then(_ => destination); -}; diff --git a/ts/features/messages/navigation/MessagesNavigator.tsx b/ts/features/messages/navigation/MessagesNavigator.tsx index 4c52b674995..e2db78dc22c 100644 --- a/ts/features/messages/navigation/MessagesNavigator.tsx +++ b/ts/features/messages/navigation/MessagesNavigator.tsx @@ -1,7 +1,5 @@ import React from "react"; import { createStackNavigator } from "@react-navigation/stack"; -import { EUCovidCertStackNavigator } from "../../euCovidCert/navigation/navigator"; -import EUCOVIDCERT_ROUTES from "../../euCovidCert/navigation/routes"; import { MessageDetailsScreen } from "../screens/MessageDetailsScreen"; import { MessageCalendarScreen } from "../screens/MessageCalendarScreen"; import { MessageRouterScreen } from "../screens/MessageRouterScreen"; @@ -10,6 +8,7 @@ import PN_ROUTES from "../../pn/navigation/routes"; import { useIOSelector } from "../../../store/hooks"; import { isPnEnabledSelector } from "../../../store/reducers/backendStatus/remoteConfig"; import { MessageAttachmentScreen } from "../screens/MessageAttachmentScreen"; +import { MessageGreenPassScreen } from "../screens/MessageGreenPassScreen"; import { MessagesParamsList } from "./params"; import { MESSAGES_ROUTES } from "./routes"; @@ -43,11 +42,10 @@ export const MessagesStackNavigator = () => { /> diff --git a/ts/features/messages/navigation/params.ts b/ts/features/messages/navigation/params.ts index 209bc4eff36..71a89885445 100644 --- a/ts/features/messages/navigation/params.ts +++ b/ts/features/messages/navigation/params.ts @@ -1,9 +1,7 @@ import { NavigatorScreenParams } from "@react-navigation/native"; -import EUCOVIDCERT_ROUTES from "../../euCovidCert/navigation/routes"; import PN_ROUTES from "../../pn/navigation/routes"; import { MessageRouterScreenRouteParams } from "../screens/MessageRouterScreen"; import { MessageDetailsScreenRouteParams } from "../screens/MessageDetailsScreen"; -import { EUCovidCertParamsList } from "../../euCovidCert/navigation/params"; import { PnParamsList } from "../../pn/navigation/params"; import { MessageAttachmentScreenRouteParams } from "../screens/MessageAttachmentScreen"; import { MessageCalendarScreenRouteParams } from "../screens/MessageCalendarScreen"; @@ -14,6 +12,6 @@ export type MessagesParamsList = { [MESSAGES_ROUTES.MESSAGE_DETAIL]: MessageDetailsScreenRouteParams; [MESSAGES_ROUTES.MESSAGE_DETAIL_ATTACHMENT]: MessageAttachmentScreenRouteParams; [MESSAGES_ROUTES.MESSAGE_DETAIL_CALENDAR]: MessageCalendarScreenRouteParams; - [EUCOVIDCERT_ROUTES.MAIN]: NavigatorScreenParams; + [MESSAGES_ROUTES.MESSAGE_GREEN_PASS]: undefined; [PN_ROUTES.MAIN]: NavigatorScreenParams; }; diff --git a/ts/features/messages/navigation/routes.ts b/ts/features/messages/navigation/routes.ts index c60f4b3724b..4645b695616 100644 --- a/ts/features/messages/navigation/routes.ts +++ b/ts/features/messages/navigation/routes.ts @@ -5,5 +5,6 @@ export const MESSAGES_ROUTES = { MESSAGE_ROUTER: "MESSAGE_ROUTER", MESSAGE_DETAIL: "MESSAGE_DETAIL", MESSAGE_DETAIL_ATTACHMENT: "MESSAGE_DETAIL_ATTACHMENT", - MESSAGE_DETAIL_CALENDAR: "MESSAGE_DETAIL_CALENDAR" + MESSAGE_DETAIL_CALENDAR: "MESSAGE_DETAIL_CALENDAR", + MESSAGE_GREEN_PASS: "MESSAGE_GREEN_PASS" } as const; diff --git a/ts/features/messages/saga/__test__/handleLoadMessageData.test.ts b/ts/features/messages/saga/__test__/handleLoadMessageData.test.ts index 2bdf322fb13..3c002a6539f 100644 --- a/ts/features/messages/saga/__test__/handleLoadMessageData.test.ts +++ b/ts/features/messages/saga/__test__/handleLoadMessageData.test.ts @@ -26,11 +26,6 @@ import { ServicePublic } from "../../../../../definitions/backend/ServicePublic" import { trackMessageDataLoadFailure } from "../../analytics"; import { MessageGetStatusFailurePhaseType } from "../../store/reducers/messageGetStatus"; -jest.mock("../../../../config.ts", () => ({ - ...jest.requireActual("../../../../config.ts"), - euCovidCertificateEnabled: true -})); - describe("getPaginatedMessage", () => { it("when no paginated message is in store, it should dispatch a loadMessageById.request and retrieve its result from the store if it succeeds", () => { const messageId = "01HGP8EMP365Y7ANBNK8AJ87WD" as UIMessageId; @@ -403,9 +398,9 @@ describe("dispatchSuccessAction", () => { const expectedOutput = { containsAttachments: true, containsPayment: undefined, - euCovidCerficateAuthCode: undefined, firstTimeOpening: !isRead, hasRemoteContent: true, + isLegacyGreenPass: false, isPNMessage: true, messageId, organizationName, @@ -451,9 +446,9 @@ describe("dispatchSuccessAction", () => { const expectedOutput = { containsAttachments: true, containsPayment: false, - euCovidCerficateAuthCode: undefined, firstTimeOpening: !isRead, hasRemoteContent: true, + isLegacyGreenPass: false, isPNMessage: false, messageId, organizationName, @@ -497,9 +492,9 @@ describe("dispatchSuccessAction", () => { const expectedOutput = { containsAttachments: false, containsPayment: false, - euCovidCerficateAuthCode: undefined, firstTimeOpening: !isRead, hasRemoteContent: true, + isLegacyGreenPass: false, isPNMessage: false, messageId, organizationName, @@ -540,9 +535,9 @@ describe("dispatchSuccessAction", () => { const expectedOutput = { containsAttachments: false, containsPayment: false, - euCovidCerficateAuthCode: undefined, firstTimeOpening: !isRead, hasRemoteContent: false, + isLegacyGreenPass: false, isPNMessage: false, messageId, organizationName, @@ -583,9 +578,9 @@ describe("dispatchSuccessAction", () => { const expectedOutput = { containsAttachments: false, containsPayment: true, - euCovidCerficateAuthCode: undefined, firstTimeOpening: !isRead, hasRemoteContent: false, + isLegacyGreenPass: false, isPNMessage: false, messageId, organizationName, @@ -606,7 +601,7 @@ describe("dispatchSuccessAction", () => { .next() .isDone(); }); - it("should properly report a EU Covid message", () => { + it("should properly report a legacy EU Covid message", () => { const messageId = "01HGP8EMP365Y7ANBNK8AJ87WD" as UIMessageId; const serviceId = "01J5WS3X839BXX6R1CMM51AB8R" as ServiceId; const serviceName = "serName"; @@ -629,9 +624,9 @@ describe("dispatchSuccessAction", () => { const expectedOutput = { containsAttachments: false, containsPayment: false, - euCovidCerficateAuthCode: authCode, firstTimeOpening: !isRead, hasRemoteContent: false, + isLegacyGreenPass: !!authCode, isPNMessage: false, messageId, organizationName, diff --git a/ts/features/messages/saga/handleLoadMessageData.ts b/ts/features/messages/saga/handleLoadMessageData.ts index 9e90e377df9..ef0e6bfdad0 100644 --- a/ts/features/messages/saga/handleLoadMessageData.ts +++ b/ts/features/messages/saga/handleLoadMessageData.ts @@ -24,7 +24,6 @@ import { messageDetailsByIdSelector } from "../store/reducers/detailsById"; import { thirdPartyFromIdSelector } from "../store/reducers/thirdPartyById"; import { isLoadingOrUpdatingInbox } from "../store/reducers/allPaginated"; import { TagEnum } from "../../../../definitions/backend/MessageCategoryPN"; -import { euCovidCertificateEnabled } from "../../../config"; import { isPnEnabledSelector } from "../../../store/reducers/backendStatus/remoteConfig"; import { trackPNPushOpened } from "../../pn/analytics"; import { isTestEnv } from "../../../utils/environment"; @@ -319,11 +318,9 @@ function* dispatchSuccessAction( getMessageDataAction.success({ containsAttachments: attachmentCount > 0, containsPayment, - euCovidCerficateAuthCode: euCovidCertificateEnabled - ? messageDetails.euCovidCertificate?.authCode - : undefined, firstTimeOpening: !paginatedMessage.isRead, hasRemoteContent: !!thirdPartyMessage, + isLegacyGreenPass: !!messageDetails.euCovidCertificate?.authCode, isPNMessage: isPnEnabled && isPNMessageCategory, messageId: paginatedMessage.id, organizationFiscalCode: paginatedMessage.organizationFiscalCode, diff --git a/ts/features/messages/screens/MessageGreenPassScreen.tsx b/ts/features/messages/screens/MessageGreenPassScreen.tsx new file mode 100644 index 00000000000..2b30554bd1d --- /dev/null +++ b/ts/features/messages/screens/MessageGreenPassScreen.tsx @@ -0,0 +1,27 @@ +import React from "react"; +import { useIONavigation } from "../../../navigation/params/AppParamsList"; +import { useHeaderSecondLevel } from "../../../hooks/useHeaderSecondLevel"; +import { OperationResultScreenContent } from "../../../components/screens/OperationResultScreenContent"; +import I18n from "../../../i18n"; + +export const MessageGreenPassScreen = () => { + const navigation = useIONavigation(); + + useHeaderSecondLevel({ + title: "", + supportRequest: true + }); + + return ( + + ); +}; diff --git a/ts/features/messages/screens/MessageRouterScreen.tsx b/ts/features/messages/screens/MessageRouterScreen.tsx index 73e5131a6fa..a2037cf1b4e 100644 --- a/ts/features/messages/screens/MessageRouterScreen.tsx +++ b/ts/features/messages/screens/MessageRouterScreen.tsx @@ -23,7 +23,6 @@ import { getMessageDataAction, SuccessGetMessageDataActionType } from "../store/actions"; -import EUCOVIDCERT_ROUTES from "../../euCovidCert/navigation/routes"; import PN_ROUTES from "../../pn/navigation/routes"; import { MESSAGES_ROUTES } from "../navigation/routes"; import { useHeaderSecondLevel } from "../../../hooks/useHeaderSecondLevel"; @@ -93,18 +92,9 @@ export const MessageRouterScreen = ( fromPushNotification ); - if (data.euCovidCerficateAuthCode) { + if (data.isLegacyGreenPass) { navigation.dispatch( - StackActions.replace(MESSAGES_ROUTES.MESSAGES_NAVIGATOR, { - screen: EUCOVIDCERT_ROUTES.MAIN, - params: { - screen: EUCOVIDCERT_ROUTES.CERTIFICATE, - params: { - authCode: data.euCovidCerficateAuthCode, - messageId: data.messageId - } - } - }) + StackActions.replace(MESSAGES_ROUTES.MESSAGE_GREEN_PASS) ); } else if (data.isPNMessage) { navigation.dispatch( diff --git a/ts/features/messages/screens/__tests__/MessageGreenPassScreen.test.tsx b/ts/features/messages/screens/__tests__/MessageGreenPassScreen.test.tsx new file mode 100644 index 00000000000..90fffd03806 --- /dev/null +++ b/ts/features/messages/screens/__tests__/MessageGreenPassScreen.test.tsx @@ -0,0 +1,68 @@ +import { createStore } from "redux"; +import { fireEvent } from "@testing-library/react-native"; +import { applicationChangeState } from "../../../../store/actions/application"; +import { preferencesDesignSystemSetEnabled } from "../../../../store/actions/persistedPreferences"; +import { appReducer } from "../../../../store/reducers"; +import { renderScreenWithNavigationStoreContext } from "../../../../utils/testWrapper"; +import { MessageGreenPassScreen } from "../MessageGreenPassScreen"; +import { MESSAGES_ROUTES } from "../../navigation/routes"; +import * as hookSecondLevel from "../../../../hooks/useHeaderSecondLevel"; + +const mockGoBack = jest.fn(); +jest.mock("@react-navigation/native", () => ({ + ...jest.requireActual( + "@react-navigation/native" + ), + useNavigation: () => ({ + goBack: mockGoBack, + setOptions: jest.fn() + }) +})); + +describe("MessageGreenPassScreen", () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it("Should match snapshost", () => { + const messageGreenPassScreen = renderScreen(); + expect(messageGreenPassScreen.toJSON()).toMatchSnapshot(); + }); + it("Should call 'useHeaderSecondLevel' with empty title and enabled support request", () => { + const mockUseHeaderSecondLevel = jest + .spyOn(hookSecondLevel, "useHeaderSecondLevel") + .mockImplementation(_ => undefined); + renderScreen(); + expect(mockUseHeaderSecondLevel.mock.calls.length).toBe(1); + expect(mockUseHeaderSecondLevel.mock.calls[0].length).toBe(1); + expect(mockUseHeaderSecondLevel.mock.calls[0][0]).toEqual({ + title: "", + supportRequest: true + }); + }); + it("should trigger 'navigation.goBack' upon primary button action pressing", () => { + jest + .spyOn(hookSecondLevel, "useHeaderSecondLevel") + .mockImplementation(_ => undefined); + const messageGreenPassScreen = renderScreen(); + const primaryActionButton = + messageGreenPassScreen.getByTestId("green-pass-button"); + fireEvent(primaryActionButton, "onPress"); + expect(mockGoBack.mock.calls.length).toBe(1); + }); +}); + +const renderScreen = () => { + const initialState = appReducer(undefined, applicationChangeState("active")); + const designSystemState = appReducer( + initialState, + preferencesDesignSystemSetEnabled({ isDesignSystemEnabled: true }) + ); + const store = createStore(appReducer, designSystemState as any); + + return renderScreenWithNavigationStoreContext( + MessageGreenPassScreen, + MESSAGES_ROUTES.MESSAGE_GREEN_PASS, + {}, + store + ); +}; diff --git a/ts/features/messages/screens/__tests__/MessageRouterScreen.test.tsx b/ts/features/messages/screens/__tests__/MessageRouterScreen.test.tsx index d19271a222f..df17eb79be0 100644 --- a/ts/features/messages/screens/__tests__/MessageRouterScreen.test.tsx +++ b/ts/features/messages/screens/__tests__/MessageRouterScreen.test.tsx @@ -154,11 +154,11 @@ const globalStateFromStatus = ( organizationName: "orgName", organizationFiscalCode: "orgFisCod", firstTimeOpening: true, + isLegacyGreenPass: false, isPNMessage: false, containsAttachments: false, containsPayment: undefined, - hasRemoteContent: false, - euCovidCerficateAuthCode: undefined + hasRemoteContent: false }) ); } diff --git a/ts/features/messages/screens/__tests__/__snapshots__/MessageGreenPassScreen.test.tsx.snap b/ts/features/messages/screens/__tests__/__snapshots__/MessageGreenPassScreen.test.tsx.snap new file mode 100644 index 00000000000..34e37fc62fa --- /dev/null +++ b/ts/features/messages/screens/__tests__/__snapshots__/MessageGreenPassScreen.test.tsx.snap @@ -0,0 +1,668 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`MessageGreenPassScreen Should match snapshost 1`] = ` + + + + + + + + + + + + + + + MESSAGE_GREEN_PASS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Questo servizio non è più attivo su IO + + + + + + + + + Indietro + + + + + + + + + + + + + + + + + + + + +`; diff --git a/ts/features/messages/store/actions/index.ts b/ts/features/messages/store/actions/index.ts index 5ad1adf4219..29f35a1d559 100644 --- a/ts/features/messages/store/actions/index.ts +++ b/ts/features/messages/store/actions/index.ts @@ -39,9 +39,9 @@ export type RequestGetMessageDataActionType = { export type SuccessGetMessageDataActionType = { containsAttachments: boolean; containsPayment?: boolean; - euCovidCerficateAuthCode?: string; firstTimeOpening: boolean; hasRemoteContent: boolean; + isLegacyGreenPass?: boolean; isPNMessage: boolean; messageId: UIMessageId; organizationFiscalCode: string; diff --git a/ts/features/payments/transaction/store/saga/index.ts b/ts/features/payments/transaction/store/saga/index.ts index 746c0c40d57..b9c86003881 100644 --- a/ts/features/payments/transaction/store/saga/index.ts +++ b/ts/features/payments/transaction/store/saga/index.ts @@ -14,11 +14,9 @@ import { isProfileEmailValidatedSelector } from "../../../../../store/reducers/p import { fetchPsp, fetchTransactionRequest, - fetchTransactionsFailure, fetchTransactionsRequest, fetchTransactionsRequestWithExpBackoff } from "../actions/legacyTransactionsActions"; -import { waitBackoffError } from "../../../../../utils/backoffError"; import { fetchTransactionsRequestHandler } from "./fetchTransactionsRequestHandler"; import { fetchTransactionRequestHandler } from "./fetchTransactionRequestHandler"; import { fetchPspRequestHandler } from "./fetchPspRequestHandler"; @@ -78,7 +76,6 @@ export function* watchLegacyTransactionSaga( function* ( action: ActionType ) { - yield* call(waitBackoffError, fetchTransactionsFailure); yield* put(fetchTransactionsRequest(action.payload)); } ); diff --git a/ts/sagas/startup.ts b/ts/sagas/startup.ts index 3dd3f6b545f..373a41e5c00 100644 --- a/ts/sagas/startup.ts +++ b/ts/sagas/startup.ts @@ -23,14 +23,12 @@ import { BackendClient } from "../api/backend"; import { apiUrlPrefix, cdcEnabled, - euCovidCertificateEnabled, pagoPaApiUrlPrefix, pagoPaApiUrlPrefixTest, zendeskEnabled } from "../config"; import { watchBonusCdcSaga } from "../features/bonus/cdc/saga"; import { watchBonusCgnSaga } from "../features/bonus/cgn/saga"; -import { watchEUCovidCertificateSaga } from "../features/euCovidCert/saga"; import { setSecurityAdviceReadyToShow } from "../features/fastLogin/store/actions/securityAdviceActions"; import { refreshSessionToken } from "../features/fastLogin/store/actions/tokenRefreshActions"; import { @@ -567,11 +565,6 @@ export function* initializeApplicationSaga( // Start watching for cgn actions yield* fork(watchBonusCgnSaga, sessionToken); - if (euCovidCertificateEnabled) { - // Start watching for EU Covid Certificate actions - yield* fork(watchEUCovidCertificateSaga, sessionToken); - } - const pnEnabled: ReturnType = yield* select( isPnEnabledSelector ); diff --git a/ts/screens/onboarding/ServicePreferenceCompleteScreen.tsx b/ts/screens/onboarding/ServicePreferenceCompleteScreen.tsx index a5432c9e6b5..2a47c4226a2 100644 --- a/ts/screens/onboarding/ServicePreferenceCompleteScreen.tsx +++ b/ts/screens/onboarding/ServicePreferenceCompleteScreen.tsx @@ -1,11 +1,6 @@ import * as React from "react"; -import { SafeAreaView } from "react-native"; import { connect } from "react-redux"; -import paymentCompleted from "../../../img/pictograms/payment-completed.png"; -import { FooterStackButton } from "../../components/buttons/FooterStackButtons"; -import { IOStyles } from "../../components/core/variables/IOStyles"; -import { InfoScreenComponent } from "../../components/infoScreen/InfoScreenComponent"; -import { renderInfoRasterImage } from "../../components/infoScreen/imageRendering"; +import { OperationResultScreenContent } from "../../components/screens/OperationResultScreenContent"; import I18n from "../../i18n"; import { servicesOptinCompleted } from "../../store/actions/onboarding"; import { Dispatch } from "../../store/actions/types"; @@ -19,20 +14,15 @@ type Props = ReturnType & * and it has been correctly activated */ const ServicePreferenceCompleteScreen = (props: Props): React.ReactElement => ( - - - - + ); const mapStateToProps = (_: GlobalState) => ({}); diff --git a/ts/store/actions/types.ts b/ts/store/actions/types.ts index 740d1951931..39274c8f6c5 100644 --- a/ts/store/actions/types.ts +++ b/ts/store/actions/types.ts @@ -9,7 +9,6 @@ import { } from "redux"; import { VersionInfoActions } from "../../common/versionInfo/store/actions/versionInfo"; import { BonusActions } from "../../features/bonus/common/store/actions"; -import { EuCovidCertActions } from "../../features/euCovidCert/store/actions"; import { FastLoginActions } from "../../features/fastLogin/store/actions"; import { FciActions } from "../../features/fci/store/actions"; import { IdPayActions } from "../../features/idpay/common/store/actions"; @@ -89,7 +88,6 @@ export type Action = | ProfileEmailValidationAction | BonusActions | CrossSessionsActions - | EuCovidCertActions | ZendeskSupportActions | PnActions | StartupActions diff --git a/ts/store/middlewares/analytics.ts b/ts/store/middlewares/analytics.ts index eb6d35dfd9e..451bc3a0391 100644 --- a/ts/store/middlewares/analytics.ts +++ b/ts/store/middlewares/analytics.ts @@ -5,7 +5,6 @@ import { getType } from "typesafe-actions"; import trackCdc from "../../features/bonus/cdc/analytics/index"; import trackCgnAction from "../../features/bonus/cgn/analytics/index"; import { loadAvailableBonuses } from "../../features/bonus/common/store/actions/availableBonusesTypes"; -import trackEuCovidCertificateActions from "../../features/euCovidCert/analytics/index"; import trackFciAction from "../../features/fci/analytics"; import { fciEnvironmentSelector } from "../../features/fci/store/reducers/fciEnvironment"; import trackZendesk from "../../features/zendesk/analytics/index"; @@ -191,7 +190,6 @@ export const actionTracking = void trackCgnAction(mixpanel)(action); void trackContentAction(mixpanel)(action); void trackServicesAction(mixpanel)(action); - void trackEuCovidCertificateActions(mixpanel)(action); void trackZendesk(mixpanel)(action); void trackCdc(mixpanel)(action); diff --git a/ts/store/middlewares/navigation.ts b/ts/store/middlewares/navigation.ts index f3f9266a9ad..67a7c6610c8 100644 --- a/ts/store/middlewares/navigation.ts +++ b/ts/store/middlewares/navigation.ts @@ -1,17 +1,10 @@ import { mixpanelTrack } from "../../mixpanel"; -import { noAnalyticsRoutes } from "../../utils/analytics"; export const trackScreen = ( previousScreen: string | undefined, currentScreen: string ) => { if (previousScreen !== currentScreen) { - // track only those events that are not included in the blacklist - if (!noAnalyticsRoutes.has(currentScreen)) { - void mixpanelTrack("SCREEN_CHANGE_V2", { - SCREEN_NAME: currentScreen - }); - } // send to 10-days retention project void mixpanelTrack("SCREEN_CHANGE", { SCREEN_NAME: currentScreen diff --git a/ts/store/reducers/__tests__/backoffError.test.ts b/ts/store/reducers/__tests__/backoffError.test.ts deleted file mode 100644 index 2e2e976f856..00000000000 --- a/ts/store/reducers/__tests__/backoffError.test.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { createStandardAction } from "typesafe-actions"; -import MockDate from "mockdate"; -import * as AR from "fp-ts/lib/Array"; -import { Action } from "../../actions/types"; -import { GlobalState } from "../types"; -import { appReducer } from "../index"; -import { applicationChangeState } from "../../actions/application"; -import { backOffWaitingTime } from "../backoffError"; -import * as backoffErrorConfig from "../backoffErrorConfig"; - -describe("backoffError reducer", () => { - it("should have a valid initial state", () => { - const now = new Date(); - MockDate.set(now); - const backoffConfig = { maxAttempts: 5, base: 2, mul: 1000 }; - // create an action that is monitored by the reducer - const failureActionType = "test123"; - const aFailureAction = createStandardAction(failureActionType)(); - const successActionType = "123test"; - const aSuccessAction = createStandardAction(successActionType)(); - - jest - .spyOn(backoffErrorConfig, "failureActionTypes") - .mockImplementation(() => [failureActionType]); - jest - .spyOn(backoffErrorConfig, "successActionTypes") - .mockImplementation(() => [successActionType]); - jest - .spyOn(backoffErrorConfig, "backoffConfig") - .mockImplementation(() => backoffConfig); - - // eslint-disable-next-line functional/no-let - let state: GlobalState = appReducer( - undefined, - applicationChangeState("active") - ) as GlobalState; - // check that attempts increase and wait time is computed as expected - AR.range(1, backoffConfig.maxAttempts + 1).forEach(attempts => { - state = appReducer( - state, - aFailureAction() as any as Action - ) as GlobalState; - expect(state.backoffError).toEqual({ - [failureActionType]: { - lastUpdate: now, - attempts: Math.min(attempts, backoffConfig.maxAttempts) - } - }); - expect(backOffWaitingTime(state)(aFailureAction)).toEqual( - Math.pow( - backoffConfig.base, - Math.min(attempts, backoffConfig.maxAttempts) - ) * backoffConfig.mul - ); - }); - // success action should empty the state - state = appReducer(state, aSuccessAction() as any as Action) as GlobalState; - expect(state.backoffError).toEqual({}); - }); -}); diff --git a/ts/store/reducers/backoffError.ts b/ts/store/reducers/backoffError.ts deleted file mode 100644 index d64a36fb844..00000000000 --- a/ts/store/reducers/backoffError.ts +++ /dev/null @@ -1,76 +0,0 @@ -import * as O from "fp-ts/lib/Option"; -import { Millisecond } from "@pagopa/ts-commons/lib/units"; -import { getType } from "typesafe-actions"; -import _ from "lodash"; -import * as AR from "fp-ts/lib/Array"; -import { pipe } from "fp-ts/lib/function"; -import { Action } from "../actions/types"; -import { computedProp } from "../../types/utils"; -import { GlobalState } from "./types"; -import { - FailureActions, - failureActionTypes, - successActionTypes, - backoffConfig -} from "./backoffErrorConfig"; - -export type BackoffErrorState = { - [key: string]: { - lastUpdate: Date; - attempts: number; - }; -}; - -const defaultState: BackoffErrorState = {}; - -const reducer = ( - state: BackoffErrorState = defaultState, - action: Action -): BackoffErrorState => { - const failure = failureActionTypes().find(a => a === action.type); - if (failure) { - return { - ...state, - ...computedProp(failure, { - lastUpdate: new Date(), - attempts: Math.min( - (state[failure]?.attempts ?? 0) + 1, - backoffConfig().maxAttempts - ) - }) - }; - } - const successIndex = successActionTypes().indexOf(action.type); - // the failure type is that one at the same index of success type - const keyToRemove = AR.lookup(successIndex, failureActionTypes()); - if (O.isSome(keyToRemove) && keyToRemove.value in state) { - // remove the previous record - return _.omit(state, keyToRemove.value); - } - return state; -}; - -// return the waiting time from a given failure action -export const backOffWaitingTime = - (state: GlobalState) => - (failure: FailureActions): Millisecond => - pipe( - state.backoffError[getType(failure)], - O.fromNullable, - O.fold( - () => 0 as Millisecond, - lastError => { - const wait = - Math.pow(backoffConfig().base, lastError.attempts) * - backoffConfig().mul; - // if the last attempt is older that wait -> no wait - return ( - new Date().getTime() - lastError.lastUpdate.getTime() < wait - ? wait - : 0 - ) as Millisecond; - } - ) - ); - -export default reducer; diff --git a/ts/store/reducers/backoffErrorConfig.ts b/ts/store/reducers/backoffErrorConfig.ts deleted file mode 100644 index 72ee58143f0..00000000000 --- a/ts/store/reducers/backoffErrorConfig.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { getType } from "typesafe-actions"; -import _ from "lodash"; -import { PayloadAC } from "typesafe-actions/dist/type-helpers"; -import { euCovidCertificateGet } from "../../features/euCovidCert/store/actions"; - -/** - * list of monitored actions - * each entry is a tuple of 2 - * 0 - the failure action that is considered to create/increment the backoff delay - * 1 - the success action that is considered to delete the previous backoff delay - */ -const monitoredActions: ReadonlyArray< - [failureAction: PayloadAC, successAction: PayloadAC] -> = [[euCovidCertificateGet.failure, euCovidCertificateGet.success]]; - -const failureActions = monitoredActions.map(ma => ma[0]); -const successActions = monitoredActions.map(ma => ma[1]); - -export const failureActionTypes = () => failureActions.map(getType); -export const successActionTypes = () => successActions.map(getType); -export type FailureActions = (typeof failureActions)[number]; - -export const backoffConfig = () => ({ - maxAttempts: 4, - base: 2, - mul: 1000 -}); diff --git a/ts/store/reducers/index.ts b/ts/store/reducers/index.ts index 30f418182b0..bbe16ce9a9b 100644 --- a/ts/store/reducers/index.ts +++ b/ts/store/reducers/index.ts @@ -41,7 +41,6 @@ import authenticationReducer, { AuthenticationState, INITIAL_STATE as authenticationInitialState } from "./authentication"; -import backoffErrorReducer from "./backoffError"; import cieReducer from "./cie"; import contentReducer, { initialContentState as contentInitialContentState @@ -126,7 +125,6 @@ export const appReducer: Reducer = combineReducers< // appState: appStateReducer, navigation: navigationReducer, - backoffError: backoffErrorReducer, versionInfo: versionInfoReducer, remoteConfig: remoteConfigReducer, statusMessages: statusMessagesReducer, diff --git a/ts/store/reducers/types.ts b/ts/store/reducers/types.ts index 75a89141c21..788ccd16e50 100644 --- a/ts/store/reducers/types.ts +++ b/ts/store/reducers/types.ts @@ -9,7 +9,6 @@ import { PersistedNotificationsState } from "../../features/pushNotifications/st import { AppState } from "./appState"; import { AssistanceToolsState } from "./assistanceTools"; import { PersistedAuthenticationState } from "./authentication"; -import { BackoffErrorState } from "./backoffError"; import { CieState } from "./cie"; import { ContentState } from "./content"; import { CrossSessionsState } from "./crossSessions"; @@ -41,7 +40,6 @@ export type GlobalState = Readonly<{ backendInfo: BackedInfoState; versionInfo: VersionInfoState; entities: PersistedEntitiesState; - backoffError: BackoffErrorState; notifications: PersistedNotificationsState; onboarding: OnboardingState; profile: ProfileState; diff --git a/ts/urls.ts b/ts/urls.ts index 739eee9d05a..0ae15f9bcd2 100644 --- a/ts/urls.ts +++ b/ts/urls.ts @@ -1,6 +1,3 @@ -// Eu Covid Certificate urls -export const euCovidCertificateUrl = "https://www.dgc.gov.it/"; - // IO urls export const ioSuppliersUrl = "https://io.italia.it/app-content/fornitori"; diff --git a/ts/utils/analytics.ts b/ts/utils/analytics.ts index 149a20747bd..531882f76f1 100644 --- a/ts/utils/analytics.ts +++ b/ts/utils/analytics.ts @@ -9,8 +9,6 @@ import { WebViewHttpErrorEvent } from "react-native-webview/lib/WebViewTypes"; import URLParse from "url-parse"; -import EUCOVIDCERT_ROUTES from "../features/euCovidCert/navigation/routes"; -import { euCovidCertificateEnabled } from "../config"; import { mixpanelTrack } from "../mixpanel"; import { clearKeychainError, @@ -19,16 +17,6 @@ import { setKeychainError } from "../store/storages/keychain"; -const blackListRoutes: ReadonlyArray = []; - -// the routes contained in this set won't be tracked in SCREEN_CHANGE_V2 event -export const noAnalyticsRoutes = new Set( - // eslint-disable-next-line sonarjs/no-empty-collection - blackListRoutes.concat( - euCovidCertificateEnabled ? Object.values(EUCOVIDCERT_ROUTES) : [] - ) -); - export type FlowType = | "firstOnboarding" | "onBoarding" diff --git a/ts/utils/backoffError.ts b/ts/utils/backoffError.ts deleted file mode 100644 index f843fcd4a92..00000000000 --- a/ts/utils/backoffError.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Millisecond } from "@pagopa/ts-commons/lib/units"; -import { call, delay, select } from "typed-redux-saga/macro"; -import { backOffWaitingTime } from "../store/reducers/backoffError"; -import { mixpanelTrack } from "../mixpanel"; -import { FailureActions } from "../store/reducers/backoffErrorConfig"; -import { ReduxSagaEffect } from "../types/utils"; - -/** - * return the backoff waiting time from the given failure action - * @param failure - */ -export function* getBackoffTime( - failure: FailureActions -): Generator< - ReduxSagaEffect, - Millisecond, - (failure: FailureActions) => Millisecond -> { - const computeDelay: ReturnType = yield* select( - backOffWaitingTime - ); - const delay = computeDelay(failure); - void mixpanelTrack("GET_BACKOFF_TIME", { - action: failure.toString(), - delay - }); - return delay; -} - -/** - * select and wait the backoff time from a given failure action - * @param failure - */ -export function* waitBackoffError(failure: FailureActions) { - const delayTime: Millisecond = yield* call(getBackoffTime, failure); - if (delayTime > 0) { - yield* delay(delayTime); - } -} diff --git a/ts/utils/image.ts b/ts/utils/image.ts index 955d6a816c1..62a0958a0b0 100644 --- a/ts/utils/image.ts +++ b/ts/utils/image.ts @@ -5,11 +5,6 @@ import * as T from "io-ts"; import * as E from "fp-ts/Either"; import { toAndroidCacheTimestamp } from "./dates"; -export const withBase64Uri = ( - imageBase64: string, - format: "png" | "jpg" = "png" -) => `data:image/${format};base64,${imageBase64}`; - /** * Adds a locale timestamp to the image URI to invalidate cache on the following day if the current platform is Android. * Useful to bypass React Native Image component aggressive cache on Android. diff --git a/ts/utils/permission.ts b/ts/utils/permission.ts index 5bdc4fda766..9f7efd946bb 100644 --- a/ts/utils/permission.ts +++ b/ts/utils/permission.ts @@ -78,23 +78,3 @@ export const requestMediaPermission = async () => { return false; } }; - -/** - * Wrapper function to request permission to save an image to the library - * @returns boolean that indicates wether the user has granted the permission or not - */ -export const requestSaveToGalleryPermission = async ( - rationale?: RNPermissions.Rationale -) => - Platform.select({ - android: requestIOPermission( - RNPermissions.PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE, - rationale - ), - // on iOS the permission is handled by adding NSPhotoLibraryAddUsageDescription and NSPhotoLibraryUsageDescription - // into the Info.plist file and the permission request is automatically handled by the system when using the - // Cameraroll.save method. Asking for the PHOTO_LIBRARY_ADD_ONLY permission results in an "unavailable" response - // from the react-native-permissions library (even if the library documentation declares that it is supported) so - // it cannot be used to determine the permission status. - default: Promise.resolve(true) - }); diff --git a/ts/utils/share.ts b/ts/utils/share.ts index d539a50c517..71e7175f325 100644 --- a/ts/utils/share.ts +++ b/ts/utils/share.ts @@ -1,10 +1,5 @@ -import { CameraRoll } from "@react-native-camera-roll/camera-roll"; import * as TE from "fp-ts/lib/TaskEither"; -import { pipe } from "fp-ts/lib/function"; -import { Platform } from "react-native"; import Share from "react-native-share"; -import I18n from "../i18n"; -import { requestSaveToGalleryPermission } from "./permission"; /** * share an url see https://react-native-share.github.io/react-native-share/docs/share-open#supported-options @@ -25,48 +20,3 @@ export const share = ( }), errorMsg => new Error(String(errorMsg)) ); - -/** - * Return true if the share is available - * sharing is disabled on Android versions older than 21 due to a bug causing crash (see https://www.pivotaltracker.com/n/projects/2048617/stories/174295714) - */ -export const isShareEnabled = () => - Platform.select({ - android: (Platform.Version as number) >= 21, - ios: true, - default: false - }); - -/** - * check if write external storage permission is granted, if yes try to save the given uri in the camera roll - * @param uri the image to save - * @param album an optional album where to save the image - */ -export const saveImageToGallery = ( - uri: string, - album?: string -): TE.TaskEither => { - const hasPermission = TE.tryCatch( - () => - requestSaveToGalleryPermission({ - title: I18n.t("permissionRationale.storage.title"), - message: I18n.t("permissionRationale.storage.message"), - buttonPositive: I18n.t("global.buttons.choose") - }), - errorMsg => new Error(String(errorMsg)) - ); - const saveImage = TE.tryCatch( - () => CameraRoll.save(uri, { type: "photo", album }), - errorMsg => new Error(String(errorMsg)) - ); - - return pipe( - hasPermission, - TE.chain(hasP => { - if (hasP) { - return saveImage; - } - return TE.left(Error("some error occurred")); - }) - ); -}; diff --git a/yarn.lock b/yarn.lock index 1d2cf5b4b24..1a98578cc1b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2351,11 +2351,6 @@ dependencies: merge-options "^3.0.4" -"@react-native-camera-roll/camera-roll@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@react-native-camera-roll/camera-roll/-/camera-roll-5.6.1.tgz#0812b39bf27fcc44863f490b6e7af7a1ba55f464" - integrity sha512-wr7E90Xoew4pwfS5tGYkx3d7e+pBubPPYMI2uHQIq9/6bNIItXADmgDf3ghbId/G/gdX4qH/tyjlyF1kAci/Rw== - "@react-native-clipboard/clipboard@^1.10.0": version "1.10.0" resolved "https://registry.yarnpkg.com/@react-native-clipboard/clipboard/-/clipboard-1.10.0.tgz#605e784ed5435059c9b5db52b2d112f9fd09c409" @@ -13851,11 +13846,6 @@ react-native-uuid@^2.0.1: resolved "https://registry.yarnpkg.com/react-native-uuid/-/react-native-uuid-2.0.2.tgz#3da192e342ef35ee95a7def676ab41c1256dfd66" integrity sha512-5ypj/hV58P+6VREdjkW0EudSibsH3WdqDERoHKnD9syFWjF+NfRWWrJb2sa3LIwI5zpzMvUiabs+DX40WHpEMw== -react-native-view-shot@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/react-native-view-shot/-/react-native-view-shot-3.1.2.tgz#8c8e84c67a4bc8b603e697dbbd59dbc9b4f84825" - integrity sha512-9u9fPtp6a52UMoZ/UCPrCjKZk8tnkI9To0Eh6yYnLKFEGkRZ7Chm6DqwDJbYJHeZrheCCopaD5oEOnRqhF4L2Q== - react-native-vision-camera@4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/react-native-vision-camera/-/react-native-vision-camera-4.3.1.tgz#f755107f259f71f51a619ccaaefc55bbe341b2c7"

f(2BwMc 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 - - - 34953C33-1854-4694-8427-EBFA6AD390EE - Created with sketchtool. - - - - - - \ No newline at end of file diff --git a/img/wallet/errors/payment-unknown-icon@2x.png b/img/wallet/errors/payment-unknown-icon@2x.png deleted file mode 100755 index e4cfc3c6ad629aa3637dc4e6ead7520c80477378..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16751 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 diff --git a/img/wallet/errors/payment-unknown-icon@3x.png b/img/wallet/errors/payment-unknown-icon@3x.png deleted file mode 100755 index bb444203e1fa352e404dda9882da22d2e7cdf7eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26578 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 Ze8tzdo%-?w)&Bt>83{%4YEh%0{{!UD1~LEu diff --git a/ios/Podfile.lock b/ios/Podfile.lock index befee524cbd..efb99414ef4 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -424,8 +424,6 @@ PODS: - React - react-native-blob-util (0.15.0): - React-Core - - react-native-cameraroll (5.6.1): - - React-Core - react-native-config (1.4.5): - react-native-config/App (= 1.4.5) - react-native-config/App (1.4.5): @@ -468,8 +466,6 @@ PODS: - React - react-native-splash-screen (3.2.0): - React - - react-native-view-shot (3.1.2): - - React - react-native-webview (13.10.3): - RCT-Folly (= 2021.07.22.00) - React-Core @@ -742,7 +738,6 @@ DEPENDENCIES: - React-logger (from `../node_modules/react-native/ReactCommon/logger`) - react-native-background-timer (from `../node_modules/react-native-background-timer`) - react-native-blob-util (from `../node_modules/react-native-blob-util`) - - "react-native-cameraroll (from `../node_modules/@react-native-camera-roll/camera-roll`)" - react-native-config (from `../node_modules/react-native-config`) - "react-native-cookies (from `../node_modules/@react-native-cookies/cookies`)" - react-native-document-picker (from `../node_modules/react-native-document-picker`) @@ -761,7 +756,6 @@ DEPENDENCIES: - "react-native-skia (from `../node_modules/@shopify/react-native-skia`)" - "react-native-slider (from `../node_modules/@react-native-community/slider`)" - react-native-splash-screen (from `../node_modules/react-native-splash-screen`) - - react-native-view-shot (from `../node_modules/react-native-view-shot`) - react-native-webview (from `../node_modules/react-native-webview`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) @@ -909,8 +903,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-background-timer" react-native-blob-util: :path: "../node_modules/react-native-blob-util" - react-native-cameraroll: - :path: "../node_modules/@react-native-camera-roll/camera-roll" react-native-config: :path: "../node_modules/react-native-config" react-native-cookies: @@ -947,8 +939,6 @@ EXTERNAL SOURCES: :path: "../node_modules/@react-native-community/slider" react-native-splash-screen: :path: "../node_modules/react-native-splash-screen" - react-native-view-shot: - :path: "../node_modules/react-native-view-shot" react-native-webview: :path: "../node_modules/react-native-webview" React-NativeModulesApple: @@ -1082,7 +1072,6 @@ SPEC CHECKSUMS: React-logger: 8da4802de77a0eb62512396ad6bb1769904c2f0e react-native-background-timer: 1b6e6b4e10f1b74c367a1fdc3c72b67c619b222b react-native-blob-util: a5d3561045ed98cfb2fb80cbbff600fae0e8edee - react-native-cameraroll: 2f08db1ecc9b73dbc01f89335d6d5179fac2894c react-native-config: 6502b1879f97ed5ac570a029961fc35ea606cd14 react-native-cookies: f54fcded06bb0cda05c11d86788020b43528a26c react-native-document-picker: 3599b238843369026201d2ef466df53f77ae0452 @@ -1101,7 +1090,6 @@ SPEC CHECKSUMS: react-native-skia: 7bfe9c816d6ce75bcda1101ca0d53e221e5598f9 react-native-slider: e99fc201cefe81270fc9d81714a7a0f5e566b168 react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865 - react-native-view-shot: 4475fde003fe8a210053d1f98fb9e06c1d834e1c react-native-webview: 9946090a1cd4add775cf91327f93bc910bf89286 React-NativeModulesApple: 3107f777453f953906d9ba9dc5f8cbd91a6ef913 React-perflogger: daabc494c6328efc1784a4b49b8b74fca305d11c diff --git a/jest-e2e.config.js b/jest-e2e.config.js index 6a2680c8221..1c68f9651d5 100644 --- a/jest-e2e.config.js +++ b/jest-e2e.config.js @@ -1,7 +1,7 @@ module.exports = { preset: "react-native", transformIgnorePatterns: [ - "node_modules/(?!(jest-)?@react-native|react-native|react-navigation|@react-navigation|react-navigation-redux-helpers|react-native-device-info|rn-placeholder|jsbarcode|@pagopa/react-native-cie|react-native-share|jail-monkey|@react-native-community/art|@react-native-community/push-notification-ios|@shopify/react-native-skia|lottie-react-native|@react-native-camera-roll/camera-roll|@codler|remark|unified|bail|is-plain-obj|trough|vfile|unist-util-stringify-position|mdast-util-from-markdown|mdast-util-to-string|micromark|parse-entities|character-entities|mdast-util-to-markdown|zwitch|longest-streak|@pagopa/io-react-native-zendesk|rn-qr-generator|mixpanel-react-native|@pagopa/io-app-design-system|@sentry/react-native)" + "node_modules/(?!(jest-)?@react-native|react-native|react-navigation|@react-navigation|react-navigation-redux-helpers|react-native-device-info|rn-placeholder|jsbarcode|@pagopa/react-native-cie|react-native-share|jail-monkey|@react-native-community/art|@react-native-community/push-notification-ios|@shopify/react-native-skia|lottie-react-native|@codler|remark|unified|bail|is-plain-obj|trough|vfile|unist-util-stringify-position|mdast-util-from-markdown|mdast-util-to-string|micromark|parse-entities|character-entities|mdast-util-to-markdown|zwitch|longest-streak|@pagopa/io-react-native-zendesk|rn-qr-generator|mixpanel-react-native|@pagopa/io-app-design-system|@sentry/react-native)" ], moduleNameMapper: { "\\.svg": "/ts/__mocks__/svgMock.js" diff --git a/jest.config.js b/jest.config.js index c5159278a31..79df8177e8f 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,7 +1,7 @@ module.exports = { preset: "react-native", transformIgnorePatterns: [ - "node_modules/(?!(jest-)?@react-native|react-native|react-navigation|@react-navigation|react-navigation-redux-helpers|react-native-device-info|rn-placeholder|jsbarcode|@pagopa/react-native-cie|react-native-share|jail-monkey|@react-native-community/art|@react-native-community/push-notification-ios|@shopify/react-native-skia|lottie-react-native|@react-native-camera-roll/camera-roll|@codler|remark|unified|bail|is-plain-obj|trough|vfile|unist-util-stringify-position|mdast-util-from-markdown|mdast-util-to-string|micromark|parse-entities|character-entities|mdast-util-to-markdown|zwitch|longest-streak|@pagopa/io-react-native-zendesk|rn-qr-generator|mixpanel-react-native|@pagopa/io-app-design-system|uuid|@sentry/react-native)" + "node_modules/(?!(jest-)?@react-native|react-native|react-navigation|@react-navigation|react-navigation-redux-helpers|react-native-device-info|rn-placeholder|jsbarcode|@pagopa/react-native-cie|react-native-share|jail-monkey|@react-native-community/art|@react-native-community/push-notification-ios|@shopify/react-native-skia|lottie-react-native|@codler|remark|unified|bail|is-plain-obj|trough|vfile|unist-util-stringify-position|mdast-util-from-markdown|mdast-util-to-string|micromark|parse-entities|character-entities|mdast-util-to-markdown|zwitch|longest-streak|@pagopa/io-react-native-zendesk|rn-qr-generator|mixpanel-react-native|@pagopa/io-app-design-system|uuid|@sentry/react-native)" ], moduleNameMapper: { "\\.svg": "/ts/__mocks__/svgMock.js" diff --git a/jest.config.no.timezone.js b/jest.config.no.timezone.js index 900b0886bd1..afd55c07774 100644 --- a/jest.config.no.timezone.js +++ b/jest.config.no.timezone.js @@ -1,7 +1,7 @@ module.exports = { preset: "react-native", transformIgnorePatterns: [ - "node_modules/(?!(jest-)?@react-native|react-native|react-navigation|@react-navigation|react-navigation-redux-helpers|react-native-device-info|rn-placeholder|jsbarcode|@pagopa/react-native-cie|react-native-share|jail-monkey|@react-native-community/art|@react-native-community/push-notification-ios|@shopify/react-native-skia|lottie-react-native|@react-native-camera-roll/camera-roll|@codler|remark|unified|bail|is-plain-obj|trough|vfile|unist-util-stringify-position|mdast-util-from-markdown|mdast-util-to-string|micromark|parse-entities|character-entities|mdast-util-to-markdown|zwitch|longest-streak|@pagopa/io-react-native-zendesk|rn-qr-generator|mixpanel-react-native|@pagopa/io-app-design-system|uuid|@sentry/react-native)" + "node_modules/(?!(jest-)?@react-native|react-native|react-navigation|@react-navigation|react-navigation-redux-helpers|react-native-device-info|rn-placeholder|jsbarcode|@pagopa/react-native-cie|react-native-share|jail-monkey|@react-native-community/art|@react-native-community/push-notification-ios|@shopify/react-native-skia|lottie-react-native|@codler|remark|unified|bail|is-plain-obj|trough|vfile|unist-util-stringify-position|mdast-util-from-markdown|mdast-util-to-string|micromark|parse-entities|character-entities|mdast-util-to-markdown|zwitch|longest-streak|@pagopa/io-react-native-zendesk|rn-qr-generator|mixpanel-react-native|@pagopa/io-app-design-system|uuid|@sentry/react-native)" ], moduleNameMapper: { "\\.svg": "/ts/__mocks__/svgMock.js" diff --git a/jestSetup.js b/jestSetup.js index 8ba76c541fa..bb6ff8384df 100644 --- a/jestSetup.js +++ b/jestSetup.js @@ -9,7 +9,6 @@ import mockClipboard from "@react-native-clipboard/clipboard/jest/clipboard-mock import nodeFetch from "node-fetch"; import { NativeModules, AccessibilityInfo } from "react-native"; import mockRNDeviceInfo from "react-native-device-info/jest/react-native-device-info-mock"; -import mockRNCameraRoll from "@react-native-camera-roll/camera-roll/src/__mocks__/nativeInterface"; import mockZendesk from "./ts/__mocks__/io-react-native-zendesk.ts"; import "react-native-get-random-values"; @@ -20,7 +19,6 @@ jest.mock("@react-native-community/push-notification-ios", () => jest.fn()); jest.mock("@react-native-cookies/cookies", () => jest.fn()); jest.mock("react-native-share", () => jest.fn()); jest.mock("@react-native-clipboard/clipboard", () => mockClipboard); -jest.mock("@react-native-camera-roll/camera-roll", () => mockRNCameraRoll); /** * adds as for documentation suggestion diff --git a/locales/de/index.yml b/locales/de/index.yml index ee4c153456c..e0cf2cb2aa0 100644 --- a/locales/de/index.yml +++ b/locales/de/index.yml @@ -2410,56 +2410,6 @@ features: title: "pagoPA Zahlungsaufforderungen" noticeCode: "Zahlungskodex" pay: "Zahlen" - euCovidCertificate: - save: - album: "IO" - noPermission: "Die IO-App hat vermutlich keine Berechtigung zum Speichern der Bilder. Bitte überprüfe deine Geräteeinstellungen." - ok: "Das Bild wurde auf deinem Smartphone gespeichert" - bottomSheet: - title: "Speichere das Zertifikat" - subTitle: "Auch ohne der IO-App und Internetverbindung kann das Zertifikat angezeigt werden." - saveAsImage: - title: "Bild in Galerie speichern" - subTitle: "Du findest den QR-Code auch als Bild auf deinem Smartphone." - listItem: - cta: "Anzeigen" - common: - title: "Grünes COVID-19-Zertifikat" - subtitle: "EU Digital COVID Certificate" - learnMore: "Erfahre mehr" - authorizationCode: "Autorisierungscode" - messageIdentifier: "Identifizierung der Nachricht" - loading: - title: "Herunterladen der Zertifikatsdaten von der nationalen Plattform des Gesundheitsministeriums" - subtitle: "Bitte warten" - valid: - accessibility: - qrCode: "QR-Code" - hint: "QR-Code als Vollbild anzeigen" - markdownDetails: - headerTitle: "Zertifikats-Details" - save: "Details speichern" - revoked: - title: "Dieses Zertifikat ist nicht mehr gültig" - expired: - title: "Dieses Zertifikat ist abgelaufen" - ko: - genericError: - title: "Deine Zertifikatsdaten konnten nicht abgerufen werden: Bitte versuche es erneut" - subtitle: "Dies kann ein vorübergehendes Problem sein." - notFound: - title: "Das Zertifikat existiert anscheinend nicht: Kontaktiere den Support" - subtitle: "Nützliche Informationen für den Support:" - cta: "Support kontaktieren" - notOperational: - title: "Das Grüne COVID-19-Zertifikat funktioniert derzeit nicht" - temporarilyNotAvailable: - title: "Der Dienst ist vorübergehend nicht verfügbar" - subtitle: "Bitte versuche es später erneut" - wrongFormat: - title: "Dieses Zertifikat kann nicht wiederhergestellt werden: Kontaktiere den Support" - subtitle: "Nützliche Informationen um Support zu erhalten:" - cta: "Support kontaktieren" pn: service: activate: "Aktiviere den Dienst" diff --git a/locales/en/index.yml b/locales/en/index.yml index c7a78509f87..b1db8188857 100644 --- a/locales/en/index.yml +++ b/locales/en/index.yml @@ -2954,57 +2954,9 @@ features: title: "pagoPA notices" noticeCode: "Notice code" pay: "Pay" - euCovidCertificate: - save: - album: "IO" - noPermission: "It seems that the app does not have permissions to save images. Please check your device settings." - ok: "Image saved in your device gallery" - bottomSheet: - title: "Save the certificate" - subTitle: "You will be able to show the QR code of the certificate without opening IO app, even when you're offline." - saveAsImage: - title: "Save as an image in the gallery" - subTitle: "You will find the QR code in your device gallery" - listItem: - cta: "View" - common: - title: "Certificazione verde COVID-19" - subtitle: "EU Digital COVID Certificate" - learnMore: "Learn more" - authorizationCode: "Authorization code" - messageIdentifier: "Message identifier" - loading: - title: "We are loading your certificate data from the National Platform of the Ministry of Health" - subtitle: "Please wait" - valid: - accessibility: - qrCode: "QR Code" - hint: "Display the QR Code in full screen" - markdownDetails: - headerTitle: "Certificate Details" - save: "Save details" - revoked: - title: "This certificate is not valid" - expired: - title: "This certificate has expired" - ko: - genericError: - title: "Your certificate data could not be retrieved: please try again" - subtitle: "This could be due to a temporary problem." - notFound: - title: "It seems that the certificate does not \nexist: contact support" - subtitle: "Details to receive support:" - cta: "Get support" - notOperational: - title: "The EU Digital COVID Certificate is not currently operational" - subtitle: "TMP" - temporarilyNotAvailable: - title: "The service is temporarily unavailable" - subtitle: "Please try again later" - wrongFormat: - title: "This certificate cannot be retrieved" - subtitle: "Details to receive support:" - cta: "Get support" + greenPass: + button: "Indietro" + title: "Questo servizio non è più attivo su IO" pn: service: activate: "Attiva il servizio" diff --git a/locales/it/index.yml b/locales/it/index.yml index dd1bc42a0ad..8c03b8f0d34 100644 --- a/locales/it/index.yml +++ b/locales/it/index.yml @@ -2954,57 +2954,9 @@ features: title: "Avvisi pagoPA" noticeCode: "Codice avviso" pay: "Paga" - euCovidCertificate: - save: - album: "IO" - noPermission: "Sembra che l'app non abbia i permessi per salvare immagini. Controlla le impostazioni del tuo dispositivo." - ok: "L'immagine è stata salvata nella galleria del tuo dispositivo" - bottomSheet: - title: "Salva il certificato" - subTitle: "Potrai mostrare il QR code del certificato senza aprire app IO, anche in assenza di connessione." - saveAsImage: - title: "Salva come immagine nella galleria" - subTitle: "Troverai il QR code fra le immagini presenti sul tuo dispositivo" - listItem: - cta: "Visualizza" - common: - title: "Certificazione verde COVID-19" - subtitle: "EU Digital COVID Certificate" - learnMore: "Per saperne di più" - authorizationCode: "Codice di autorizzazione" - messageIdentifier: "Identificativo del messaggio" - loading: - title: "Stiamo caricando i dati del tuo certificato dalla Piattaforma Nazionale del Ministero della Salute" - subtitle: "Attendi per favore" - valid: - accessibility: - qrCode: "QR Code" - hint: "Visualizza il QR Code a tutto schermo" - markdownDetails: - headerTitle: "Dettagli del certificato" - save: "Salva i dettagli" - revoked: - title: "Questo certificato \nnon è valido" - expired: - title: "Questo certificato è scaduto" - ko: - genericError: - title: "Non è stato possibile recuperare i dati del tuo certificato: riprova" - subtitle: "Potrebbe essere dovuto ad un problema temporaneo." - notFound: - title: "Sembra che il certificato non \nesista: contatta l’assistenza" - subtitle: "Dati utili per ricevere assistenza:" - cta: "Contatta l'assistenza" - notOperational: - title: "La Certificazione verde COVID-19 non è attualmente operativa" - subtitle: "TMP" - temporarilyNotAvailable: - title: "Il servizio è temporaneamente non disponibile" - subtitle: "Ti preghiamo di riprovare più tardi" - wrongFormat: - title: "Non è possibile recuperare questo \ncertificato: contatta l’assistenza" - subtitle: "Dati utili per ricevere assistenza:" - cta: "Contatta l'assistenza" + greenPass: + button: "Indietro" + title: "Questo servizio non è più attivo su IO" pn: service: activate: "Attiva il servizio" diff --git a/package.json b/package.json index 9016ef2460e..aca2a93f1e2 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "io_cgn_specs": "https://raw.githubusercontent.com/pagopa/io-backend/v16.4.0-RELEASE/api_cgn.yaml", "io_cgn_merchants_specs": "https://raw.githubusercontent.com/pagopa/io-backend/v16.4.0-RELEASE/api_cgn_operator_search.yaml", "api_fci": "https://raw.githubusercontent.com/pagopa/io-backend/v16.4.0-RELEASE/api_io_sign.yaml", - "io_eu_covid_cert": "https://raw.githubusercontent.com/pagopa/io-backend/v16.4.0-RELEASE/api_eucovidcert.yaml", "io_pn_specs": "https://raw.githubusercontent.com/pagopa/io-backend/v16.4.0-RELEASE/api_pn.yaml", "io_consumed_pn_specs": "https://raw.githubusercontent.com/pagopa/io-backend/v16.4.0-RELEASE/openapi/consumed/api-piattaforma-notifiche.yaml", "api_cdc": "assets/CdcSwagger.yml", @@ -68,7 +67,6 @@ "generate:api-session_manager_api-definitions": "rimraf definitions/session_manager && mkdir -p definitions/session_manager && gen-api-models --api-spec $npm_package_io_session_manager_public_api --out-dir ./definitions/session_manager && gen-api-models --api-spec $npm_package_io_session_manager_api --out-dir ./definitions/session_manager --no-strict --request-types --response-decoders --client", "generate:cgn-definitions": "rimraf definitions/cgn && mkdir -p definitions/cgn && gen-api-models --api-spec $npm_package_io_cgn_specs --out-dir ./definitions/cgn --no-strict --request-types --response-decoders", "generate:cgn-merchants-definitions": "rimraf definitions/cgn/merchants && mkdir -p definitions/cgn/merchants && gen-api-models --api-spec $npm_package_io_cgn_merchants_specs --out-dir ./definitions/cgn/merchants --no-strict --request-types --response-decoders", - "generate:eu-covid-cert": "rimraf definitions/eu_covid_cert && mkdir -p definitions/eu_covid_cert && gen-api-models --api-spec $npm_package_io_eu_covid_cert --out-dir ./definitions/eu_covid_cert --no-strict --request-types --response-decoders", "generate:pn-definitions": "rimraf definitions/pn && mkdir -p definitions/pn && gen-api-models --api-spec $npm_package_io_consumed_pn_specs --out-dir ./definitions/pn && gen-api-models --api-spec $npm_package_io_pn_specs --out-dir ./definitions/pn --no-strict --response-decoders --request-types --client", "generate:pagopa-api-walletv2": "rimraf definitions/pagopa/walletv2 && mkdir -p definitions/pagopa/walletv2 && gen-api-models --api-spec $npm_package_pagopa_api_walletv2 --out-dir ./definitions/pagopa/walletv2 --no-strict --request-types --response-decoders", "generate:pagopa-cobadge-configuration": "rimraf definitions/pagopa/cobadge/configuration && mkdir -p definitions/pagopa/cobadge/configuration && gen-api-models --api-spec $npm_package_pagopa_cobadge_configuration --out-dir ./definitions/pagopa/cobadge/configuration", @@ -124,7 +122,6 @@ "@pagopa/react-native-cie": "^1.3.0", "@pagopa/ts-commons": "^10.15.0", "@react-native-async-storage/async-storage": "^1.23.1", - "@react-native-camera-roll/camera-roll": "5.6.1", "@react-native-clipboard/clipboard": "^1.10.0", "@react-native-community/netinfo": "6.0.6", "@react-native-community/push-notification-ios": "^1.8.0", @@ -205,7 +202,6 @@ "react-native-svg": "^15.1.0", "react-native-tab-view": "3.5.2", "react-native-url-polyfill": "^2.0.0", - "react-native-view-shot": "3.1.2", "react-native-vision-camera": "4.3.1", "react-native-webview": "^13.10.3", "react-native-xml2js": "^1.0.3", diff --git a/scripts/api-config.json b/scripts/api-config.json index 0d2f6dc39be..5bc20519e63 100644 --- a/scripts/api-config.json +++ b/scripts/api-config.json @@ -15,7 +15,7 @@ "paymentWithValidDueDateCount": 1, "paymentWithExpiredDueDateCount": 1, "withCTA": true, - "withEUCovidCert": true, + "generateLegacyGreenPassMessage": true, "withValidDueDateCount": 1, "withInValidDueDateCount": 1, "standardMessageCount": 1, diff --git a/ts/components/__tests__/TosWebviewComponent.test.tsx b/ts/components/__tests__/TosWebviewComponent.test.tsx index e28741f2e30..d731c9c6c6d 100644 --- a/ts/components/__tests__/TosWebviewComponent.test.tsx +++ b/ts/components/__tests__/TosWebviewComponent.test.tsx @@ -13,7 +13,6 @@ import { SafeAreaProvider } from "react-native-safe-area-context"; import TosWebviewComponent from "../TosWebviewComponent"; import { FlowType } from "../../utils/analytics"; // import * as urlUtils from "../../../ts/utils/url"; -// import brokenLinkImage from "../../../img/broken-link.png"; beforeAll(() => { jest.resetAllMocks(); diff --git a/ts/components/screens/GenericErrorComponent.tsx b/ts/components/screens/GenericErrorComponent.tsx index 4edc2027b44..019105f27c8 100644 --- a/ts/components/screens/GenericErrorComponent.tsx +++ b/ts/components/screens/GenericErrorComponent.tsx @@ -2,6 +2,7 @@ import { Body, FooterWithButtons, H4, + Pictogram, VSpacer } from "@pagopa/io-app-design-system"; import { useFocusEffect } from "@react-navigation/native"; @@ -110,13 +111,11 @@ const GenericErrorComponent = (props: Props) => { > - + {props.image ? ( + + ) : ( + + )}