diff --git a/.env.local b/.env.local index 0aaf0db5096..8079ea20e6e 100644 --- a/.env.local +++ b/.env.local @@ -58,7 +58,7 @@ BPD_OPT_IN_PAYMENT_METHODS = YES # Ukraine donation UA_DONATIONS_ENABLED=YES # FIMS (Federated Identity Management System) feature -FIMS_ENABLED = NO +FIMS_ENABLED = YES # Premium Messages Opt-in/out Feature Flag PREMIUM_MESSAGES_OPT_IN_ENABLED=YES # CDC (Carta della cultura) feature diff --git a/.env.production b/.env.production index c06de4670b2..3fceccceccc 100644 --- a/.env.production +++ b/.env.production @@ -84,17 +84,17 @@ CIE_SPID_INFORMATION_URL='https://identitadigitale.gov.it' # Pin/Puk help url PIN_PUK_HELP_URL='https://www.cartaidentita.interno.gov.it/info-utili/codici-di-sicurezza-pin-e-puk' # Fast Login feature -FAST_LOGIN_ENABLED=NO +FAST_LOGIN_ENABLED=YES # Native Login feature NATIVE_LOGIN_ENABLED=NO # Fast login max retries FAST_LOGIN_MAX_RETRIES=3 # Fast login bypass opt-in -FAST_LOGIN_OPTIN=NO +FAST_LOGIN_OPTIN=YES # Enable CIE login flow with emulator and dev server CIE_LOGIN_WITH_DEV_SERVER_ENABLED=NO # Enable CDU flow new screen -CDU_NEW_FLOW=NO +CDU_NEW_FLOW=YES # Relay State for SPID SPID_RELAY_STATE='appio' # Wallet RESTful API diff --git a/.husky/pre-push b/.husky/pre-push index 827061b7d5c..f86c2212443 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -7,6 +7,10 @@ unstagedCount=`echo "$unstagedFiles" | wc -l | sed 's/ //g'` echo "Current modified files ($unstagedCount):" echo "$unstagedFiles" +# Compile the project +echo "🔨 compiling..." +yarn tsc:noemit + # Run lintier echo "🧹 runnning linter..." yarn lint-autofix @@ -32,13 +36,5 @@ if [ -n "$(git status --porcelain)" ]; then fi fi -# Compile the project -echo "🔨 compiling..." -yarn tsc:noemit - -# Run tests -echo "🧪 testing..." -yarn test:dev - echo "🚀 pushing..." echo "✨ Done." \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 1912b0ef420..dd6d899fb72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,168 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.51.0-rc.1](https://github.com/pagopa/io-app/compare/2.51.0-rc.0...2.51.0-rc.1) (2024-01-17) + + +### Features + +* [[IOCOM-793](https://pagopa.atlassian.net/browse/IOCOM-793)] Rename the sagas in the `features/messages/saga` folder ([#5403](https://github.com/pagopa/io-app/issues/5403)) ([b33bafb](https://github.com/pagopa/io-app/commit/b33bafb1b0b0aca84e6fd5064eac7efd867b6a17)) + + +### Bug Fixes + +* [[IABT-1515](https://pagopa.atlassian.net/browse/IABT-1515)] Fix date format in FCI data sharing screen ([#5365](https://github.com/pagopa/io-app/issues/5365)) ([a1d2b04](https://github.com/pagopa/io-app/commit/a1d2b0420b4acb579a2f478a25c1124c9107cddb)) +* [[IOCOM-645](https://pagopa.atlassian.net/browse/IOCOM-645),[IABT-1485](https://pagopa.atlassian.net/browse/IABT-1485)] Fix an Android crash when dealing with calendar events ([#5404](https://github.com/pagopa/io-app/issues/5404)) ([a320053](https://github.com/pagopa/io-app/commit/a3200538ff839ef89b0a9c9c5965f11d611eb968)) + + +### Chores + +* [[IOBP-466](https://pagopa.atlassian.net/browse/IOBP-466)] Add gallery permission request in barcode scan screen for iOS devices ([#5334](https://github.com/pagopa/io-app/issues/5334)) ([12c22e8](https://github.com/pagopa/io-app/commit/12c22e8f2fc760b34545ecc92131be78bfbd0331)) +* [[IOBP-511](https://pagopa.atlassian.net/browse/IOBP-511)] New Wallet payment playground refinement ([#5406](https://github.com/pagopa/io-app/issues/5406)) ([599a037](https://github.com/pagopa/io-app/commit/599a03758251b735b71b92386d165e05978fcb2d)) +* removes compatibility layer for react-navigation ([#5284](https://github.com/pagopa/io-app/issues/5284)) ([a09a4e5](https://github.com/pagopa/io-app/commit/a09a4e56105d804afb1b95b5fe445f89f0fd32da)) + +## [2.51.0-rc.0](https://github.com/pagopa/io-app/compare/2.50.0-rc.5...2.51.0-rc.0) (2024-01-16) + + +### Features + +* [IOBP-309, IOBP-312] Add error handling for payment verification and activation requests ([#5378](https://github.com/pagopa/io-app/issues/5378)) ([a29e57f](https://github.com/pagopa/io-app/commit/a29e57f1f007b77dbcb6027b4e3cd1d1196c4443)) +* [[IOBP-437](https://pagopa.atlassian.net/browse/IOBP-437)] Add new wallet payment outcome error handling ([#5390](https://github.com/pagopa/io-app/issues/5390)) ([dff6e61](https://github.com/pagopa/io-app/commit/dff6e615a7d8e2674c3ffceff485546044734aef)) + + +### Bug Fixes + +* [[IOBP-462](https://pagopa.atlassian.net/browse/IOBP-462)] Missing transaction details data ([#5393](https://github.com/pagopa/io-app/issues/5393)) ([09eab9b](https://github.com/pagopa/io-app/commit/09eab9b10d05969413d2556f07ff151e045f9918)) +* [[IOBP-501](https://pagopa.atlassian.net/browse/IOBP-501)] Wallet token into new wallet flows ([#5398](https://github.com/pagopa/io-app/issues/5398)) ([02cfc98](https://github.com/pagopa/io-app/commit/02cfc98520188d0455b9dc11f526ec549ac44de5)) +* [[IOPID-1287](https://pagopa.atlassian.net/browse/IOPID-1287)] Change fingerprint icon and fix typo ([#5392](https://github.com/pagopa/io-app/issues/5392)) ([d6d2dc0](https://github.com/pagopa/io-app/commit/d6d2dc06cd1b133d3832be0cc060a236265a84e2)) + + +### Chores + +* [[IOAPPFD0-201](https://pagopa.atlassian.net/browse/IOAPPFD0-201)] Update some Profile screens with the new DS components ([#5333](https://github.com/pagopa/io-app/issues/5333)) ([978c689](https://github.com/pagopa/io-app/commit/978c689d41b38b9e09b8951479369a1ea614a0b0)) +* [[IOBP-438](https://pagopa.atlassian.net/browse/IOBP-438)] Add abort dialog for payment flow ([#5379](https://github.com/pagopa/io-app/issues/5379)) ([2986e5c](https://github.com/pagopa/io-app/commit/2986e5c849673b88ae1a6f368d85af8a3fed0a52)) +* [[IOBP-478](https://pagopa.atlassian.net/browse/IOBP-478)] Update ID Pay definitions for IBAN and onboarding exceptions ([#5369](https://github.com/pagopa/io-app/issues/5369)) ([6b76845](https://github.com/pagopa/io-app/commit/6b768454214b6291c5f6f3115f6fe6b68fb461dc)) +* [[IOBP-479](https://pagopa.atlassian.net/browse/IOBP-479)] Add temporary missing methods error in method selection screen ([#5394](https://github.com/pagopa/io-app/issues/5394)) ([36e378f](https://github.com/pagopa/io-app/commit/36e378f63e619da086551af1d770e7c0ecc207b5)) +* [[IOBP-486](https://pagopa.atlassian.net/browse/IOBP-486)] Add hardware button back navigation in Barcode scan screen for Android devices ([#5395](https://github.com/pagopa/io-app/issues/5395)) ([1e73ed6](https://github.com/pagopa/io-app/commit/1e73ed600f6e697ebf05fae55b639a11b7cb38ca)) +* [[IOBP-488](https://pagopa.atlassian.net/browse/IOBP-488)] Refactor bonus features to remove cross feature dependencies ([#5397](https://github.com/pagopa/io-app/issues/5397)) ([dfc75ab](https://github.com/pagopa/io-app/commit/dfc75ab372ccd58d09ae0a17a24eccba7318a234)) +* [[IOPID-1227](https://pagopa.atlassian.net/browse/IOPID-1227)] Fix bottomsheet error 1002 ([#5396](https://github.com/pagopa/io-app/issues/5396)) ([6260b35](https://github.com/pagopa/io-app/commit/6260b35d92f7ab42fb57e5965c1f1d89b2a41ee5)) +* [[PE-510](https://pagopa.atlassian.net/browse/PE-510)] Integration of LV for CGN flows ([#5363](https://github.com/pagopa/io-app/issues/5363)) ([febfc01](https://github.com/pagopa/io-app/commit/febfc0194871a0759c685b9d8c6a50b1c731e8ca)) + +## [2.50.0-rc.5](https://github.com/pagopa/io-app/compare/2.50.0-rc.4...2.50.0-rc.5) (2024-01-11) + + +### Bug Fixes + +* [[IABT-1520](https://pagopa.atlassian.net/browse/IABT-1520)] HeaderFirstLevel showing messages case when opening the support flow ([#5371](https://github.com/pagopa/io-app/issues/5371)) ([7df95ce](https://github.com/pagopa/io-app/commit/7df95ceb8406509c10a0ffb362c7623b33ebef8d)) + +## [2.50.0-rc.4](https://github.com/pagopa/io-app/compare/2.50.0-rc.3...2.50.0-rc.4) (2024-01-11) + + +### Features + +* [[IOBP-311](https://pagopa.atlassian.net/browse/IOBP-311),[IOBP-317](https://pagopa.atlassian.net/browse/IOBP-317)] New wallet payment method selection screen ([#5350](https://github.com/pagopa/io-app/issues/5350)) ([8bb098e](https://github.com/pagopa/io-app/commit/8bb098e9962f16d7e53e9f559a21036797ec11e1)) +* [[IOBP-432](https://pagopa.atlassian.net/browse/IOBP-432)] Add new wallet payment authorization webview ([#5276](https://github.com/pagopa/io-app/issues/5276)) ([a3bb6a4](https://github.com/pagopa/io-app/commit/a3bb6a46d3b8aff0fb0a816870085f6c03974135)) +* [[IOBP-480](https://pagopa.atlassian.net/browse/IOBP-480)] Remove holder name from wallet payment confirm screen ([#5387](https://github.com/pagopa/io-app/issues/5387)) ([4de88bc](https://github.com/pagopa/io-app/commit/4de88bcae555a253b141ffac1ddd452f3eb9049a)) + + +### Bug Fixes + +* [[IOBP-482](https://pagopa.atlassian.net/browse/IOBP-482)] Adapted actual payment transaction apis with LV ([#5388](https://github.com/pagopa/io-app/issues/5388)) ([5f4e0c3](https://github.com/pagopa/io-app/commit/5f4e0c3e7c26bfc1d99f028cf4416f7c83c84e56)) + + +### Chores + +* [[IOAPPFD0-198](https://pagopa.atlassian.net/browse/IOAPPFD0-198)] Redesign of the developer section with better organization ([#5324](https://github.com/pagopa/io-app/issues/5324)) ([0bde66a](https://github.com/pagopa/io-app/commit/0bde66afe3258485c771e563af3bf07cd6c41fcf)) +* [[IOAPPFD0-205](https://pagopa.atlassian.net/browse/IOAPPFD0-205)] Remove `profileAlt` icon reference from the codebase ([#5366](https://github.com/pagopa/io-app/issues/5366)) ([14f7cf7](https://github.com/pagopa/io-app/commit/14f7cf7e4b2eb917048eceb3216d12db042f440f)) +* [[IOBP-396](https://pagopa.atlassian.net/browse/IOBP-396)] Add new `BonusCard` component into ID Pay initiative details screen ([#5329](https://github.com/pagopa/io-app/issues/5329)) ([a5a91bc](https://github.com/pagopa/io-app/commit/a5a91bc03877479f0592d01634b0557d6fc32a2e)) +* [[IOPID-1301](https://pagopa.atlassian.net/browse/IOPID-1301)] Bump ToS version from 4.7 to 4.8" ([#5391](https://github.com/pagopa/io-app/issues/5391)) ([277c21f](https://github.com/pagopa/io-app/commit/277c21f5a940c28a82ac00c9bd99bb404307d3ff)), closes [pagopa/io-app#5385](https://github.com/pagopa/io-app/issues/5385) + +## [2.50.0-rc.3](https://github.com/pagopa/io-app/compare/2.50.0-rc.2...2.50.0-rc.3) (2024-01-09) + + +### Features + +* **Firma con IO:** [[SFEQS-1892](https://pagopa.atlassian.net/browse/SFEQS-1892)] Add environment to Mixpanel events ([#5159](https://github.com/pagopa/io-app/issues/5159)) ([43d203f](https://github.com/pagopa/io-app/commit/43d203f3381591c47347bf850c0ee8c0a29fa0a2)) +* [[IOBP-313](https://pagopa.atlassian.net/browse/IOBP-313)] New wallet payment pick PSP ([#5302](https://github.com/pagopa/io-app/issues/5302)) ([77a768c](https://github.com/pagopa/io-app/commit/77a768cddff285f558f2c552b44efac409a5b789)) +* [[IOBP-314](https://pagopa.atlassian.net/browse/IOBP-314)] Wallet payment confirm screen ([#5344](https://github.com/pagopa/io-app/issues/5344)) ([9f867be](https://github.com/pagopa/io-app/commit/9f867be9de4836242a0a6b8a9a6a84ff8e5f4184)) +* [[IOCOM-382](https://pagopa.atlassian.net/browse/IOCOM-382)] Move all the message related files to `features/messages` folder ([#5375](https://github.com/pagopa/io-app/issues/5375)) ([e92e03c](https://github.com/pagopa/io-app/commit/e92e03cb0b030326d08678ee53f269c14f0c0811)) + + +### Bug Fixes + +* [[IOPID-1297](https://pagopa.atlassian.net/browse/IOPID-1297)] Fix: the navigation object hasn't been initialized yet ([#5381](https://github.com/pagopa/io-app/issues/5381)) ([5f9d702](https://github.com/pagopa/io-app/commit/5f9d702b88c79ef75228c24b1834a279cb6fd66c)) + + +### Chores + +* [[IOAPPFD0-202](https://pagopa.atlassian.net/browse/IOAPPFD0-202)] Update README.md physical devices section ([#5332](https://github.com/pagopa/io-app/issues/5332)) ([ccf5fc2](https://github.com/pagopa/io-app/commit/ccf5fc2d8f3f320dbaae9ad2b3f4fd1ff71e02bb)) +* [[IOPID-1301](https://pagopa.atlassian.net/browse/IOPID-1301)] Bump ToS version from 4.7 to 4.8 ([#5385](https://github.com/pagopa/io-app/issues/5385)) ([a7efe4e](https://github.com/pagopa/io-app/commit/a7efe4e393b26e5d0d187457ed28d7f38cfa79bd)) +* removes test step from husky pre-push ([#5380](https://github.com/pagopa/io-app/issues/5380)) ([3e9e9ee](https://github.com/pagopa/io-app/commit/3e9e9eea96c44e8c077b3152003b98728febabff)) + +## [2.50.0-rc.2](https://github.com/pagopa/io-app/compare/2.50.0-rc.1...2.50.0-rc.2) (2024-01-05) + +## [2.50.0-rc.1](https://github.com/pagopa/io-app/compare/2.50.0-rc.0...2.50.0-rc.1) (2024-01-04) + + +### Bug Fixes + +* [[IOCOM-759](https://pagopa.atlassian.net/browse/IOCOM-759)] Remove the section title if there are no attachments ([#5372](https://github.com/pagopa/io-app/issues/5372)) ([b08ac0a](https://github.com/pagopa/io-app/commit/b08ac0a193d7b4c5f0c633ca19221bf69cd71588)) +* [[IOCOM-761](https://pagopa.atlassian.net/browse/IOCOM-761)] Text wrapping for precondition's title text ([#5368](https://github.com/pagopa/io-app/issues/5368)) ([d78fe84](https://github.com/pagopa/io-app/commit/d78fe8487efae9149b44a156b6e401c20eab8d2e)) +* failing Android build ([#5376](https://github.com/pagopa/io-app/issues/5376)) ([a23dece](https://github.com/pagopa/io-app/commit/a23dece585eb9420c370a72df8ae62d22a254be0)) + +## [2.50.0-rc.0](https://github.com/pagopa/io-app/compare/2.49.0-rc.0...2.50.0-rc.0) (2024-01-03) + + +### Bug Fixes + +* [[IOBP-446](https://pagopa.atlassian.net/browse/IOBP-446)] Add gallery permission request in barcode scan screen for Android devices ([#5313](https://github.com/pagopa/io-app/issues/5313)) ([3aa8576](https://github.com/pagopa/io-app/commit/3aa8576a09d1859734491df42196e953297e9680)), closes [/github.com/pagopa/io-app/pull/5313/files#diff-7752f292bcc12a6ee19233df702f1e1bafc087f6261759e0a5939c6e7a883f19](https://github.com/pagopa//github.com/pagopa/io-app/pull/5313/files/issues/diff-7752f292bcc12a6ee19233df702f1e1bafc087f6261759e0a5939c6e7a883f19) +* HeaderFirstLevel is misconfigured in services home screen ([#5358](https://github.com/pagopa/io-app/issues/5358)) ([993ae3e](https://github.com/pagopa/io-app/commit/993ae3e04900d05cc91617a3fb4e2ff573bcec0c)) + +## [2.49.0-rc.1](https://github.com/pagopa/io-app/compare/2.48.0-rc.7...2.49.0-rc.1) (2023-12-20) + + +## [2.49.0-rc.0](https://github.com/pagopa/io-app/compare/2.48.0-rc.7...2.49.0-rc.0) (2023-12-19) + + +### Bug Fixes + +* [[IABT-1492](https://pagopa.atlassian.net/browse/IABT-1492)] Copy update ([#5314](https://github.com/pagopa/io-app/issues/5314)) ([a95c140](https://github.com/pagopa/io-app/commit/a95c140a39aa4f8b8a59505cac30268dc7484a17)) +* [[IOPID-1267](https://pagopa.atlassian.net/browse/IOPID-1267)] Chore: fix toast ([#5351](https://github.com/pagopa/io-app/issues/5351)) ([cf76e5d](https://github.com/pagopa/io-app/commit/cf76e5d19564b613c5c47f1926beb10869242ad3)) + + +### Chores + +* [[IOBP-457](https://pagopa.atlassian.net/browse/IOBP-457)] Old wallet LV integration ([#5349](https://github.com/pagopa/io-app/issues/5349)) ([a3ad579](https://github.com/pagopa/io-app/commit/a3ad579ddce72300a1fc4bfc6e9c395f2c24e56b)) +* [[IOPID-1182](https://pagopa.atlassian.net/browse/IOPID-1182)] Chore: enable all FL related local FF in production ([#5353](https://github.com/pagopa/io-app/issues/5353)) ([c039e54](https://github.com/pagopa/io-app/commit/c039e54e46007a252bc43c6892dd273da83eb85b)) +* 🇩🇪 CGN translations ([#5293](https://github.com/pagopa/io-app/issues/5293)) ([1e969f9](https://github.com/pagopa/io-app/commit/1e969f9a12d75c6e17cf7475ba9f514a054fdb5d)) + +## [2.48.0-rc.7](https://github.com/pagopa/io-app/compare/2.48.0-rc.6...2.48.0-rc.7) (2023-12-15) + + +### Features + +* [[IOBP-442](https://pagopa.atlassian.net/browse/IOBP-442)] New wallet payment details screen ([#5291](https://github.com/pagopa/io-app/issues/5291)) ([81ee7c3](https://github.com/pagopa/io-app/commit/81ee7c3a4bbd178480e42ef2d258dfc8e781d901)) + +## [2.48.0-rc.6](https://github.com/pagopa/io-app/compare/2.48.0-rc.5...2.48.0-rc.6) (2023-12-15) + + +### Features + +* [[IOCOM-740](https://pagopa.atlassian.net/browse/IOCOM-740)] Update `tosVersion` to 4.7 ([#5341](https://github.com/pagopa/io-app/issues/5341)) ([f797c19](https://github.com/pagopa/io-app/commit/f797c1968d5debdda8133aa90c3c8755a344af4d)) + + +### Bug Fixes + +* [[IOCOM-736](https://pagopa.atlassian.net/browse/IOCOM-736)] Message retrieval fix for fast login ([#5335](https://github.com/pagopa/io-app/issues/5335)) ([81bf8d5](https://github.com/pagopa/io-app/commit/81bf8d5578a87ffc116604f906a9fddfd42bda95)) +* [[IOPID-1257](https://pagopa.atlassian.net/browse/IOPID-1257)] Fix: no-mail user onboarding ([#5338](https://github.com/pagopa/io-app/issues/5338)) ([47aa4a0](https://github.com/pagopa/io-app/commit/47aa4a03be30c630c7a0d63ab4c590fc034fc106)) +* [[IOPLT-304](https://pagopa.atlassian.net/browse/IOPLT-304)] HeaderFirstLevelHandler logic on current route selector instead of local status ([#5340](https://github.com/pagopa/io-app/issues/5340)) ([41bfa5b](https://github.com/pagopa/io-app/commit/41bfa5b55143bfe5e2f304ef9087aff30fd62206)) + + +### Chores + +* **deps:** bump urllib3 from 1.26.6 to 1.26.18 in /scripts/check_cie_button_exists ([#5132](https://github.com/pagopa/io-app/issues/5132)) ([ee48c2e](https://github.com/pagopa/io-app/commit/ee48c2e59c0f9d6b53ea714cb5661d3f0c90ce67)) +* **deps:** bump urllib3 from 1.26.6 to 1.26.18 in /scripts/check_urls ([#5133](https://github.com/pagopa/io-app/issues/5133)) ([05f033b](https://github.com/pagopa/io-app/commit/05f033bd3b551b3a6357e19da8eb4245900f00b8)) + ## [2.48.0-rc.5](https://github.com/pagopa/io-app/compare/2.48.0-rc.4...2.48.0-rc.5) (2023-12-14) diff --git a/README.md b/README.md index c2407ece7d5..8c1c79dec8c 100644 --- a/README.md +++ b/README.md @@ -395,7 +395,7 @@ You can target the production server by copying the included `.env.production` f $ cp .env.production .env ``` -> **Note** +> [!NOTE] > The sample configuration sets the app to interface with our test environment, on which we work continuously; therefore, it may occur that some features are not always available or fully working. Check the comments in the file for more informations about environment variables. ### io-dev-api-server @@ -425,8 +425,12 @@ $ yarn run-ios ### Physical devices The React Native documentation provides a [useful guide](https://reactnative.dev/docs/running-on-device) for running projects on physical devices. -> **Warning** -> On iOS you also have to change the `Bundle Identifier` to something unique before running io-app on your physical device. This can be done in the `Signing (Debug)` section of Xcode. +> [!IMPORTANT] +> For building the app on an iOS physical device, a few additional steps are necessary: +> - Navigate to `Build Phases` in Xcode and expand `Bundle React Native code and images`. Update the `NODE_BINARY` variable with the path to your Node.js environment. You can find the correct path by running `which node` in a terminal from the app's root directory; +> - If you're not part of the PagoPA S.p.A. organization then you must change the `Bundle Identifier` to something unique. This adjustment can be made in the `Signing (Debug)` +> section of Xcode; +> - In order to test the CIE authentication flow, run `yarn cie-ios:prod` before building the app. The process can be reverted by running `yarn cie-ios:dev`. @@ -442,19 +446,6 @@ This section lists possible solutions to problems you might encounter while buil --- -- ``` - error: Can't find 'node' binary to build React Native bundle If you have non-standard nodejs installation, select your project in Xcode, find 'Build Phases' - 'Bundle React Native code and images' and change NODE_BINARY to absolute path to your node executable (you can find it by invoking 'which node' in the terminal) - ``` - While using a virtual node enviroment and building with Xcode you might encounter the aformentioned error. - Create a local Xcode enviroment file by running: - ```bash - $ cd ios - $ cp .xcode.env .xcode.env.local - ``` - Edit `.xcode.env.local` to your needs by adding your node binary path which can be found by running `which node`. - - --- - - ``` error No simulator available with name "iPhone 13". ``` @@ -576,4 +567,4 @@ In the meantime, there are two complementary and simultaneous activities going o You can keep track of the latest developments by filtering all the PRs according to the type of activity: -[![NativeBase's dismissal label](https://img.shields.io/github/labels/pagopa/io-app/NativeBase%20dismissal%20%F0%9F%A5%B7%F0%9F%8F%BC)](https://github.com/pagopa/io-app/labels/NativeBase%20dismissal%20%F0%9F%A5%B7%F0%9F%8F%BC) [![Design System's label](https://img.shields.io/github/labels/pagopa/io-app/Design%20System)](https://github.com/pagopa/io-app/labels/Design%20System) +[![NativeBase's dismissal label](https://img.shields.io/github/labels/pagopa/io-app/NativeBase%20dismissal%20%F0%9F%A5%B7%F0%9F%8F%BC)](https://github.com/pagopa/io-app/labels/NativeBase%20dismissal%20%F0%9F%A5%B7%F0%9F%8F%BC) [![Design System's label](https://img.shields.io/github/labels/pagopa/io-app/Design%20System)](https://github.com/pagopa/io-app/labels/Design%20System) \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index 7c2422e5dbb..931ce7a063c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,8 +144,8 @@ android { applicationId "it.pagopa.io.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 100154777 - versionName "2.48.0.5" + versionCode 100154789 + versionName "2.51.0.1" buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() if (isNewArchitectureEnabled()) { // We configure the NDK build only if you decide to opt-in for the New Architecture. diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 23851b9bc3a..b2d15c9daed 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -44,6 +44,9 @@ + + + diff --git a/img/features/pn/pn_alert_header.svg b/img/features/messages/alert_header.svg similarity index 100% rename from img/features/pn/pn_alert_header.svg rename to img/features/messages/alert_header.svg diff --git a/img/features/pn/pn_message_badge.svg b/img/features/messages/pn_message_badge.svg similarity index 100% rename from img/features/pn/pn_message_badge.svg rename to img/features/messages/pn_message_badge.svg diff --git a/ios/ItaliaApp.xcodeproj/project.pbxproj b/ios/ItaliaApp.xcodeproj/project.pbxproj index 9a17d9f7bb4..601f83ee750 100644 --- a/ios/ItaliaApp.xcodeproj/project.pbxproj +++ b/ios/ItaliaApp.xcodeproj/project.pbxproj @@ -795,7 +795,7 @@ CODE_SIGN_ENTITLEMENTS = ItaliaApp/ItaliaApp.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 5; + CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = M2X5YQ4BJ7; ENABLE_BITCODE = NO; @@ -836,7 +836,7 @@ CODE_SIGN_ENTITLEMENTS = ItaliaApp/ItaliaApp.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CURRENT_PROJECT_VERSION = 5; + CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = M2X5YQ4BJ7; ENABLE_BITCODE = NO; diff --git a/ios/ItaliaApp/Info.plist b/ios/ItaliaApp/Info.plist index a1e48470e6f..84c7a9605d0 100644 --- a/ios/ItaliaApp/Info.plist +++ b/ios/ItaliaApp/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 2.48.0 + 2.51.0 CFBundleSignature ???? CFBundleURLTypes @@ -34,7 +34,7 @@ CFBundleVersion - 5 + 1 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/ItaliaAppTests/Info.plist b/ios/ItaliaAppTests/Info.plist index bab6c4b6f1e..0bc1ead92cd 100644 --- a/ios/ItaliaAppTests/Info.plist +++ b/ios/ItaliaAppTests/Info.plist @@ -15,10 +15,10 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 2.48.0 + 2.51.0 CFBundleSignature ???? CFBundleVersion - 5 + 1 \ No newline at end of file diff --git a/ios/Podfile b/ios/Podfile index 25bc4848fa8..74b7bbb04aa 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,8 +1,16 @@ require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' +require_relative '../node_modules/react-native-permissions/scripts/setup' + platform :ios, '12.4' install! 'cocoapods', :deterministic_uuids => false +# Required by react-native-permissions +# https://github.com/zoontek/react-native-permissions?tab=readme-ov-file#ios +setup_permissions([ + 'PhotoLibrary', # Required for Gallery read permission +]) + production = ENV["PRODUCTION"] == "1" # This env is used to check whether # we are in a CI environment or not. diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 9391b832484..3e3269eef8a 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -137,7 +137,7 @@ PODS: - OpenSSL-Universal (1.1.1100) - pagopa-io-react-native-crypto (0.2.1): - React-Core - - pagopa-io-react-native-login-utils (0.2.0): + - pagopa-io-react-native-login-utils (0.2.2): - React-Core - PromisesObjC (2.0.0) - Protobuf (3.19.1) @@ -502,6 +502,8 @@ PODS: - React - RNKeychain (4.0.5): - React + - RNPermissions (4.0.0): + - React-Core - RNQrGenerator (1.4.0): - React - ZXingObjC @@ -680,6 +682,7 @@ DEPENDENCIES: - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) - RNI18n (from `../node_modules/react-native-i18n`) - RNKeychain (from `../node_modules/react-native-keychain`) + - RNPermissions (from `../node_modules/react-native-permissions`) - RNQrGenerator (from `../node_modules/rn-qr-generator`) - RNReactNativeHapticFeedback (from `../node_modules/react-native-haptic-feedback`) - RNReanimated (from `../node_modules/react-native-reanimated`) @@ -877,6 +880,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-i18n" RNKeychain: :path: "../node_modules/react-native-keychain" + RNPermissions: + :path: "../node_modules/react-native-permissions" RNQrGenerator: :path: "../node_modules/rn-qr-generator" RNReactNativeHapticFeedback: @@ -935,7 +940,7 @@ SPEC CHECKSUMS: nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96 OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c pagopa-io-react-native-crypto: 644fece16966f2e1ea1f872344ee5a3c6c8761a1 - pagopa-io-react-native-login-utils: 929e584c817572ce7a3e41e0c6f96c7990bd314d + pagopa-io-react-native-login-utils: 51a58dc0e5fe3cba461759b9e98e795fc22e17c8 PromisesObjC: 68159ce6952d93e17b2dfe273b8c40907db5ba58 Protobuf: 3724efa50cb2846d7ccebc8691c574e85fd74471 RCT-Folly: b9d9fe1fc70114b751c076104e52f3b1b5e5a95a @@ -998,6 +1003,7 @@ SPEC CHECKSUMS: RNGestureHandler: dec4645026e7401a0899f2846d864403478ff6a5 RNI18n: e2f7e76389fcc6e84f2c8733ea89b92502351fd8 RNKeychain: 840f8e6f13be0576202aefcdffd26a4f54bfe7b5 + RNPermissions: b3d9d00889e37cc184d365ab04bb7a3f20811b1c RNQrGenerator: 1676221c08bfabec978242989c733810dad20959 RNReactNativeHapticFeedback: 6d24decfa94e037c2ecc312407d2a057b7933f10 RNReanimated: 7faa787e8d4493fbc95fab2ad331fa7625828cfa @@ -1024,6 +1030,6 @@ SPEC CHECKSUMS: ZendeskSupportSDK: 92e6f9d334e81e9186f8a17583862350460a5393 ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb -PODFILE CHECKSUM: 0d78c2a7f58353c7eed2163b7e3b3747b00ff101 +PODFILE CHECKSUM: 4a1130da2ee9cd7365bb5a5290feaed31a6bd470 COCOAPODS: 1.12.1 diff --git a/jestSetup.js b/jestSetup.js index cf777d2db89..1f99c8a8aad 100644 --- a/jestSetup.js +++ b/jestSetup.js @@ -99,3 +99,7 @@ jest.mock("@gorhom/bottom-sheet", () => { jest.mock("react-native-device-info", () => mockRNDeviceInfo); jest.mock("react-native-pdf", () => jest.fn()); + +jest.mock("react-native-permissions", () => + require("react-native-permissions/mock") +); diff --git a/locales/de/index.yml b/locales/de/index.yml index 96437c19501..53cc3e64d84 100644 --- a/locales/de/index.yml +++ b/locales/de/index.yml @@ -1,6 +1,10 @@ --- accessibility: doubleTapToActivateHint: "Doppeltippen zum Aktivieren" + buttons: + torch: + turnOn: "Taschenlampe einschalten" + turnOff: "Taschenlampe ausschalten" date: formats: default: "%d.%m.%Y" @@ -62,6 +66,15 @@ global: failed: "Fehlgeschlagen" cancelled: "Abgebrochen" reversal: "Stornierung" + modules: + paymentNotice: + badges: + paid: "Bezahlt" + error: "Fehler" + expired: "Abgelaufen" + revoked: "Widerrufen" + canceled: "Annulliert" + inprogress: "In Bearbeitung" password: "Passwort" username: "Benutzername" disclaimer_beta: "Wenn du Probleme bei der Anmeldung hast, lass es uns bitte wissen!" @@ -71,6 +84,7 @@ global: accessibility: minusSymbol: "minus" reload: "Neu laden" + search: "Suchen" switchLabel: "Zum Aktivieren auswählen" inputLabel: "{{header}}, Überschrift" textField: "{{inputLabel}}, Textfeld" @@ -149,6 +163,7 @@ global: ok: "OK" ok2: "Ok" continue: "Weiter" + notNow: "Jetzt nicht" retry: "Wiederholen" back: "Zurück" confirm: "Bestätigen" @@ -161,9 +176,11 @@ global: edit: "Ändern" info: "Info" activate: "Aktivieren" + activate2: "Aktivieren" deactivate: "Deaktivieren" show: "Anzeigen" update: "Aktualisieren" + updateIO: "IO aktualisieren" findOutMore: "Mehr erfahren" details: "Details" choose: "Auswählen" @@ -227,6 +244,9 @@ permissionRationale: calendar: title: "Zugriff auf den Kalender gewähren" message: "Du kannst Fälligkeiten in deinem Kalender eintragen und eine Benachrichtigung einstellen." + torch: + title: "Zugriff auf die Kamera gewähren" + message: "Wir brauchen Zugang zur Kamera, um die Taschenlampenfunktion zu benutzen." startup: title: "Initialisierung" authentication: "Benutzer authentifiziert" @@ -336,13 +356,13 @@ profile: exportData: cta: "Kopie deiner Daten anfordern" title: "Zugriff auf deine Daten" - description: "Du erhälst eine Kopie der mit deinem IO-Profil verbundenen Daten" + description: "Du erhältst eine Kopie der mit deinem IO-Profil verbundenen Daten" info: title: "Du kannst deine IO-Profilinformationen jederzeit herunterladen." alert: requestTitle: "Möchtest du wirklich all deine Daten exportieren?" oldRequest: "Wir bearbeiten bereits eine Anfrage zum Datenexport" - confirmSubtitle: "Nach der Bearbeitung erhälst du eine E-Mail mit allen Informationen, die mit deinem Profil verbunden sind." + confirmSubtitle: "Nach der Bearbeitung erhältst du eine E-Mail mit allen Informationen, die mit deinem Profil verbunden sind." error: "Bei der Anfrage zum Datenexport ist ein Fehler aufgetreten, bitte versuche es erneut!" privacyPolicy: title: "Datenschutz und Nutzungsbedingungen" @@ -397,6 +417,7 @@ profile: title: "Über IO" description: "Erfahren mehr über die IO-App" developersSectionHeader: "Entwickler" + testEnvironmentSectionHeader: "Testumgebung" pagoPaEnvironment: pagoPaEnv: "pagoPA Testumgebung" pagoPAEnvAlert: "Diese Änderung erfordert einen Neustart der App" @@ -470,7 +491,7 @@ profile: subtitleExistingUser: "Jetzt kannst du sofort sehen, wer dir geschrieben hat oder dich an wichtige Nachrichten erinnern lassen." reminders: title: "Erinnerungen zulassen" - description: "Auf Antrag der Körperschaft erhälst du Push-Benachrichtigungen kurz vor Fälligkeit oder wenn du die Nachrichten noch nicht gelesen hast" + description: "Auf Antrag der Körperschaft erhältst du Push-Benachrichtigungen kurz vor Fälligkeit oder wenn du die Nachrichten noch nicht gelesen hast" preview: title: "Vorschau anzeigen" description: "Absender und Betreff in die Push-Benachrichtigung einfügen · " @@ -540,6 +561,7 @@ authentication: card4-content: "Das von dir verwendete Gerät unterstützt den Zugang mit einer elektronischen Identitätskarte (CIE) nicht" card5-title: "Willkommen bei der ersten öffentlichen Version von IO!" card5-content: "In der rechten oberen Ecke findest du das Symbol '?', mit dem du einen Chat mit dem IO-Team beginnen kannst, wenn etwas nicht so funktioniert, wie es sollte." + card5-content-accessibility: "Wähle das vorherige Element, um einen Chat mit dem IO-Team zu beginnen, wenn etwas nicht so funktioniert, wie es sollte." expiredCardTitle: "Karte abgelaufen oder nicht mehr gültig" expiredCardHeaderTitle: "Anmeldung mit CIE" expiredCardContent: "Die verwendete Karte ist nicht mehr gültig oder abgelaufen.\nWenn du dich anmelden und auf die IO zugreifen möchtest, musst du SPID verwenden." @@ -619,6 +641,23 @@ authentication: headerTitle: "Du hast keinen SPID?" contentTitle: "Was ist SPID?" subtitle: "SPID ist sicher" + opt_in: + contextualHelpTitle: "Authentifizierung" + contextualHelpContent: "Hier findest du Informationen darüber, wie du dich bei IO authentifizieren kannst, sowie einige Sicherheitstipps." + news: "Neu" + title: "Ab sofort kannst du leichter auf IO zugreifen" + identity_check: "Du musst dich nicht mehr alle 30 Tage mit SPID oder CIE authentifizieren, sondern nur noch einmal im Jahr oder wenn du die App verlässt" + security_suggests: "Einige Sicherheitstipps" + passcode: "In allen anderen Fällen reicht dein Gesicht, dein Fingerabdruck oder dein Entsperrcode aus." + notification: "Du erhältst bei jedem neuen Zugang eine E-Mail. Wenn du diese nicht erkennst, kannst dz den Zugang zu IO sperren." + button_accept_lv: "Ja, Schnellzugriff einrichten" + button_decline_lv: "Nein, ich möchte mich alle 30 Tage neu anmelden" + security_suggestions: + fingerprint: "Gib deinen biometrischen Erkennungs- oder Entsperrcode nicht an Dritte weiter." + io_logout: "Wenn du dieses Gerät verlierst, beende IO über die Website" + io_lock_access: "Wenn du glaubst, dass deine SPID- oder CIE-Anmeldedaten kompromittiert wurden, blockiere den Zugriff auf IO über die Website" + access_new_device: "Wenn du mit einem fremden Gerät auf IO zugreifst, denk daran, dich bei der App abzumelden." + navigate_to_the_site: "Website besuchen" idp_selection: headerTitle: "Home" contentTitle: "Wähle deinen Identitätsanbieter" @@ -652,11 +691,52 @@ authentication: error_1001: "Zugang verweigert: Du hast nicht das Mindestalter für die Nutzung von IO" expiredSessionBanner: title: "Sicherheitshinweis" + message: "Um deine privaten Daten zu schützen, melde dich bitte erneut mit deinen SPID-Anmeldedaten an, danke!" + unlock: + title: "Zugang entsperren" + subtitlel2: "Um die App nutzen zu können, müsst du zunächst den Zugang zu IO entsperren." + subtitlel3: "Um mit all deinen SPID-Anmeldedaten oder deiner CIE auf die App zugreifen zu können, musst du den Zugang entsperren." + learnmore: "Mehr erfahren" + loginIO: "Schließen" + unlockmodal: + title: "Was bedeutet das?" + description1_1: "Wenn du den Zugang zu IO aus Sicherheitsgründen gesperrt hast, musst du ihn zunächst entsperren, um die App wieder öffnen zu können." + description1_2: "Alternativ kannst du die App auch über ein Login mit der" + description1_3: "höchsten Sicherheitsstufe öffnen." + description1_4: "Diese Art der Authentifizierung erfordert einen Benutzernamen, ein Passwort und ein physisches Medium, wie z.B. eine CIE." + title2: "Wie man den Zugang zu IO entsperrst" + listitem1: "Stell sicher, dass du deine digitale Identität abgesichert hast, indem du deine Anmeldedaten bei deinem Identitätsanbieter änderst." + listitem2_1: "Greif über das Internet auf IO zu, indem du deine SPID-Anmeldedaten oder deine CIE verwendest." + listitem2_2: "Geh zur Website" + listitem3_1: "Geh zum Abschnitt" + listitem3_2: "IO-Zugang entsperren" + listitem3_3: "und folge den angegebenen Schritten. Wenn du dazu aufgefordert wirst, gib den" + listitem3_4: "Wiederherstellungscode" + listitem3_5: "ein, um den Vorgang zu bestätigen." email: + cduScreens: + validateMail: + title: "Du hast deine E-Mail-Adresse nicht bestätigt" + subtitle: "Um die App weiter nutzen zu können, musst du deine E-Mail-Adresse bestätigen" + editButton: "E-Mail-Adresse ändern" + validateButton: "E-Mail-Adresse bestätigen" + header: + title: "IO konfigurieren" + help: + body: "Um die App weiter nutzen zu können, musst du deine E-Mail-Adresse bestätigen" + emailAlreadyTaken: + title: "Deine E-Mail-Adresse ändern" + subtitleStart: "Deine E-Mail-Adresse" + subtitleEnd: "wird bereits auf IO verwendet; du musst eine andere eingeben, um die App weiter benutzen zu können." + editButton: "E-Mail-Adresse ändern" + header: + title: "IO konfigurieren" + help: + body: "Deine E-Mail-Adresse wird bereits auf IO verwendet; du musst eine andere eingeben, um die App weiter benutzen zu können." read: title: "Deine E-Mail-Adresse" info: "Das ist die E-Mail-Adresse, die mit deinem SPID-Konto verknüpft ist. Wenn du magst, kannst du in IO eine andere E-Mail-Adresse verwenden. Um die neue E-Mail-Adresse zu aktivieren, musst du sie bestätigen, indem du auf den Link klickst, den du mittels E-Mail erhalten hast." - details: "Du kannst diese Adresse ändern, die du dann mittels Link, den du als E-Mail erhälst, bestätigen musst. In der Zwischenzeit werden IO-Funktionen, die von E-Mails abhängig sind (Zahlungen, Weiterleitung von Nachrichten usw.), deaktiviert." + details: "Du kannst diese Adresse ändern, die du dann mittels Link, den du als E-Mail erhältst, bestätigen musst. In der Zwischenzeit werden IO-Funktionen, die von E-Mails abhängig sind (Zahlungen, Weiterleitung von Nachrichten usw.), deaktiviert." alert: "Achtung: dein pagoPA Konto ist mit deiner E-Mail-Adresse verknüpft. Wenn du sie änderst, wird IO deine registrierten Zahlungsmethoden und Transaktionen nicht mehr auflisten." help: "Dein SPID-Profil übermittelt deine E-Mail-Adresse an die IO-App. Sollte die Adresse falsch sein oder nicht mehr verwendet werden, kannst du sie direkt in deinem SPID-Konto bearbeiten." insert: @@ -667,6 +747,9 @@ email: alert: "Du verwendest bereits diese E-Mail-Adresse" help: title: "E-Mail" + alertTitle: "Diese E-Mail-Adresse wird bereits verwendet" + alertDescription: "Dies kann der Fall sein, wenn du mit einem Familienmitglied die gleiche Adresse teilst" + alertButton: "Andere E-Mail-Adresse verwenden" newinsert: header: "IO konfigurieren" title: "Wie lautet Ihre E-Mail?" @@ -699,6 +782,16 @@ email: validation_ok: "Deine E-Mail-Adresse wurde bestätigt. Du kannst nun alle Funktionen von IO benutzen." validated: "E-Mail bestätigt!" validated_ok: "Danke, jetzt kannst du alle Zahlungsfunktionen, Nachrichtenweiterleitung usw. nutzen." + newvalidate: + title: "Bestätige deine E-Mail-Adresse" + subtitle: "Folge den Anweisungen, die an folgende Adresse gesendet wurden:" + link: "Ist sie nicht korrekt?" + buttonlabelsent: "E-Mail gesendet" + buttonlabelsentagain: "E-Mail erneut senden" + toast: "Erledigt! Prüf deinen Posteingang." + newvalidemail: + title: "E-Mail bestätigt!" + subtitle: "Du empfängst IO-Mitteilungen unter:" onboarding: contextualHelpTitle: "Wie funktioniert die biometrische Erkennung" tos: @@ -714,7 +807,7 @@ onboarding: pin: headerTitle: "IO einrichten" title: "Entsperrcode" - subTitle: "Es ist ein 6-stelliger Code den du benötigst, um in IO einzusteigen und einige In-App-Operationen zu bestätigen. Falls dein Gerät dies unterstützt, kannst du ihn später durch biometrische Daten ersetzen." + subTitle: "Es ist ein 6-stelliger Code den du benötigst, um in IO einzusteigen und einige In-App-Vorgänge zu bestätigen. Falls dein Gerät dies unterstützt, kannst du ihn später durch biometrische Daten ersetzen." pinLabel: "Lege einen Entsperrcode fest" pinConfirmationLabel: "Wiederhole den Entsperrcode" tutorial: "Du kannst den Code jederzeit unter Profil > Sicherheit abändern" @@ -843,7 +936,41 @@ payment: description: "IO hat keine Zahlungsversuche gespeichert. Hier findest du deine letzten Zahlungsversuche" title: "Zahlungsversuche" iuv: "Einheitlicher Zahlungskodex (IUV) {{iuv}}" + confirm: + totalAmount: "Zu zahlender Gesamtbetrag" + pay: "Zahle " + payWith: "Zahle mit " + fee: "Kommission " + feeAppliedBy: "Angewandt von: " + editButton: "Ändern" + termsAndConditions: "Wenn du fortfährst, erklärst du folgende Informationen gelesen und verstanden zu haben: " + termsAndConditionsLink: "Nutzungsbedingungen und Datenschutzrichtlinie" + loading: + title: "Die Informationen zur Zahlung werden geladen" wallet: + methodDetails: + cobadgeTitle: "Debitkarte" + cardGeneric: "Karte" + a11y: + credit: + hpan: "{{circuit}} mit der Endung {{spacedHpan}}" + owner: "lautend auf: {{fullOwnerName}}" + paypal: + owner: "Konto: {{email}}" + bpay: + phone: "Mobiltelefonnummer: {{phoneNumber}}" + owner: "lautend auf: {{fullOwnerName}}" + bancomat: + bank: "PagoBANCOMAT-Karte {{bankName}}" + owner: "lautend auf: {{fullOwnerName}}" + cobadge: + bank: "Kreditkarte {{bankName}}" + owner: "lautend auf: {{fullOwnerName}}" + expired: "Die Zahlungsmethode ist abgelaufen und kann nicht mehr für In-App-Zahlungen verwendet werden." + isSupportedBanner: + title: "Möchtest du in der App bezahlen?" + content: "Finde heraus, welche Zahlungsmethoden du in dein Konto aufnehmen kannst." + cta: "Mehr erfahren" wallet: "Konto" refreshWallet: "Konto aktualisieren" favourite: @@ -904,6 +1031,10 @@ wallet: cardsPreview: "Vorschau der Zahlungsmethoden. Aktiviere, um die Liste deiner Zahlungsmethoden aufzurufen" cardHolder: "Karteninhaber" onboarding: + paymentMethodsList: + header: + title: "Zahlungsmethode hinzufügen" + subtitle: "Die Zahlungsmethode wird gespeichert und kann verwendet werden, um In-App-Zahlungen vorzunehmen oder kompatiblen Initiativen beizutreten." bancomat: headerTitle: "PagoBANCOMAT-Karte hinzufügen" koTimeout: @@ -1028,6 +1159,32 @@ wallet: success: title: "Die Karte wurde hinzugefügt!" continueButton: "Weiter" + failure: + GENERIC_ERROR: + title: "Es ist ein unerwarteter Fehler aufgetreten" + subtitle: "Versuche es erneut oder kontaktiere den Support" + primaryAction: "Schließen" + AUTH_ERROR: + title: "Autorisierung verweigert" + subtitle: "Vergewissere dich, dass du die Anweisungen deiner Bank oder Zahlungsapp korrekt befolgt hast." + primaryAction: "Schließen" + secondaryAction: "Mehr erfahren" + TIMEOUT: + title: "Die Sitzung ist abgelaufen" + subtitle: "Zu deiner Sicherheit hast du nur eine begrenzte Zeit, um den Vorgang abzuschließen." + primaryAction: "Schließen" + CANCELED_BY_USER: + title: "Der Vorgang wurde abgebrochen" + subtitle: "" + primaryAction: "Schließen" + INVALID_SESSION: + title: "Es ist ein unerwarteter Fehler aufgetreten" + subtitle: "Versuche es erneut oder kontaktiere den Support" + primaryAction: "Schließen" + ALREADY_ONBOARDED: + title: "Du hast diese Zahlungsmethode bereits hinzugefügt" + subtitle: "" + primaryAction: "Schließen" alert: supportedCardPageLinkError: "Beim Öffnen der Übersichtsseite der unterstützten Karten ist ein Fehler aufgetreten." msgErrorUpdateApp: "Beim Öffnen des App-Stores ist ein Fehler aufgetreten" @@ -1158,6 +1315,7 @@ wallet: bottomSheetTitle: "Warum kann ich nicht mit dieser Zahlungsmethode bezahlen?" bottomSheetDescription: "Die Funktion “In-App-Zahlungen” ist möglicherweise deaktiviert. Bevor du versuchst, die Zahlung erneut vorzunehmen, gehe bitte wie folgt vor:\n\n1. gehe zum Bereich “Konto”;\n2. wähle die gewünschte Zahlungsmethode aus;\n3. aktiviere “In-App-Zahlungen”." firstTransactionSummary: + loading: "Informationen werden abgerufen" title: "Zahlungsdetails" amount: "Betrag" total: "Insgesamt bezahlt" @@ -1239,6 +1397,8 @@ wallet: bottomSheetTitle: "Warum kann ich nicht in der App bezahlen?" bottomSheetBody: "Diese Zahlungsmethode ist nicht für Online-Zahlungen geeignet." bottomSheetCTA: "Entdecke die unterstützten Zahlungsmethoden" + operationCompleted: "Vorgang abgeschlossen!" + operationError: "Deaktivierung fehlgeschlagen" bonus: name: "Rabatte, Boni und andere Initiativen" description: "Initiativen von öffentlichen Verwaltungen zur Unterstützung von Ausgaben oder Dienstleistungen im Zusammenhang mit Zahlungen" @@ -1336,7 +1496,7 @@ wallet: EC: "Die Körperschaft hat Probleme bei der Beantwortung" ONGOING: "Die Zahlung ist bereits im Gange, bitte versuche es in ein paar Minuten erneut." ONGOING_SUBTITLE: "Wenn es zu lange her ist, lasse es uns wissen!" - REVOKED: "Die Körperschaft hat diese Zahlungsmitteilung zurückgezogen" + REVOKED: "Die Körperschaft hat diese Zahlungsmitteilung widerrufen" EXPIRED: "Die Zahlungsmitteilung ist abgelaufen und kann nicht mehr gezahlt werden" GENERIC_ERROR: "Ein unerwarteter Fehler ist aufgetreten" GENERIC_ERROR_SUBTITLE: "Bitte versuche es erneut oder kontaktiere uns." @@ -1394,7 +1554,7 @@ wallet: description: "Lösche die Karte aus deinem Konto und versuche, sie erneut hinzuzufügen. Vergewissere dich, dass die eingegebenen Daten genau mit denen auf der Karte übereinstimmen." code4: title: "Prüfe deine E-Mails" - description: "Es war nicht möglich, das Ergebnis der Zahlung zu überprüfen. Wenn sie erfolgreich war, erhälst du in Kürze eine E-Mail mit der Quittung. Solltest du die E-Mail nicht erhalten, wende dich bitte an den Support." + description: "Es war nicht möglich, das Ergebnis der Zahlung zu überprüfen. Wenn sie erfolgreich war, erhältst du in Kürze eine E-Mail mit der Quittung. Solltest du die E-Mail nicht erhalten, wende dich bitte an den Support." code7: title: "Es liegt ein Problem mit deiner Karte vor" description: "Es wurde kein Betrag abgebucht. Für weitere Informationen wende dich bitte an deine Bank." @@ -1425,10 +1585,45 @@ wallet: description1: "Wir senden eine Quittung an" description2: "Du kannst sie auch in deinem Konto finden." abortWebView: - title: "Möchtest du die aktuelle Operation abbrechen?" + title: "Möchtest du den aktuellen Vorgang abbrechen?" confirm: "Ja, beenden" cancel: "Nein, fortfahren" success: "Probleme beim Hinzufügen? Wende dich an deine Bank." + payment: + barcodes: + choice: + title: "Es wurden mehrere Codes entdeckt. Welchen möchtest du verwenden?" + manual: + noticeNumber: + title: "Gib den Zahlungskodex ein" + subtitle: "Er hat 18 Ziffern und ist neben dem QR-Code zu finden." + placeholder: "Zahlungskodex" + fiscalCode: + title: "Gib die Steuernummer der Körperschaft ein" + subtitle: "Sie hat 11 Ziffern und ist neben dem QR-Code zu finden." + placeholder: "Steuernummer der Körperschaft" + psp: + title: "Wähle, von wem die Zahlung abgewickelt werden soll" + description: "Jeder Zahlungsdienstleister (PSP) schlägt eine Provision vor." + taxDescription: "In dieser Liste findest du alle kompatiblen Anbieter," + taxDescriptionBold: "auch wenn du nicht deren Kunde bist." + defaultName: "Anbieter (PSP)" + pspTitle: "Anbieter (PSP)" + pspSortButton: "Sortieren" + featuredReason: "Weil du bereits Kunde bist" + continueButton: "Weiter" + sortBottomSheet: + default: "Standard" + amount: "Nach Betrag" + name: "Nach Name" + outcome: + SUCCESS: + title: "Du hast {{amount}} bezahlt" + button: "OK, schließen" + banner: + title: "Kannst du uns sagen, wie es lief?" + content: "Erzähl uns von deinen Erfahrungen mit der Zahlung und hilf uns, uns zu verbessern." + action: "Weiter zur Umfrage" saveCard: saveCard: "Karte speichern" header: "Möchtest du diese Karte speichern?" @@ -1493,13 +1688,6 @@ messages: expiredAlert: block1: "Abgelaufen am " block2: "um " - prescription: - expiringOrValidAlert: - block1: "Verfällt am " - block2: "um " - expiredAlert: - block1: "Abgelaufen am " - block2: "um " pay: "Bezahle {{amount}} €" onlyPay: "Bezahlen" paid: "Bezahlt" @@ -1545,17 +1733,6 @@ messages: emptyMessage: title: "Du hast keine Fälligkeiten." subtitle: "Über die Schaltfläche oben kannst du die bereits abgelaufenen Fristen einsehen." - medical: - not_available: "N/A" - prescription: "Elektronische Verschreibung" - memo: "Erinnerung für die betreute Person" - nre: "Elektronische Verschreibungsnummer" - iup: "Eindeutige Buchungsnummer" - patient_fiscal_code: "Steuernummer der betreuten Person" - prescriber_fiscal_code: "Steuernummer des Arztes" - barcodes: "Barcodes" - nationalService: "Nationaler Gesundheitsdienst" - note: "ausgestellt im Sinne des Art. 11, Abs. 16 des Gesetzesdekretes vom 31. Mai 2010, Nr. 78 und des Art. 1, Abs. 4 des Ministerialdekretes vom 2 November 2011" pagination: migration: started: "Bitte warte, wir aktualisieren den Mitteilungsbereich" @@ -1585,6 +1762,9 @@ messageDetails: sendEmail: "Sende eine E-Mail" write: "Schreibe uns" id: "ID:" + remoteContentError: + title: "Die Details der Mitteilung konnten nicht abgerufen werden" + body: "Wir haben einen Fehler in den von der Körperschaft bereitgestellten Informationen gefunden. Bitte versuche es in ein paar Minuten erneut. Wenn das Problem weiterhin besteht, wende dich bitte an den Support." attachments: loading: "Laden des Dokuments..." badFormat: "Das Format des Anhangs wird nicht unterstützt. Kontaktiere den Absender" @@ -1597,6 +1777,14 @@ messageDetails: thirdPart: " für weitere Informationen." failing: details: "Der Anhang konnte nicht heruntergeladen werden. Bitte versuche es erneut oder öffne eine Ticket" + banner: + content1: "Das ist eine" + content2: "dynamische Mitteilung:" + content3: "der Inhalt kann sich im Laufe der Zeit ändern, damit du aktuelle Informationen erhältst." + action: "Mehr erfahren" + bottomSheet: + title: "Was ist eine dynamische Mitteilung?" + body: "Die versendende Körperschaft kann den Inhalt dieser Nachricht auch nach dem Versand aktualisieren, um sicherzustellen, dass die Informationen stets korrekt und relevant sind.\n\n Dies geschieht in bestimmten Fällen, wie z. B. bei der Aktualisierung veralteter Informationen oder nicht mehr gültiger Anlagen.\n\n Wenn die Körperschaft dich über neue Informationen oder wichtige Aktualisierungen informieren muss, wird sie dies mittels einer neuen Mitteilung tun." messagePDFPreview: title: "PDF-Vorschau" singleBtn: "Speichern oder freigeben" @@ -1626,7 +1814,7 @@ send_email_messages: options: disable_all: label: "Für alle Dienste deaktivieren" - info: "Du erhälst keine Mitteilung mittels E-Mail mehr" + info: "Du erhältst keine Mitteilung mittels E-Mail mehr" enable_all: label: "Für alle aktiven Dienste aktivieren" info: "Jede Mitteilung wird an deine E-Mail-Adresse weitergeleitet, wenn der Dienst dies zulässt" @@ -1661,7 +1849,7 @@ services: body: text1: "Kein Dienst wird dich kontaktieren können. Um Mitteilungen zu empfangen, musst du sie einzeln konfigurieren." bottomSheet: - title: "Wenn du bestätigst, erhälst du keine Mitteilungen" + title: "Wenn du bestätigst, erhältst du keine Mitteilungen" body: "Bei einer manuellen Konfiguration können dir weder aktuelle noch zukünftige IO-Dienste Mitteilungen senden. Damit Dienste, an denen du interessiert bist, dich kontaktieren können, musst du sie einzeln konfigurieren, indem du den Punkt “In der App kontaktieren” auf jeder Registerkarte des Dienstes aktivierst." title: "Dienste" subTitle: "Aktiviere oder deaktiviere die Dienste, die dir Mitteilungen senden dürfen" @@ -1774,31 +1962,214 @@ systemsOff: title: "IO kann nicht verwendet werden" closeApp: "Schließe die App und versuche es erneut" contextualHelp: - title: Die IO-App hilft Ihnen + title: "IO hilft dir" + sendPersonalInfo: + title: "Neues Ticket" bottomSheets: ciePin: title: "Wo finde ich meine PIN?" content: !include bottomsheets/ciePin.md bonus: + accessibility: + sectionCardLabel: "Boni und Rabatte aktualisieren" + sectionCardHint: "Aktualisiere die Liste der aktiven Boni" + state: + completed: + caption: "beendet" + description: "Diese Initiative ist beendet und kann nicht mehr beantragt werden." + bonusList: + title: "Bonus oder Rabatt hinzufügen" + contentTitle: "Wähle einen der verfügbaren Boni aus" + contextualHelp: + title: "Hinzufügen eines Bonus oder Rabatts" + body: "Hier kannst du den Bonus oder Rabatt auswählen, die du hinzufügen möchten. Sobald sie aktiviert sind, werden sie in der Rubrik “Konto” angezeigt. Du kannst die Details des Bonus oder des Rabatts jederzeit einsehen, indem du den Bereich “Konto” aufrufst und das entsprechende Element in der Liste auswählst." + request: "Beantrage einen neuen Bonus" requestLabel: "Boni und Rabatte" + requestTitle: "Anfrage" + validity_interval: "vom {{from}} bis {{to}}" + active: "Aktiv" + failed: "Fehlgeschlagen" + redeemed: "Eingelöst" + termsAndConditionFooter: "Durch Drücken von {{ctaText}} erklärst du, dass du den [Leitfaden]({{regulationLink}}) und die [Datenschutzrichtlinie]({{tosUrl}}) gelesen und verstanden hast." + tos: + title: "Datenschutzbestimmungen" + cgn: + generic: + linkError: "Die Website des Anbieters ist zur Zeit nicht erreichbar. Bitte versuche es später noch einmal." + accessibility: + code: "Durch Drücken des Elements wird der Code kopiert" + name: "Nationale Jugendkarte" + departmentName: "Präsidium des italienischen Ministerrates, Abteilung für Jugendpolitik und Zivildienst" + merchantsList: + news: "Neu" + online: "Online" + places: "Orte" + navigationTitle: "Rabatte und Ermäßigungen" + screenTitle: "Wähle einen Anbieter und entdecke Rabatte und Ermäßigungen" + cta: + filter: "Filtern" + categoriesList: + title: "Wähle eine Kategorie und entdecke Rabatte und Ermäßigungen" + filter: + title: "Anbieter filtern" + searchTitle: "Suche nach Name" + inputPlaceholder: "Suche nach Geschäft, Theater oder sonstigem" + addressTitle: "Suche nach Adresse" + addressPlaceholder: "Adresse suchen" + sliderLabel: "Entfernung, in der gesucht werden soll" + sliderUnit: "Km" + orderTitle: "Anzeigen" + categories: "Kategorien" + cta: + cancel: "Entfernen" + confirm: + zero: "Filter anwenden" + one: "({{count}}) Filter anwenden" + other: "({{count}}) Filter anwenden" + order: + byDistance: "Nach der Nähe zu deinem Standort" + byName: "Alphabetisch geordnet" + merchantDetail: + bucket: + alert: + cta: "Verstanden!" + error: + noCode: "Die Rabattcodes für diese Ermäßigung sind derzeit abgelaufen, bitte versuche es später noch einmal." + title: + deals: "Rabatte und Ermäßigungen" + description: "Beschreibung" + services: "Dienste" + addresses: "Adressen" + hours: "Öffnungszeiten" + validity: "Gültigkeit" + discountCode: "Rabattcode" + conditions: "Bedingungen" + cta: + label: "Besuche die Website des Anbieters" + landingPage: "Die Ermäßigung nutzen" + discountUrl: "Nutze die Ermäßigung" + categories: + all: "Alle Anbieter" + counting: "und weitere {{count}}" + cultureAndEntertainment: "Kultur und Freizeit" + health: "Gesundheit und Wohlbefinden" + learning: "Aus- und Weiterbildung" + sport: "Sport" + home: "Haushalt" + telco: "Telefonie und Internet" + finance: "Bank- und Finanzdienstleistungen" + travel: "Reisen und Transport" + mobility: "Nachhaltige Mobilität" + job: "Jobs und Ausbildungsplätze" + cta: + activeBonus: "Die Karte beantragen" + deactivateBonus: "Die Karte deaktivieren" + goToDetail: "Die Karte anzeigen" + detail: + cta: + buyers: "CGN Rabatte und Ermäßigungen anzeigen" + otp: "Code generieren" + eyca: + copy: "EYCA Kartennummer kopieren" + pending: "EYCA Rabatte und Ermäßigungen anzeigen" + bottomSheet: "Besuche die EYCA Website" + showEycaDiscounts: "EYCA Rabatte und Ermäßigungen anzeigen" + information: + active: "Die Karte ist aktiv und kann bis zum {{date}} verwendet werden." + warning: "Achtung! " + revoked: "Diese Karte wurde aus folgendem Grund widerrufen: {{reason}}" + expired: "Diese Karte ist am {{date}} abgelaufen" + ownership: "Wer kann die Karte benutzen?" + status: + title: "Nationale Jugendkarte (CGN)" + eyca: "EYCA Karte" + eycaCircuit: "EYCA Netzwerk" + eycaNumber: "Kartennummer" + eycaPending: "Wir verknüpfen deine nationale Jugendkarte mit einer EYCA Nummer." + eycaError: "Wir hatten Probleme mit den EYCA Systemen." + eycaBottomSheetTitle: "EYCA Kartennummer" + eycaDescription: "Bis zum Alter von 31 Jahren ist **deine nationale Jugendkarte Mitglied der EYCA** (European Youth Card Association).\n\nMit der Karte kannst du bei den teilnehmenden Händlern Rabatte und Ermäßigungen bei kulturellen Aktivitäten, beim Einkaufen, im Verkehr, in der Gastronomie und bei der Unterbringung erhalten, und zwar auch in den europäischen Ländern, die an der EYCA teilnehmen." + badge: + active: "Aktiv" + revoked: "Widerrufen" + expired: "Abgelaufen" + date: + activated: "Aktiviert am" + expired: "Abgelaufen am" + revoked: "Widerrufen am" + expiration: + cgn: "Aktiv bis" + eyca: "Aktiv bis" + activation: + eyca: + loading: + caption: "Wir bearbeiten deine Anfrage" + subCaption: "Bitte warte etwas." + error: + title: "Der EYCA-Dienst ist zurzeit nicht verfügbar." + body: "Wir entschuldigen uns für die Unannehmlichkeiten.\nBitte versuche es später noch einmal." + loading: + caption: "Wir aktivieren deine Nationale Jugendkarte" + subCaption: "Bitte warte etwas." + error: + title: "Der Dienst Nationale Jugendkarte ist derzeit nicht verfügbar." + body: "Wir entschuldigen uns für die Unannehmlichkeiten.\nBitte versuche es später noch einmal." + ineligible: + title: "Leider erfüllst du nicht die Voraussetzungen für die Nationale Jugendkarte." + body: "Die Nationale Jugendkarte ist nur für italienische und europäische Staatsbürger mit Wohnsitz in Italien im Alter von 18 bis 35 Jahren erhältlich." + timeout: + title: "Wir bearbeiten deine Anfrage." + body: "Wir werden dir eine Nachricht in der App schicken, wenn deine Jugendkarte aktiv ist." + alreadyActive: + title: "Deine Nationale Jugendkarte ist aktiv!" + body: "Du kannst die Details im Abschnitt Konto einsehen." + pending: + title: "Deine Nationale Jugendkarte wird gerade aktiviert." + body: "Du erhältst eine Nachricht, wenn sie aktiviert ist." + success: + title: "Geschafft!" + body: "Deine Nationale Jugendkarte ist aktiv." + deactivate: + toast: "Die Anfrage zur Deaktivierung war erfolgreich" + alert: + title: "Karte deaktivieren" + message: "Bist du sicher, dass du deine Nationale Jugendkarte deaktivieren möchtest? Wenn du dies bestätigst, verlierst du die Möglichkeit, die Vorteile der Initiative in Anspruch zu nehmen und die Karte wird aus deinem Konto verschwinden." + otp: + error: "Aufgrund eines technischen Problems war es uns nicht möglich, einen Rabattcode zu generieren. Bitte versuche es erneut." + code: + title: "Dein Rabattcode" + validUntil: "Noch gültig für" + minutes: + one: "1 Minute" + other: "{{minutes}} Minuten" + seconds: + one: "1 Sekunde" + other: "{{seconds}} Sekunden" features: + messages: + loading: + title: "Die Details der Mitteilung werden geladen" + subtitle: "Warte ein paar Sekunden" + updateBottomSheet: + title: "Aktualisiere die IO-App" + subtitle: "App IO Version {{value}} ist erforderlich, um diese Funktion zu nutzen. Bitte aktualisiere die App, um fortzufahren." euCovidCertificate: save: album: "IO" - noPermission: "Die IO-App hat vermutlich keine Berechtigung zum Speichern der Bilder. Bitte überprüfen Sie Ihre Geräteeinstellungen." - ok: "Das Bild wurde auf Ihrem Smartphone gespeichert" + 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: "Speichern Sie das Zertifikat" + title: "Speichere das Zertifikat" subTitle: "Auch ohne der IO-App und Internetverbindung kann das Zertifikat angezeigt werden." saveAsImage: title: "Bild in Galerie speichern" - subTitle: "Sie finden den QR-Code auch als Bild auf Ihrem Smartphone." + 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: "Erfahren Sie mehr" + learnMore: "Erfahre mehr" authorizationCode: "Autorisierungscode" messageIdentifier: "Identifizierung der Nachricht" loading: @@ -1817,21 +2188,68 @@ features: title: "Dieses Zertifikat ist abgelaufen" ko: genericError: - title: "Ihre Zertifikatsdaten konnten nicht abgerufen werden: Bitte versuchen Sie es erneut" + 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: Kontaktieren Sie den Support" + 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 versuchen Sie es später erneut" + subtitle: "Bitte versuche es später erneut" wrongFormat: - title: "Dieses Zertifikat kann nicht wiederhergestellt werden: Kontaktieren Sie den Support" + 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" + deactivate: "Deaktiviere den Dienst" + toast: + activated: "Vielen Dank, der Dienst ist aktiv!" + error: "Bei deiner Anfrage ist ein Fehler aufgetreten" + details: + title: "Details der Mitteilung" + noticeCode: "Zahlungskodex" + loadError: + title: "Etwas ist schief gelaufen" + body: "Die Details zu deiner Mitteilung konnten nicht abgerufen werden. Bitte versuche es erneut" + cancelledMessage: + body: "Dieser Bescheid wurde vom Absender gelöscht. Du kannst dessen Inhalt ignorieren." + unpaidPayments: "Für die Erstattung von Zahlungen im Zusammenhang mit diesem Bescheid wende dich bitte an den Absender." + payments: "Zahlungen" + paymentSection: + title: "pagoPA Zahlungsaufforderungen" + morePayments: "Alle Zahlungsaufforderungen anzeigen" + bottomSheetTitle: "Welche Zahlungsaufforderung möchtest du bezahlen?" + attachmentsSection: + title: "Anhänge" + f24Section: + title: "F24-Formulare" + description: "Wenn du es vorziehst, kannst du diesen Bescheid über F24 bezahlen." + showAll: "F24-Formulare anzeigen" + bottomSheet: + title: "Beiliegende F24-Formulare" + infoSection: + title: "Informationen zum Bescheid" + iun: "IUN-Code" + timeline: + title: "STATUS DES BESCHEIDS" + status: + DELIVERED: "Zugestellt" + DELIVERING: "In Zustellung" + UNREACHABLE: "Empfänger nicht auffindbar" + PAID: "Bezahlt" + ACCEPTED: "Hinterlegt" + EFFECTIVE_DATE: "Abgeschlossen wegen Ablaufs der Hinterlegungsfrist" + VIEWED: "Gelesen" + REFUSED: "VERWEIGERT" + CANCELLED: "Annulliert" + expand: "Vorherigen Status anzeigen" + info: "Über die Web-Version des Dienstes kannst du die Details zu jedem Status, die Annahmebestätigung und den Zustellnachweis, die gegenüber Dritten geltend gemacht werden können, einsehen" + cta: "Zugang zur Webversion" support: ticketList: noTicket: @@ -1867,6 +2285,8 @@ support: stockValue: "Einschließlich des Fehlers, den du gerade erhalten hast" card: "Angaben zur Zahlungsmethode" cardValue: "Nummer (verschlüsselt), Ablaufdatum, Zahlungsnetzwerk" + fci: "Identifikation der Signaturanfrage" + fciValue: "Um die aktuelle Anfrage zu prüfen" prominentDisclosure: "Zugriff auf die Galerie des Geräts" prominentDisclosureData: "Zum Hochladen von Fotos und Screenshots" header: "Erstelle ein Ticket" @@ -1888,3 +2308,105 @@ support: subCategory: "Kannst du uns mehr Details nennen?" subTitle: category: "Hilf uns, besser zu verstehen, wie wir dir helfen können, indem du den Bereich deines Problems auswählst: Wir werden uns so schnell wie möglich während der Geschäftszeiten bei dir melden." +barcodeScan: + error: "IO kann diesen Code nicht erkennen" + tabs: + scan: "Scannen" + upload: "Hochladen" + input: "Eingeben" + a11y: + scan: "Scannen, 1 von 3" + upload: "Hochladen, 2 von 3" + input: "Eingeben, 3 von 3" + upload: + image: "Ein Bild hochladen" + file: "Eine Datei hochladen" + manual: + authorize: "Eine Transaktion genehmigen" + notice: "Eine pagoPA-Mitteilung bezahlen" + permissions: + undefined: + title: "Wir brauchen deine Zustimmung" + label: "Erlaube den Zugriff, um QR-Codes mit der Kamera deines Geräts scannen zu können." + action: "Zugriff gewähren" + denied: + title: "Du hast den Zugriff verweigert, die Kamera zu benutzen" + label: "Um den Zugriff zu gewähren, geh zu den Einstellungen deines Betriebssystems." + action: "Zu den Einstellungen" + multipleResultsAlert: + title: "Du hast mehrere Codes gescannt" + body: "Scanne nur einen Code auf einmal" + action: "Erneut versuchen" +unsupportedDevice: + warning: "Dein Gerät könnte bald nicht mehr mit IO kompatibel sein." + title: "Dieses Gerät ist nicht mehr kompatibel mit IO" + subtitle: "Stell sicher, dass dein Betriebssystem auf die neueste Version aktualisiert ist. Wenn dies bereits der Fall ist, musst du dich von einem anderen Gerät aus anmelden, um IO weiter nutzen zu können." + cta: + faq: "Warum?" +fastLogin: + userInteraction: + sessionExpired: + noPin: + title: "Es ist zu lange her!" + subtitle: "Aus Sicherheitsgründen musst du dich erneut mit SPID oder CIE authentifizieren. Anschließend kannst du die IO-Konfiguration dort fortsetzen, wo du aufgehört hast." + submitButtonTitle: "Fortfahren" + continueNavigation: + title: "Deine Sitzung ist abgelaufen" + subtitle: "Um die App weiter zu verwenden, drück auf “Fortsetzen”." + submitButtonTitle: "Fortsetzen" + cancelButtonTitle: "Abbrechen" + transientError: + title: "Wir konnten dich nicht authentifizieren" + subtitle: "Schließ die App und versuche es in ein paar Minuten erneut." + submitButtonTitle: "Zu den FAQ" + whatsNew: + title: "Wir haben den Zugang zu IO verbessert!" + subtitle: "Du musst dich jetzt nur noch einmal im Jahr mit deinem SPID oder deiner CIE authentifizieren. Danach brauchst du dich nur noch mit deinem Entsperrcode oder biometrischen Merkmalen anmelden." + changes: + first: + title: "Einfacher" + description: "Zugang nur durch Eingabe des Entsperrcodes der App oder mit biometrischen Merkmalen." + second: + title: "Schneller" + description: "Wir werden dich nur einmal im Jahr oder wenn du dich aus der App ausloggst auffordern, dich mit SPID oder CIE zu authentifizieren." + third: + title: "Sicherer" + description: "Jedes Mal, wenn du dich erneut mit SPID oder CIE anmeldest, senden wir dir eine E-Mail." +whatsNew: + title: "Was ändert sich?" +bonusCard: + validUntil: "Gültig bis {{endDate}}" + expiring: "Verfällt am {{endDate}}" + paused: "In Pause" + removed: "Entfernt" +transaction: + details: + title: "Details zur Transaktion" + totalAmount: "Insgesamt" + totalFee: "Der Gesamtbetrag umfasst " + totalFeePsp: "Provision, berechnet von {{pspName}}" + info: + title: "Informationen zur Transaktion" + pspName: "Zahlungsdienstleister (PSP)" + dateAndHour: "Datum und Uhrzeit" + transactionId: "Transaktions-ID" + operation: + amount: "Betrag" + creditor: "Gläubiger" + debtor: "Schuldner" + iuv: "IUV" + subject: "Zahlungsgrund" +permissionRequest: + gallery: + title: "Erlaube IO den Zugriff auf deine Fotos" + subtitle: "Dazu musst du die Rechte in den Einstellungen deines Geräts ändern." + caption: "So geht's:" + step: "Schritt {{step}}" + steps: + android: + 1: "Geh zu “Einstellungen”" + 2: "Wähle “Apps”" + 3: "Wähle “IO”" + 4: "Wähle den Punkt App-Berechtigungen" + 5: "Lass den Zugriff auf Dateien und Medien zu" + cta: "Öffne Einstellungen" diff --git a/locales/en/authentication/authentication_idp_login.md b/locales/en/authentication/authentication_idp_login.md index a004c2b0733..60a83534a25 100644 --- a/locales/en/authentication/authentication_idp_login.md +++ b/locales/en/authentication/authentication_idp_login.md @@ -1,2 +1,2 @@ -**In the log in page, you are asked to enter your Fiscal Code and password.** Your password is the alphanumeric code that you set when you activated your SPID identity. +**In the log in page, you are asked to enter your password.** Your password is the alphanumeric code that you set when you activated your SPID identity. If you don’t remember it, please select password recovery to start the related procedure with your specific Identity Provider. diff --git a/locales/en/index.yml b/locales/en/index.yml index 25174785e13..6424837dac6 100644 --- a/locales/en/index.yml +++ b/locales/en/index.yml @@ -424,16 +424,17 @@ profile: description: Learn more about the IO app contextualHelpContent: !include profile/profile_appinfo_main.md developersSectionHeader: Developers + testEnvironmentSectionHeader: Test Environment pagoPaEnvironment: - pagoPaEnv: pagoPA Test Environment + pagoPaEnv: pagoPA pagoPAEnvAlert: This change requires app reboot alertConfirmTitle: Do you want to use the pagoPA test environment? alertConfirmMessage: If you enable the pagoPA test environment you will no longer see the history of your transactions and your saved payment methods, and you can only use payment methods expressly created for this purpose. If you don’t understand what it means not enable this feature. alertMessage: The application must be restarted for the changes to take effect. pnEnvironment: - pnEnv: PN Test Environment + pnEnv: SEND (PN) idpay: - idpayTest: Test IDPay + idpayTest: IDPay idpayTestAlert: This change requires app reboot designSystemEnvironment: Experimental Design System appVersion: Version @@ -447,7 +448,7 @@ profile: message: To add a new test card, you must enable the pagoPA test environment from the settings. closeButton: Close walletPlayground: - titleSection: "New Wallet Playground" + titleSection: "New Wallet" data: title: Your data subtitle: Here you will find your personal and contact data used by the IO app. @@ -680,18 +681,18 @@ authentication: contextualHelpContent: Here you can find information on how to authenticate on IO and some security tips. news: News title: It is now easier to access! - identity_check: You’ll no longer have to authenticate with SPID or CIE not every 30 days, but only once a year or if you log out. + identity_check: You’ll no longer have to authenticate with SPID or CIE every 30 days, but only once a year or if you log out. security_suggests: Safety tips passcode: Any other time, you’ll just need your fingerprint, face recognition or unlock code. notification: Whenever there is a new authentication to IO, we'll send you an email to let you know. If it’s not you, you can remotely lock access to the app. button_accept_lv: Continue with quick access button_decline_lv: Authenticate with SPID or CIE every 30 days - security_suggestions: - fingerprint: Do not share your or unlock code or biometric recognition with anyone. + security_suggestions: + fingerprint: Do not share your unlock code or biometric recognition with anyone. io_logout: If you lose your device, log out from the web. - io_lock_access: If you fear that someone might use your SPID or CIE, remotely lock access to the app. + io_lock_access: If you fear that someone might use your SPID or CIE, lock access to the app after authenticating from the web. access_new_device: If you access IO with someone else's device, remember to log out when you are finished. - navigate_to_the_site: Learn more + navigate_to_the_site: Go to website idp_selection: headerTitle: Home contentTitle: Select your Identity Provider @@ -740,7 +741,7 @@ authentication: description1_2: Otherwise, you can access it in the app by logging in with the description1_3: maximum level of safety. description1_4: This type of authentication requires a username, password, and physical device, such as CIE. - title2: How to unlock IO access + title2: Do you want to unlock access to IO? listitem1: Make sure you have secured your digital identity by changing your login credentials with your Identity Provider. listitem2_1: Access IO from the web, using your SPID or CIE credentials. listitem2_2: Go to the site @@ -977,6 +978,17 @@ payment: description: IO didn't store any payment attempts. Here you can find last payment attempts title: Payment attempts iuv: IUV payment {{iuv}} + confirm: + totalAmount: Totale da pagare + pay: Paga + payWith: Paga con + fee: Commissione + feeAppliedBy: Applicata da + editButton: Modifica + termsAndConditions: Proseguendo dichiari di aver letto e compreso i + termsAndConditionsLink: Termini e condizioni d'uso e l'Informativa Privacy + loading: + title: Sto caricando le informazioni del pagamento wallet: methodDetails: cobadgeTitle: "Debit card" @@ -1348,6 +1360,7 @@ wallet: bottomSheetTitle: "Why can't I pay with this method?" bottomSheetDescription: "The “In app payments“ feature may be turned off.\nBefore trying to make the payment again, please do the following:\n\n1. go to the “Wallet“ section;\n2. select the payment method you want to use;\n3. enable “In app payments“." firstTransactionSummary: + loading: Recupero delle informazioni in corso title: Payment information amount: Amount total: Total paid @@ -1643,6 +1656,106 @@ wallet: title: Inserisci il codice fiscale dell’Ente Creditore subtitle: Ha 11 cifre, lo trovi vicino al codice QR. placeholder: Codice fiscale Ente Creditore + abortDialog: + title: Vuoi interrompere l'operazione? + confirm: Sì, interrompi + cancel: No, torna indietro + methodSelection: + header: Seleziona un metodo + yourMethods: I tuoi metodi + otherMethods: Altri metodi + alert: + body: "A causa dell’importo elevato, alcuni metodi non sono disponibili." + cta: "Ok, ho capito!" + missingMethodsError: + title: Aggiungi un metodo per effettuare pagamenti in app + subtitle: Il metodo verrà salvato nel Portafoglio, così la prossima volta potrai pagare più facilmente. + addMethod: Aggiungi metodo + notNow: Non ora + psp: + title: Scegli chi gestirà il pagamento + description: Ogni gestore propone una commissione. + taxDescription: In questa lista trovi tutti i gestori compatibili, + taxDescriptionBold: anche se non sei loro cliente. + defaultName: Gestore + pspTitle: Gestore + pspSortButton: Ordina + featuredReason: Perché sei già cliente + continueButton: Continua + sortBottomSheet: + default: Default + amount: Per importo + name: Per nome + failure: + PAYMENT_UNAVAILABLE: + title: "C’è un problema tecnico con questo avviso" + PAYMENT_UNKNOWN: + title: "I dati dell’avviso non sono corretti" + DOMAIN_UNKNOWN: + title: "L’Ente Creditore sta avendo problemi nella risposta" + subtitle: "Riprova più tardi. Se il problema persiste, contatta l’assistenza." + PAYMENT_ONGOING: + title: "C’è già un pagamento in corso, riprova più tardi" + subtitle: "Se il problema persiste, puoi aprire una segnalazione." + PAYMENT_EXPIRED: + title: "L’avviso è scaduto e non è più possibile pagarlo" + subtitle: "Contatta l’Ente per maggiori informazioni." + PAYMENT_CANCELED: + title: "L’Ente Creditore ha revocato questo avviso" + subtitle: "Contatta l’Ente per maggiori informazioni." + PAYMENT_DUPLICATED: + title: "Questo avviso è stato già pagato!" + GENERIC_ERROR: + title: "Si è verificato un errore imprevisto" + subtitle: "Riprova, oppure contatta l’assistenza." + PAA_PAGAMENTO_SCONOSCIUTO: + title: "Non riusciamo a trovare l’avviso" + subtitle: "L’avviso potrebbe essere stato già pagato. Per ricevere assistenza, contatta l’Ente Creditore che lo ha emesso." + outcome: + SUCCESS: + title: Hai pagato {{amount}} + button: Ok, chiudi + banner: + title: Puoi dirci com’è andata? + content: Raccontaci la tua esperienza con il pagamento e aiutaci a migliorare. + action: Vai al sondaggio + GENERIC_ERROR: + title: Si è verificato un errore imprevisto + subtitle: Non è stato addebitato alcun importo. + AUTH_ERROR: + title: Autorizzazione negata + subtitle: "Non è stato addebitato alcun importo.\nControlla di aver seguito correttamente le istruzioni della tua banca." + INVALID_DATA: + title: I dati del metodo di pagamento non sono corretti + subtitle: Se hai pagato con una carta di debito o credito, assicurati di inserire i dati come riportato sul fronte. + TIMEOUT: + title: La sessione è scaduta + subtitle: Non è stato addebitato alcun importo.\nPer la tua sicurezza, hai a disposizione un tempo limitato per completare l’operazione. + CIRCUIT_ERROR: + title: Il circuito della carta non è supportato + MISSING_FIELDS: + title: Mancano alcuni dati per procedere con il pagamento + INVALID_CARD: + title: Il metodo di pagamento è scaduto o non più valido + subtitle: Per maggiori informazioni, contatta la tua banca. + CANCELED_BY_USER: + title: L’operazione è stata annullata + subtitle: Non è stato addebitato alcun importo. + EXCESSIVE_AMOUNT: + title: Autorizzazione negata + subtitle: Non è stato addebitato alcun importo.\nProbabilmente hai sforato i limiti di spesa previsti dalla tua banca. + INVALID_METHOD: + title: Il metodo di pagamento non è supportato + support: + button: "Contatta l'assistenza" + supportTitle: Contatta l'assistenza + phone: Chiama {{phoneNumber}} + chat: Chiedi aiuto in chat + additionalDataTitle: "Dati aggiuntivi" + copyAll: Copia tutti + errorCode: Codice errore + noticeNumber: Codice avviso + entityCode: Codice Fiscale Ente saveCard: saveCard: Save the card header: Do you want to save this card? @@ -1708,13 +1821,6 @@ messages: expiredAlert: block1: Expired on block2: at - prescription: - expiringOrValidAlert: - block1: Expiring on - block2: at - expiredAlert: - block1: Expired on - block2: at pay: Pay € {{amount}} onlyPay: Pay paid: Paid @@ -1760,17 +1866,6 @@ messages: emptyMessage: title: You haven't any scheduled deadline. subtitle: Use the button above to check out past deadlines. - medical: - not_available: "n/a" - prescription: Electronic prescription - memo: Reminder for the recipient - nre: Electronic prescription number - iup: Unique booking identifier - patient_fiscal_code: Patient's fiscal code - prescriber_fiscal_code: Doctor's fiscal code - barcodes: Barcodes - nationalService: National Health Service - note: "Rilasciato ai sensi dell'art.11, comma 16 del DL 31 mag 2010, n.78 e dell’art.1, comma 4 del DM 2 nov 2011" pagination: migration: started: Please wait, we are updating the Messages section. @@ -3831,6 +3926,7 @@ whatsNew: bonusCard: validUntil: Valida fino al {{endDate}} expiring: Scade il {{endDate}} + expired: Scaduta il {{endDate}} paused: In pausa removed: Rimossa transaction: @@ -3839,6 +3935,7 @@ transaction: totalAmount: Totale totalFee: Il totale comprende totalFeePsp: di commissione, applicata da {{pspName}} + totalFeeNoPsp: "di commissione, applicata dal gestore della transazione (PSP)." info: title: Informazioni sulla transazione pspName: Gestore della transazione (PSP) @@ -3850,3 +3947,21 @@ transaction: debtor: Debitore iuv: IUV subject: Oggetto del pagamento +permissionRequest: + gallery: + title: Consenti a IO di accedere alle tue foto + subtitle: Per farlo, devi modificare le preferenze nelle impostazioni di sistema del tuo dispositivo. + caption: "Ecco come:" + step: Step {{step}} + steps: + android: + 1: Vai su “Impostazioni” + 2: Seleziona “Applicazioni” + 3: Seleziona “IO” + 4: Seleziona la voce relativa alle autorizzazioni + 5: Consenti l’accesso a file e media + ios: + 1: Vai su “Impostazioni” + 2: Seleziona “IO” + 3: Seleziona “Foto” e consenti l’accesso + cta: Apri Impostazioni diff --git a/locales/it/authentication/authentication_idp_login.md b/locales/it/authentication/authentication_idp_login.md index 61e0d6892af..296deee2ed8 100644 --- a/locales/it/authentication/authentication_idp_login.md +++ b/locales/it/authentication/authentication_idp_login.md @@ -1,3 +1,3 @@ -Per effettuare il login è necessario digitare negli appositi campi il tuo Codice Fiscale e password. -**La password è il codice alfanumerico che hai impostato al momento della creazione della tua Identità Digitale SPID.** Se non dovessi ricordarla, puoi selezionare recupero password e avviare la relativa procedura, gestita direttamente dall'Identity Provider. -Una volta inseriro CF e password, riceverai l'OTP dal tuo Identity Provider: conferma la richiesta di accesso e torna sull'app IO per proseguire l'onboarding. Troverai a questo punto una schermata che autorizza l'Identity Provider a trasmettere a IO una serie di informazioni necessarie per poterti abilitare all'utilizzo dell'app, e dei diversi servizi offerti dagli enti pubblici tramite IO: è necessario premere "autorizza" per dare il proprio consenso e proseguire il percorso di autenticazione. +La password è il codice alfanumerico che hai scelto al momento della creazione della tua Identità Digitale SPID. +Se non la ricordi, puoi recuperarla o impostare una nuova password seguendo le indicazioni del tuo Identity Provider. +Una volta inseriti i dati richiesti, riceverai un codice OTP dal tuo Identity Provider. Conferma la richiesta di accesso e torna sull'app IO per completare l’accesso. Troverai a questo punto una schermata che autorizza l'Identity Provider a trasmettere a IO una serie di informazioni necessarie per abilitarti all'utilizzo dell'app e dei vari servizi offerti dagli enti pubblici tramite IO. Premi "acconsento" per dare il tuo consenso e procedere con l’autenticazione. diff --git a/locales/it/faq/faq13.md b/locales/it/faq/faq13.md index c2920f39d48..d233787a3c3 100644 --- a/locales/it/faq/faq13.md +++ b/locales/it/faq/faq13.md @@ -1 +1 @@ -Per accedere all'app IO è necessario autorizzare il tuo Identity Provider a trasmettere alla piattaforma IO il tuo Codice Fiscale, nome, cognome, indirizzo di posta elettronica e numero di telefono cellulare. Il tuo codice fiscale non viene comunicato dall'app IO all'ente, ma ciascun ente può utilizzare l'app IO per scriverti solo se ha già i tuoi dati (e quindi una relazione con te) \ No newline at end of file +Per accedere all'app IO è necessario autorizzare il tuo Identity Provider a trasmettere alla piattaforma IO il tuo Codice Fiscale, nome, cognome, data di nascita e indirizzo di posta elettronica. Il tuo codice fiscale non viene comunicato dall'app IO all'ente, ma ciascun ente può utilizzare l'app IO per scriverti solo se ha già i tuoi dati (e quindi una relazione con te) \ No newline at end of file diff --git a/locales/it/index.yml b/locales/it/index.yml index 37865ed90ce..e90b8de05b3 100644 --- a/locales/it/index.yml +++ b/locales/it/index.yml @@ -424,16 +424,17 @@ profile: description: Per saperne di più sull'app IO contextualHelpContent: !include profile/profile_appinfo_main.md developersSectionHeader: Sviluppatori + testEnvironmentSectionHeader: Ambiente di test pagoPaEnvironment: - pagoPaEnv: Ambiente pagoPA di Test + pagoPaEnv: pagoPA pagoPAEnvAlert: La modifica richiede il riavvio dell'app alertConfirmTitle: Vuoi usare l'ambiente di test pagoPA? alertConfirmMessage: Se abiliti l'ambiente di test pagoPA non vedrai più lo storico delle tue transazioni e i tuoi metodi di pagamento salvati, e potrai usare solo metodi di pagamento espressamente creati per questo scopo. Se non ti è chiaro cosa questo significa non abilitare questa funzione. alertMessage: È necessario il riavvio dell'applicazione affinché le modifiche abbiano effetto. pnEnvironment: - pnEnv: Ambiente PN di Test + pnEnv: SEND (PN) idpay: - idpayTest: Test IDPay + idpayTest: IDPay idpayTestAlert: La modifica richiede il riavvio dell'app designSystemEnvironment: Design System sperimentale appVersion: Versione @@ -447,7 +448,7 @@ profile: message: Per aggiungere una nuova carta di test, devi abilitare l'ambiente pagoPA di test dalle impostazioni. closeButton: Chiudi walletPlayground: - titleSection: "New Wallet Playground" + titleSection: "New Wallet" data: title: I tuoi dati subtitle: Qui trovi i tuoi dati anagrafici e di contatto utilizzati da app IO @@ -680,18 +681,18 @@ authentication: contextualHelpContent: Qui puoi trovare le informazioni sulle modalità di autenticazione su IO e alcuni consigli di sicurezza. news: novità title: Ora è più facile accedere! - identity_check: Non dovrai più autenticarti con SPID o CIE non ogni 30 giorni, ma solo una volta all’anno o se esci dall’app + identity_check: Non dovrai più autenticarti con SPID o CIE ogni 30 giorni, ma solo una volta all’anno o se esci dall’app security_suggests: Alcuni consigli di sicurezza passcode: Per tutte le altre volte basterà il tuo volto, impronta o codice di sblocco notification: Riceverai un’email a ogni nuovo accesso. Se non lo riconosci, potrai bloccare l’accesso a IO. button_accept_lv: Continua con l’accesso rapido button_decline_lv: Autenticati con SPID o CIE ogni 30 giorni - security_suggestions: - fingerprint: Non condividere il tuo o codice di sblocco o riconoscimento biometrico con nessuno + security_suggestions: + fingerprint: Non condividere il tuo codice di sblocco o riconoscimento biometrico con nessuno io_logout: Se perdi il dispositivo, esci dall’app da web - io_lock_access: Se temi che qualcuno possa usare il tuo SPID o CIE, puoi bloccare l’accesso all’app + io_lock_access: Se temi che qualcuno possa usare il tuo SPID o CIE, puoi bloccare l’accesso all’app entrando dal web access_new_device: Se accedi a IO con un dispositivo di altri, ricordati di uscire dall’app quando hai finito - navigate_to_the_site: Scopri come + navigate_to_the_site: Vai al sito idp_selection: headerTitle: Home contentTitle: Scegli il tuo Identity Provider @@ -740,12 +741,12 @@ authentication: description1_2: In alternativa, è possibile entrare in app utilizzando un accesso con il description1_3: livello massimo di sicurezza. description1_4: Questo tipo di autenticazione richiede un nome utente, una password e un supporto fisico, come ad esempio la CIE. - title2: Come sbloccare l’accesso a IO + title2: Vuoi sbloccare l’accesso a IO? listitem1: Assicurati di aver messo in sicurezza la tua identità digitale, modificando le credenziali di accesso con il tuo Identity Provider. listitem2_1: Accedi a IO dal web, utilizzando le tue credenziali SPID o CIE. listitem2_2: Vai al sito listitem3_1: Vai alla sezione - listitem3_2: Sblocca accesso a IO + listitem3_2: Sblocca l'accesso a IO listitem3_3: e segui i passaggi indicati. Quando richiesto inserisci il listitem3_4: codice di ripristino listitem3_5: per confermare l’operazione. @@ -977,6 +978,17 @@ payment: description: IO non ha memorizzato tentativi di pagamento. Qui troverai i tentativi di pagamento più recenti title: Tentativi di pagamento iuv: Codice IUV {{iuv}} + confirm: + totalAmount: Totale da pagare + pay: Paga + payWith: Paga con + fee: Commissione + feeAppliedBy: Applicata da + editButton: Modifica + termsAndConditions: Proseguendo dichiari di aver letto e compreso i + termsAndConditionsLink: Termini e condizioni d'uso e l'Informativa Privacy + loading: + title: Sto caricando le informazioni del pagamento wallet: methodDetails: cobadgeTitle: "Carta di debito" @@ -1352,6 +1364,7 @@ wallet: bottomSheetTitle: "Perché non riesco a pagare con questo metodo?" bottomSheetDescription: "La funzionalità “Pagamenti in app” potrebbe essere disattivata.\nPrima di riprovare ad effettuare il pagamento, procedi come segue:\n\n1. vai nella sezione “Portafoglio”;\n2. seleziona il metodo di pagamento che vuoi utilizzare;\n3. abilita “Pagamenti in app”." firstTransactionSummary: + loading: Recupero delle informazioni in corso title: Dati del pagamento amount: Importo total: Totale pagato @@ -1643,6 +1656,106 @@ wallet: title: Inserisci il codice fiscale dell’Ente Creditore subtitle: Ha 11 cifre, lo trovi vicino al codice QR. placeholder: Codice fiscale Ente Creditore + abortDialog: + title: Vuoi interrompere l'operazione? + confirm: Sì, interrompi + cancel: No, torna indietro + methodSelection: + header: Seleziona un metodo + yourMethods: I tuoi metodi + otherMethods: Altri metodi + alert: + body: "A causa dell’importo elevato, alcuni metodi non sono disponibili." + cta: "Ok, ho capito!" + missingMethodsError: + title: Aggiungi un metodo per effettuare pagamenti in app + subtitle: Il metodo verrà salvato nel Portafoglio, così la prossima volta potrai pagare più facilmente. + addMethod: Aggiungi metodo + notNow: Non ora + psp: + title: Scegli chi gestirà il pagamento + description: Ogni gestore propone una commissione. + taxDescription: In questa lista trovi tutti i gestori compatibili, + taxDescriptionBold: anche se non sei loro cliente. + defaultName: Gestore + pspTitle: Gestore + pspSortButton: Ordina + featuredReason: Perché sei già cliente + continueButton: Continua + sortBottomSheet: + default: Default + amount: Per importo + name: Per nome + failure: + PAYMENT_UNAVAILABLE: + title: "C’è un problema tecnico con questo avviso" + PAYMENT_UNKNOWN: + title: "I dati dell’avviso non sono corretti" + DOMAIN_UNKNOWN: + title: "L’Ente Creditore sta avendo problemi nella risposta" + subtitle: "Riprova più tardi. Se il problema persiste, contatta l’assistenza." + PAYMENT_ONGOING: + title: "C’è già un pagamento in corso, riprova più tardi" + subtitle: "Se il problema persiste, puoi aprire una segnalazione." + PAYMENT_EXPIRED: + title: "L’avviso è scaduto e non è più possibile pagarlo" + subtitle: "Contatta l’Ente per maggiori informazioni." + PAYMENT_CANCELED: + title: "L’Ente Creditore ha revocato questo avviso" + subtitle: "Contatta l’Ente per maggiori informazioni." + PAYMENT_DUPLICATED: + title: "Questo avviso è stato già pagato!" + GENERIC_ERROR: + title: "Si è verificato un errore imprevisto" + subtitle: "Riprova, oppure contatta l’assistenza." + PAA_PAGAMENTO_SCONOSCIUTO: + title: "Non riusciamo a trovare l’avviso" + subtitle: "L’avviso potrebbe essere stato già pagato. Per ricevere assistenza, contatta l’Ente Creditore che lo ha emesso." + outcome: + SUCCESS: + title: Hai pagato {{amount}} + button: Ok, chiudi + banner: + title: Puoi dirci com’è andata? + content: Raccontaci la tua esperienza con il pagamento e aiutaci a migliorare. + action: Vai al sondaggio + GENERIC_ERROR: + title: Si è verificato un errore imprevisto + subtitle: Non è stato addebitato alcun importo. + AUTH_ERROR: + title: Autorizzazione negata + subtitle: "Non è stato addebitato alcun importo.\nControlla di aver seguito correttamente le istruzioni della tua banca." + INVALID_DATA: + title: I dati del metodo di pagamento non sono corretti + subtitle: Se hai pagato con una carta di debito o credito, assicurati di inserire i dati come riportato sul fronte. + TIMEOUT: + title: La sessione è scaduta + subtitle: Non è stato addebitato alcun importo.\nPer la tua sicurezza, hai a disposizione un tempo limitato per completare l’operazione. + CIRCUIT_ERROR: + title: Il circuito della carta non è supportato + MISSING_FIELDS: + title: Mancano alcuni dati per procedere con il pagamento + INVALID_CARD: + title: Il metodo di pagamento è scaduto o non più valido + subtitle: Per maggiori informazioni, contatta la tua banca. + CANCELED_BY_USER: + title: L’operazione è stata annullata + subtitle: Non è stato addebitato alcun importo. + EXCESSIVE_AMOUNT: + title: Autorizzazione negata + subtitle: Non è stato addebitato alcun importo.\nProbabilmente hai sforato i limiti di spesa previsti dalla tua banca. + INVALID_METHOD: + title: Il metodo di pagamento non è supportato + support: + button: "Contatta l'assistenza" + supportTitle: Contatta l'assistenza + phone: Chiama {{phoneNumber}} + chat: Chiedi aiuto in chat + additionalDataTitle: "Dati aggiuntivi" + copyAll: Copia tutti + errorCode: Codice errore + noticeNumber: Codice avviso + entityCode: Codice Fiscale Ente saveCard: saveCard: Salva la carta header: Vuoi salvare questa carta? @@ -1708,13 +1821,6 @@ messages: expiredAlert: block1: Scaduto il block2: alle ore - prescription: - expiringOrValidAlert: - block1: Scade il - block2: alle - expiredAlert: - block1: Scaduta il - block2: alle pay: Paga € {{amount}} onlyPay: Paga paid: Pagato @@ -1760,17 +1866,6 @@ messages: emptyMessage: title: Non hai scadenze in programma. subtitle: Usa il pulsante qui sopra per vedere le scadenze già trascorse. - medical: - not_available: "n/a" - prescription: Ricetta elettronica - memo: Promemoria per l'assistito - nre: Numero Ricetta Elettronica - iup: Identificativo Unico Prenotazione - patient_fiscal_code: Codice Fiscale dell'assistito - prescriber_fiscal_code: Codice fiscale del medico - barcodes: Codici a barre - nationalService: Servizio Sanitario Nazionale - note: "Rilasciato ai sensi dell'art.11, comma 16 del DL 31 mag 2010, n.78 e dell’art.1, comma 4 del DM 2 nov 2011" pagination: migration: started: "Attendi, stiamo aggiornando la sezione messaggi" @@ -3831,6 +3926,7 @@ whatsNew: bonusCard: validUntil: Valida fino al {{endDate}} expiring: Scade il {{endDate}} + expired: Scaduta il {{endDate}} paused: In pausa removed: Rimossa transaction: @@ -3839,6 +3935,7 @@ transaction: totalAmount: Totale totalFee: Il totale comprende totalFeePsp: di commissione, applicata da {{pspName}} + totalFeeNoPsp: "di commissione, applicata dal gestore della transazione (PSP)." info: title: Informazioni sulla transazione pspName: Gestore della transazione (PSP) @@ -3850,3 +3947,21 @@ transaction: debtor: Debitore iuv: IUV subject: Oggetto del pagamento +permissionRequest: + gallery: + title: Consenti a IO di accedere alle tue foto + subtitle: Per farlo, devi modificare le preferenze nelle impostazioni di sistema del tuo dispositivo. + caption: "Ecco come:" + step: Step {{step}} + steps: + android: + 1: Vai su “Impostazioni” + 2: Seleziona “Applicazioni” + 3: Seleziona “IO” + 4: Seleziona la voce relativa alle autorizzazioni + 5: Consenti l’accesso a file e media + ios: + 1: Vai su “Impostazioni” + 2: Seleziona “IO” + 3: Seleziona “Foto” e consenti l’accesso + cta: Apri Impostazioni diff --git a/package.json b/package.json index 7c9fcb04fcc..fd4d0b1467a 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "italia-app", - "version": "2.48.0-rc.5", + "version": "2.51.0-rc.1", "io_backend_api": "https://raw.githubusercontent.com/pagopa/io-backend/v13.25.1-RELEASE/api_backend.yaml", "io_public_api": "https://raw.githubusercontent.com/pagopa/io-backend/v13.25.1-RELEASE/api_public.yaml", "io_content_specs": "https://raw.githubusercontent.com/pagopa/io-services-metadata/1.0.29/definitions.yml", "io_bonus_vacanze_specs": "https://raw.githubusercontent.com/pagopa/io-backend/v13.25.1-RELEASE/api_bonus.yaml", "io_cgn_specs": "https://raw.githubusercontent.com/pagopa/io-backend/v13.25.1-RELEASE/api_cgn.yaml", - "io_cgn_merchants_specs": "https://raw.githubusercontent.com/pagopa/io-backend/v13.25.1-RELEASE/api_cgn_operator_search.yaml", + "io_cgn_merchants_specs": "https://raw.githubusercontent.com/pagopa/io-backend/v13.29.2-RELEASE/api_cgn_operator_search.yaml", "io_bpd_citizen": "https://raw.githubusercontent.com/pagopa/io-services-metadata/1.0.29/bonus/specs/bpd/citizen.json", "io_bpd_citizen_v2": "https://raw.githubusercontent.com/pagopa/io-services-metadata/1.0.29/bonus/specs/bpd/citizen_v2.json", "io_bpd_payment": "https://raw.githubusercontent.com/pagopa/io-services-metadata/1.0.29/bonus/specs/bpd/payment.json", @@ -24,7 +24,7 @@ "pagopa_api_walletv2": "https://raw.githubusercontent.com/pagopa/io-services-metadata/1.0.29/bonus/specs/bpd/pm/walletv2.json", "pagopa_cobadge_configuration": "https://raw.githubusercontent.com/pagopa/io-services-metadata/1.0.29/pagopa/cobadge/abi_definitions.yml", "pagopa_privative_configuration": "https://raw.githubusercontent.com/pagopa/io-services-metadata/1.0.29/pagopa/privative/definitions.yml", - "idpay_api": "https://raw.githubusercontent.com/pagopa/cstar-infrastructure/v6.5.0/src/domains/idpay-app/api/idpay_appio_full/openapi.appio.full.yml", + "idpay_api": "https://raw.githubusercontent.com/pagopa/cstar-infrastructure/v6.9.1/src/domains/idpay-app/api/idpay_appio_full/openapi.appio.full.yml", "lollipop_api": "https://raw.githubusercontent.com/pagopa/io-backend/v13.25.1-RELEASE/api_lollipop_first_consumer.yaml", "fast_login_api": "https://raw.githubusercontent.com/pagopa/io-backend/v13.25.1-RELEASE/openapi/generated/api_fast_login.yaml", "pagopa_api_walletv3": "https://raw.githubusercontent.com/pagopa/pagopa-infra/4cd111e94432ff62580adc391de78a5462a7128e/src/domains/wallet-app/api/payment-wallet/v1/_openapi.json.tpl", @@ -114,10 +114,10 @@ "dependencies": { "@babel/plugin-transform-regenerator": "^7.18.6", "@gorhom/bottom-sheet": "^4.1.5", - "@pagopa/io-app-design-system": "1.18.0", + "@pagopa/io-app-design-system": "1.20.0", "@pagopa/io-pagopa-commons": "^3.1.0", "@pagopa/io-react-native-crypto": "^0.2.1", - "@pagopa/io-react-native-login-utils": "^0.2.0", + "@pagopa/io-react-native-login-utils": "^0.2.2", "@pagopa/react-native-cie": "1.2.0", "@pagopa/ts-commons": "^10.15.0", "@react-native-async-storage/async-storage": "^1.17.10", @@ -129,7 +129,6 @@ "@react-native-cookies/cookies": "^6.2.1", "@react-native-picker/picker": "^2.4.1", "@react-navigation/bottom-tabs": "^5.11.15", - "@react-navigation/compat": "^5.3.20", "@react-navigation/material-top-tabs": "^5.x", "@react-navigation/native": "^5.9.8", "@react-navigation/stack": "^5.14.9", @@ -188,6 +187,7 @@ "react-native-modal-datetime-picker": "^10.2.0", "react-native-pdf": "^6.4.0", "react-native-pdf-thumbnail": "^1.2.1", + "react-native-permissions": "^4.0.0", "react-native-popup-menu": "^0.15.11", "react-native-progress-circle": "^2.1.0", "react-native-push-notification": "^8.1.1", diff --git a/patches/patches.md b/patches/patches.md index 805e227359f..86d924da6df 100644 --- a/patches/patches.md +++ b/patches/patches.md @@ -163,4 +163,15 @@ Updated on **13/07/2023** #### Reason: -- This patch applies security fixes to avoid access on camera and microphone without user permission. \ No newline at end of file +- This patch applies security fixes to avoid access on camera and microphone without user permission. + +### react-native-calendar-events+2.2.0.patch + +Created on **16/01/2023** + +#### Reason: + +- This patch fixes a crash on Android devices when trying to find/create/remove calendar events. + An Event has an Id property which type may be a long but the library deals only with Java's signed int32. + This was fine as long as each event was originally created and handled using this library only but + initially another library was used, react-native-add-calendar-event, which treated event's Id as long \ No newline at end of file diff --git a/patches/react-native+0.69.9.patch b/patches/react-native+0.69.9.patch index bf26ccf272e..514b2d7f762 100644 --- a/patches/react-native+0.69.9.patch +++ b/patches/react-native+0.69.9.patch @@ -1,12 +1,15 @@ +diff --git a/node_modules/react-native/Libraries/.DS_Store b/node_modules/react-native/Libraries/.DS_Store +new file mode 100644 +index 0000000..e69de29 diff --git a/node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.js b/node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.js -index 227af12..537e2b8 100644 +index 227af12..2c59500 100644 --- a/node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.js +++ b/node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.js @@ -68,6 +68,7 @@ const PERMISSIONS = Object.freeze({ ANSWER_PHONE_CALLS: 'android.permission.ANSWER_PHONE_CALLS', READ_PHONE_NUMBERS: 'android.permission.READ_PHONE_NUMBERS', UWB_RANGING: 'android.permission.UWB_RANGING', -+ POST_NOTIFICATIONS: 'android.permission.POST_NOTIFICATIONS', ++ POST_NOTIFICATIONS: 'android.permission.POST_NOTIFICATIONS' }); /** diff --git a/patches/react-native-calendar-events+2.2.0.patch b/patches/react-native-calendar-events+2.2.0.patch new file mode 100644 index 00000000000..dd813d09056 --- /dev/null +++ b/patches/react-native-calendar-events+2.2.0.patch @@ -0,0 +1,173 @@ +diff --git a/node_modules/react-native-calendar-events/android/src/main/java/com/calendarevents/RNCalendarEvents.java b/node_modules/react-native-calendar-events/android/src/main/java/com/calendarevents/RNCalendarEvents.java +index 782a0da..df20396 100644 +--- a/node_modules/react-native-calendar-events/android/src/main/java/com/calendarevents/RNCalendarEvents.java ++++ b/node_modules/react-native-calendar-events/android/src/main/java/com/calendarevents/RNCalendarEvents.java +@@ -162,7 +162,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + WritableNativeMap result; + Cursor cursor; + ContentResolver cr = reactContext.getContentResolver(); +- Uri uri = ContentUris.withAppendedId(CalendarContract.Calendars.CONTENT_URI, Integer.parseInt(calendarID)); ++ Uri uri = ContentUris.withAppendedId(CalendarContract.Calendars.CONTENT_URI, Long.parseLong(calendarID)); + + String IS_PRIMARY = CalendarContract.Calendars.IS_PRIMARY == null ? "0" : CalendarContract.Calendars.IS_PRIMARY; + +@@ -215,7 +215,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + return CalendarContract.Calendars.CAL_ACCESS_NONE; + } + +- private int addCalendar(ReadableMap details) throws Exception, SecurityException { ++ private long addCalendar(ReadableMap details) throws Exception, SecurityException { + + ContentResolver cr = reactContext.getContentResolver(); + ContentValues calendarValues = new ContentValues(); +@@ -272,7 +272,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + Uri calendarsUri = uriBuilder.build(); + + Uri calendarUri = cr.insert(calendarsUri, calendarValues); +- return Integer.parseInt(calendarUri.getLastPathSegment()); ++ return Long.parseLong(calendarUri.getLastPathSegment()); + } + + private boolean removeCalendar(String calendarID) { +@@ -281,7 +281,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + try { + ContentResolver cr = reactContext.getContentResolver(); + +- Uri uri = ContentUris.withAppendedId(CalendarContract.Calendars.CONTENT_URI, (long) Integer.parseInt(calendarID)); ++ Uri uri = ContentUris.withAppendedId(CalendarContract.Calendars.CONTENT_URI, Long.parseLong(calendarID)); + rows = cr.delete(uri, null, null); + + } catch (Exception e) { +@@ -401,7 +401,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + WritableNativeMap result; + Cursor cursor = null; + ContentResolver cr = reactContext.getContentResolver(); +- Uri uri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, Integer.parseInt(eventID)); ++ Uri uri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, Long.parseLong(eventID)); + + String selection = "((" + CalendarContract.Events.DELETED + " != 1))"; + +@@ -472,7 +472,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + return result; + } + +- private int addEvent(String title, ReadableMap details, ReadableMap options) throws ParseException { ++ private long addEvent(String title, ReadableMap details, ReadableMap options) throws ParseException { + String dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; + SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); + boolean skipTimezone = false; +@@ -623,7 +623,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + } + + if (details.hasKey("id")) { +- int eventID = Integer.parseInt(details.getString("id")); ++ long eventID = Long.parseLong(details.getString("id")); + WritableMap eventInstance = findEventById(details.getString("id")); + + if (eventInstance != null) { +@@ -654,7 +654,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + throw e; + } + +- Uri exceptionUri = Uri.withAppendedPath(CalendarContract.Events.CONTENT_EXCEPTION_URI, Integer.toString(eventID)); ++ Uri exceptionUri = Uri.withAppendedPath(CalendarContract.Events.CONTENT_EXCEPTION_URI, Long.toString(eventID)); + + if (options.hasKey("sync") && options.getBoolean("sync")) { + syncCalendar(cr, eventInstance.getMap("calendar").getString("id")); +@@ -664,7 +664,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + try { + Uri eventUri = cr.insert(exceptionUri, eventValues); + if (eventUri != null) { +- eventID = Integer.parseInt(eventUri.getLastPathSegment()); ++ eventID = Long.parseLong(eventUri.getLastPathSegment()); + } + } catch (Exception e) { + Log.d(this.getName(), "Event exception error", e); +@@ -673,24 +673,24 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + } + + if (details.hasKey("alarms")) { +- createRemindersForEvent(cr, Integer.parseInt(details.getString("id")), details.getArray("alarms")); ++ createRemindersForEvent(cr, Long.parseLong(details.getString("id")), details.getArray("alarms")); + } + + if (details.hasKey("attendees")) { +- createAttendeesForEvent(cr, Integer.parseInt(details.getString("id")), details.getArray("attendees")); ++ createAttendeesForEvent(cr, Long.parseLong(details.getString("id")), details.getArray("attendees")); + } + + return eventID; + + } else { + WritableNativeMap calendar; +- int eventID = -1; ++ long eventID = -1; + + if (details.hasKey("calendarId")) { + calendar = findCalendarById(details.getString("calendarId")); + + if (calendar != null) { +- eventValues.put(CalendarContract.Events.CALENDAR_ID, Integer.parseInt(calendar.getString("id"))); ++ eventValues.put(CalendarContract.Events.CALENDAR_ID, Long.parseLong(calendar.getString("id"))); + } else { + eventValues.put(CalendarContract.Events.CALENDAR_ID, 1); + } +@@ -712,7 +712,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + if (eventUri != null) { + String rowId = eventUri.getLastPathSegment(); + if (rowId != null) { +- eventID = Integer.parseInt(rowId); ++ eventID = Long.parseLong(rowId); + + if (details.hasKey("alarms")) { + createRemindersForEvent(cr, eventID, details.getArray("alarms")); +@@ -739,7 +739,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + ReadableMap eventCalendar = eventInstance.getMap("calendar"); + + if (!options.hasKey("exceptionDate")) { +- Uri uri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, (long) Integer.parseInt(eventID)); ++ Uri uri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, Long.parseLong(eventID)); + + if (options.hasKey("sync") && options.getBoolean("sync")) { + syncCalendar(cr, eventCalendar.getString("id")); +@@ -810,7 +810,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + //endregion + + //region Attendees +- private void createAttendeesForEvent(ContentResolver resolver, int eventID, ReadableArray attendees) { ++ private void createAttendeesForEvent(ContentResolver resolver, long eventID, ReadableArray attendees) { + Cursor cursor = CalendarContract.Attendees.query(resolver, eventID, new String[] { + CalendarContract.Attendees._ID + }); +@@ -842,7 +842,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + //endregion + + //region Reminders +- private void createRemindersForEvent(ContentResolver resolver, int eventID, ReadableArray reminders) { ++ private void createRemindersForEvent(ContentResolver resolver, long eventID, ReadableArray reminders) { + Cursor cursor = null; + + if (resolver != null) { +@@ -1281,7 +1281,7 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + @Override + public void run() { + try { +- Integer calendarID = addCalendar(options); ++ Long calendarID = addCalendar(options); + promise.resolve(calendarID.toString()); + } catch (Exception e) { + promise.reject("save calendar error", e.getMessage()); +@@ -1322,11 +1322,11 @@ public class RNCalendarEvents extends ReactContextBaseJavaModule implements Perm + Thread thread = new Thread(new Runnable(){ + @Override + public void run() { +- int eventId; ++ long eventId; + try { + eventId = addEvent(title, details, options); + if (eventId > -1) { +- promise.resolve(Integer.toString(eventId)); ++ promise.resolve(Long.toString(eventId)); + } else { + promise.reject("add event error", "Unable to save event"); + } diff --git a/publiccode.yml b/publiccode.yml index 53799d6ea23..44d956840fc 100644 --- a/publiccode.yml +++ b/publiccode.yml @@ -5,11 +5,11 @@ publiccodeYmlVersion: '0.2' name: IO logo: "img/app-logo.svg" -releaseDate: '2023-12-14' +releaseDate: '2024-01-17' url: 'https://github.com/pagopa/io-app' applicationSuite: IO landingURL: 'https://io.italia.it/' -softwareVersion: 2.48.0-rc.5 +softwareVersion: 2.51.0-rc.1 developmentStatus: beta softwareType: standalone/mobile roadmap: 'https://io.italia.it/' diff --git a/scripts/api-config.json b/scripts/api-config.json index bcd49c53c63..0d2f6dc39be 100644 --- a/scripts/api-config.json +++ b/scripts/api-config.json @@ -14,7 +14,6 @@ "paymentInvalidAfterDueDateWithExpiredDueDateCount": 1, "paymentWithValidDueDateCount": 1, "paymentWithExpiredDueDateCount": 1, - "medicalCount": 1, "withCTA": true, "withEUCovidCert": true, "withValidDueDateCount": 1, diff --git a/scripts/check_cie_button_exists/Pipfile.lock b/scripts/check_cie_button_exists/Pipfile.lock index cebbb62ea21..0b6ebf3d5e1 100644 --- a/scripts/check_cie_button_exists/Pipfile.lock +++ b/scripts/check_cie_button_exists/Pipfile.lock @@ -21,89 +21,104 @@ "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9" ], - "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==2023.7.22" }, "charset-normalizer": { "hashes": [ - "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96", - "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c", - "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710", - "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706", - "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020", - "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252", - "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad", - "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329", - "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a", - "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f", - "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6", - "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4", - "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a", - "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46", - "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2", - "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23", - "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace", - "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd", - "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982", - "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10", - "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2", - "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea", - "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09", - "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5", - "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149", - "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489", - "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9", - "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80", - "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592", - "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3", - "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6", - "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed", - "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c", - "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200", - "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a", - "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e", - "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d", - "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6", - "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623", - "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669", - "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3", - "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa", - "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9", - "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2", - "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f", - "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1", - "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4", - "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a", - "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8", - "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3", - "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029", - "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f", - "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959", - "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22", - "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7", - "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952", - "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346", - "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e", - "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d", - "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299", - "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd", - "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a", - "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3", - "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037", - "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94", - "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c", - "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858", - "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a", - "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449", - "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c", - "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918", - "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1", - "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c", - "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac", - "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" + "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843", + "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786", + "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e", + "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8", + "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4", + "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa", + "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d", + "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82", + "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7", + "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895", + "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d", + "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a", + "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382", + "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678", + "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b", + "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e", + "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741", + "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4", + "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596", + "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9", + "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69", + "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c", + "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77", + "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13", + "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459", + "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e", + "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7", + "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908", + "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a", + "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f", + "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8", + "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482", + "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d", + "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d", + "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545", + "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34", + "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86", + "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6", + "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe", + "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e", + "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc", + "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7", + "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd", + "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c", + "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557", + "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a", + "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89", + "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078", + "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e", + "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4", + "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403", + "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0", + "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89", + "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115", + "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9", + "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05", + "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a", + "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec", + "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56", + "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38", + "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479", + "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c", + "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e", + "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd", + "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186", + "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455", + "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c", + "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65", + "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78", + "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287", + "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df", + "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43", + "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1", + "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7", + "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989", + "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a", + "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63", + "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884", + "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649", + "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810", + "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828", + "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4", + "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2", + "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd", + "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5", + "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe", + "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293", + "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e", + "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e", + "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8" ], "markers": "python_full_version >= '3.7.0'", - "version": "==3.2.0" + "version": "==3.3.0" }, "faker": { "hashes": [ @@ -111,6 +126,7 @@ "sha256:b9e81e9da3dda3ac54189e034cfb943de576a259caeb226ccab43fcbcf6a7891" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==8.11.0" }, "idna": { @@ -135,6 +151,7 @@ "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.31.0" }, "six": { @@ -154,11 +171,12 @@ }, "urllib3": { "hashes": [ - "sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4", - "sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f" + "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07", + "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0" ], "index": "pypi", - "version": "==1.26.6" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==1.26.18" } }, "develop": {} diff --git a/ts/api/__mocks__/backend.ts b/ts/api/__mocks__/backend.ts index 1e9bbcacd79..06b35ce8526 100644 --- a/ts/api/__mocks__/backend.ts +++ b/ts/api/__mocks__/backend.ts @@ -1,9 +1,10 @@ /** * Mocked version of the BackendClient. */ - -const mockedGetSession = jest.fn(); - -export const BackendClient = () => ({ - getSession: mockedGetSession -}); +export const BackendClient = { + getMessage: jest.fn(), + getMessages: jest.fn(), + getSession: jest.fn(), + getThirdPartyMessagePrecondition: jest.fn(), + upsertMessageStatusAttributes: jest.fn() +}; diff --git a/ts/boot/__tests__/__snapshots__/persistedStore.test.ts.snap b/ts/boot/__tests__/__snapshots__/persistedStore.test.ts.snap index 72bddbb4820..04a4f1af920 100644 --- a/ts/boot/__tests__/__snapshots__/persistedStore.test.ts.snap +++ b/ts/boot/__tests__/__snapshots__/persistedStore.test.ts.snap @@ -68,9 +68,7 @@ Object { "detailsById": Object {}, "downloads": Object {}, "messageGetStatus": Object { - "failurePhase": "none", "status": "idle", - "successData": undefined, }, "messagePrecondition": Object { "content": Object { diff --git a/ts/boot/__tests__/migrateToPagination.test.ts b/ts/boot/__tests__/migrateToPagination.test.ts index eff045fa0e2..dd0287207b9 100644 --- a/ts/boot/__tests__/migrateToPagination.test.ts +++ b/ts/boot/__tests__/migrateToPagination.test.ts @@ -1,6 +1,6 @@ import * as Either from "fp-ts/lib/Either"; -import migrateToPagination from "../migrateToPagination"; +import migrateToPagination from "../../features/messages/utils/migrateToPagination"; const mockUpsert = jest.fn().mockResolvedValue(Either.right({ status: 200 })); diff --git a/ts/boot/configurePushNotification.ts b/ts/boot/configurePushNotification.ts index 0fe6c19d871..4530e6f9111 100644 --- a/ts/boot/configurePushNotification.ts +++ b/ts/boot/configurePushNotification.ts @@ -21,12 +21,12 @@ import { setMixpanelPushNotificationToken } from "../mixpanel"; import { loadPreviousPageMessages, reloadAllMessages -} from "../store/actions/messages"; +} from "../features/messages/store/actions"; import { updateNotificationsInstallationToken, updateNotificationsPendingMessage } from "../store/actions/notifications"; -import { getCursors } from "../store/reducers/entities/messages/allPaginated"; +import { getCursors } from "../features/messages/store/reducers/allPaginated"; import { isDevEnv } from "../utils/environment"; import { trackMessageNotificationParsingFailure, diff --git a/ts/boot/configureStoreAndPersistor.ts b/ts/boot/configureStoreAndPersistor.ts index bfcad576113..26b33faa001 100644 --- a/ts/boot/configureStoreAndPersistor.ts +++ b/ts/boot/configureStoreAndPersistor.ts @@ -22,7 +22,7 @@ import { persistStore } from "redux-persist"; import createSagaMiddleware from "redux-saga"; -import { remoteUndefined } from "../features/bonus/bpd/model/RemoteValue"; +import { remoteUndefined } from "../common/model/RemoteValue"; import { CURRENT_REDUX_LOLLIPOP_STORE_VERSION } from "../features/lollipop/store"; import { initialLollipopState, diff --git a/ts/features/bonus/bpd/model/RemoteValue.ts b/ts/common/model/RemoteValue.ts similarity index 100% rename from ts/features/bonus/bpd/model/RemoteValue.ts rename to ts/common/model/RemoteValue.ts diff --git a/ts/components/BonusCard/BonusCard.tsx b/ts/components/BonusCard/BonusCard.tsx index 090687aa295..2a08c1b00f0 100644 --- a/ts/components/BonusCard/BonusCard.tsx +++ b/ts/components/BonusCard/BonusCard.tsx @@ -9,9 +9,11 @@ import { import React from "react"; import { ImageURISource, StyleSheet, View } from "react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; +import { useSelector } from "react-redux"; import Placeholder from "rn-placeholder"; -import { BonusCardShape } from "./BonusCardShape"; +import { isDesignSystemEnabledSelector } from "../../store/reducers/persistedPreferences"; import { BonusCardCounter } from "./BonusCardCounter"; +import { BonusCardShape } from "./BonusCardShape"; import { BonusCardStatus } from "./BonusCardStatus"; import { BonusStatus } from "./type"; @@ -26,7 +28,7 @@ type ContentProps = { organizationName: string; endDate: Date; status: BonusStatus; - counters: Array; + counters: ReadonlyArray; }; type LoadingStateProps = @@ -58,9 +60,11 @@ const BonusCardContent = (props: BonusCard) => { )} -

{name}

+

+ {name} +

-