Skip to content

Commit

Permalink
Merge branch 'master' into SFEQS-2083-replace-dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
hevelius authored Jan 24, 2024
2 parents 385eff3 + d34be63 commit a2feda5
Show file tree
Hide file tree
Showing 34 changed files with 605 additions and 365 deletions.
96 changes: 90 additions & 6 deletions locales/de/index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -704,7 +704,7 @@ authentication:
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"
title2: "Möchtest du den Zugang zu IO entsperren?"
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"
Expand Down Expand Up @@ -1598,6 +1598,22 @@ wallet:
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"
abortDialog:
title: "Möchtest du den Vorgang abbrechen?"
confirm: "Ja, abbrechen"
cancel: "Nein, zurück"
methodSelection:
header: "Zahlungsmethode auswählen"
yourMethods: "Deine Zahlungsmethoden"
otherMethods: "Andere Zahlungsmethoden"
alert:
body: "Aufgrund des größeren Betrags sind einige Zahlungsmethoden nicht verfügbar."
cta: "OK, habe verstanden!"
missingMethodsError:
title: "Füge eine Zahlungsmethode für In-App-Zahlungen hinzu"
subtitle: "Die Zahlungsmethode wird in deinem Konto gespeichert, so dass du beim nächsten Mal einfacher bezahlen kannst."
addMethod: "Zahlungsmethode hinzufügen"
notNow: "Jetzt nicht"
psp:
title: "Wähle, von wem die Zahlung abgewickelt werden soll"
description: "Jeder Zahlungsdienstleister (PSP) schlägt eine Provision vor."
Expand All @@ -1612,14 +1628,76 @@ wallet:
default: "Standard"
amount: "Nach Betrag"
name: "Nach Name"
failure:
PAYMENT_UNAVAILABLE:
title: "Es gibt ein technisches Problem mit dieser Zahlungsmitteilung."
PAYMENT_UNKNOWN:
title: "Die Daten der Zahlungsmitteilung sind falsch"
DOMAIN_UNKNOWN:
title: "Die ausstellende Körperschaft hat Probleme bei der Bearbeitung"
subtitle: "Bitte versuche es später noch einmal. Wenn das Problem weiterhin besteht, wende dich bitte an den Support."
PAYMENT_ONGOING:
title: "Es ist bereits eine Zahlung im Gange, bitte versuche es später noch einmal"
subtitle: "Wenn das Problem weiterhin besteht, kannst du ein Ticket erstellen."
PAYMENT_EXPIRED:
title: "Die Zahlungsmitteilung ist abgelaufen und kann nicht mehr bezahlt werden"
subtitle: "Wende dich für weitere Informationen an die Körperschaft."
PAYMENT_CANCELED:
title: "Die ausstellende Körperschaft hat diese Zahlungsmitteilung zurückgezogen"
subtitle: "Wende dich für weitere Informationen an die Körperschaft."
PAYMENT_DUPLICATED:
title: "Diese Zahlungsmitteilung wurde bereits bezahlt!"
GENERIC_ERROR:
title: "Ein unerwarteter Fehler ist aufgetreten"
subtitle: "Versuche es erneut oder wende dich an den Support."
PAA_PAGAMENTO_SCONOSCIUTO:
title: "Wir können die Zahlungsmitteilung nicht finden"
subtitle: "Die Zahlungsmitteilung kann bereits bezahlt worden sein. Wende dich bitte an den ausstellende Körperschaft."
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"
action: "Zur Umfrage"
GENERIC_ERROR:
title: "Es ist ein unerwarteter Fehler aufgetreten"
subtitle: "Es wurde kein Betrag abgebucht."
AUTH_ERROR:
title: "Autorisierung verweigert"
subtitle: "Es wurde kein Betrag abgebucht.\nVergewissere dich, dass du die Anweisungen deiner Bank oder Zahlungsapp korrekt befolgt hast."
INVALID_DATA:
title: "Die Daten der Zahlungsmethode sind falsch"
subtitle: "Wenn du mit einer Debit- oder Kreditkarte bezahlt hast, musst du die Daten wie auf der Karte angegeben eingeben."
TIMEOUT:
title: "Die Sitzung ist abgelaufen"
subtitle: "Es wurde kein Betrag abgebucht.\nZu deiner Sicherheit hast du nur eine begrenzte Zeit, um den Vorgang abzuschließen."
CIRCUIT_ERROR:
title: "Das Kartennetzwerk deiner Karte wird nicht unterstützt"
MISSING_FIELDS:
title: "Es fehlen einige Daten, um mit der Zahlung fortzufahren"
INVALID_CARD:
title: "Die Zahlungsmethode ist abgelaufen oder nicht mehr gültig"
subtitle: "Weitere Informationen erhältst du bei deiner Bank."
CANCELED_BY_USER:
title: "Der Vorgang wurde abgebrochen"
subtitle: "Es wurde kein Betrag abgebucht."
EXCESSIVE_AMOUNT:
title: "Autorisierung verweigert"
subtitle: "Es wurde kein Betrag abgebucht.\nDu hast wahrscheinlich die Obergrenze deiner Zahlungsmethode überschritten."
INVALID_METHOD:
title: "Die Zahlungsmethode wird nicht unterstützt"
support:
button: "Support kontaktieren"
supportTitle: "Support kontaktieren"
phone: "{{phoneNumber}} anrufen"
chat: "Im Chat um Hilfe fragen"
additionalDataTitle: "Zusätzliche Daten"
copyAll: "Alles kopieren"
errorCode: "Fehlercode"
noticeNumber: "Zahlungskodex"
entityCode: "Steuernummer Körperschaft"
saveCard:
saveCard: "Karte speichern"
header: "Möchtest du diese Karte speichern?"
Expand Down Expand Up @@ -2063,13 +2141,13 @@ bonus:
goToDetail: "Die Karte anzeigen"
detail:
cta:
buyers: "CGN Rabatte und Ermäßigungen anzeigen"
buyers: "CGN Ermäßigungen anzeigen"
otp: "Code generieren"
eyca:
copy: "EYCA Kartennummer kopieren"
pending: "EYCA Rabatte und Ermäßigungen anzeigen"
pending: "EYCA Ermäßigungen anzeigen"
bottomSheet: "Besuche die EYCA Website"
showEycaDiscounts: "EYCA Rabatte und Ermäßigungen anzeigen"
showEycaDiscounts: "EYCA Ermäßigungen anzeigen"
information:
active: "Die Karte ist aktiv und kann bis zum {{date}} verwendet werden."
warning: "Achtung! "
Expand Down Expand Up @@ -2373,6 +2451,7 @@ whatsNew:
bonusCard:
validUntil: "Gültig bis {{endDate}}"
expiring: "Verfällt am {{endDate}}"
expired: "Abgelaufen am {{endDate}}"
paused: "In Pause"
removed: "Entfernt"
transaction:
Expand All @@ -2381,6 +2460,7 @@ transaction:
totalAmount: "Insgesamt"
totalFee: "Der Gesamtbetrag umfasst "
totalFeePsp: "Provision, berechnet von {{pspName}}"
totalFeeNoPsp: "Provision, die vom Transaktionsdienstleister (PSP) erhoben wird."
info:
title: "Informationen zur Transaktion"
pspName: "Zahlungsdienstleister (PSP)"
Expand All @@ -2394,7 +2474,7 @@ transaction:
subject: "Zahlungsgrund"
permissionRequest:
gallery:
title: "Erlaube IO den Zugriff auf deine Fotos"
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}}"
Expand All @@ -2405,4 +2485,8 @@ permissionRequest:
3: "Wähle “IO”"
4: "Wähle den Punkt App-Berechtigungen"
5: "Lass den Zugriff auf Dateien und Medien zu"
ios:
1: "Geh zu “Einstellungen”"
2: "Wähle “IO”"
3: "Wähle “Fotos” und erlaube den Zugriff"
cta: "Öffne Einstellungen"
5 changes: 5 additions & 0 deletions locales/en/index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1013,6 +1013,11 @@ wallet:
title: Vuoi pagare in app?
content: Scopri quali sono i metodi che puoi aggiungere al tuo portafoglio.
cta: Scopri di più
error:
title: Si è verificato un errore
subtitle: Riprova o contatta l'assistenza
primaryButton: Chiudi
secondaryButton: Riprova
wallet: Wallet
refreshWallet: Refresh the Wallet
favourite:
Expand Down
5 changes: 5 additions & 0 deletions locales/it/index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1013,6 +1013,11 @@ wallet:
title: Vuoi pagare in app?
content: Scopri quali sono i metodi che puoi aggiungere al tuo portafoglio.
cta: Scopri di più
error:
title: Si è verificato un errore
subtitle: Riprova o contatta l'assistenza
primaryButton: Chiudi
secondaryButton: Riprova
wallet: Portafoglio
refreshWallet: Aggiorna il Portafoglio
favourite:
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
"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",
"pagopa_api_ecommerce": "https://raw.githubusercontent.com/pagopa/pagopa-infra/65878f9913fcc0eaff499ba8a1a20427a412c010/src/domains/ecommerce-app/api/ecommerce-io/v1/_openapi.json.tpl",
"pagopa_api_walletv3": "https://raw.githubusercontent.com/pagopa/pagopa-infra/740e7dcc5ea2ea19639316fea6797bbd504dd0ae/src/domains/wallet-app/api/payment-wallet/v1/_openapi.json.tpl",
"pagopa_api_ecommerce": "https://raw.githubusercontent.com/pagopa/pagopa-infra/5190135ac34791cf66c1986735d4134bcaf4096f/src/domains/ecommerce-app/api/ecommerce-io/v1/_openapi.json.tpl",
"private": true,
"scripts": {
"start": "react-native start",
Expand Down
7 changes: 4 additions & 3 deletions ts/__e2e__/payment.e2e.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import I18n from "../i18n";
import { formatNumberCentsToAmount } from "../utils/stringBuilder";
import { e2eWaitRenderTimeout } from "./config";
import { ensureLoggedIn } from "./utils";
import { closeKeyboard, ensureLoggedIn } from "./utils";

describe("Payment", () => {
beforeEach(async () => {
await device.reloadReactNative();
await device.launchApp({ newInstance: true });
await ensureLoggedIn();
});

Expand Down Expand Up @@ -106,8 +106,9 @@ describe("Payment", () => {

await element(matchNoticeCodeInput).typeText("123123123123123123");
await element(by.id("EntityCodeInputMask")).typeText("12345678901");

// Close the keyboard
await element(by.label("Fine")).atIndex(0).tap();
await closeKeyboard();

await element(by.text(I18n.t("global.buttons.continue"))).tap();

Expand Down
10 changes: 10 additions & 0 deletions ts/__e2e__/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,3 +117,13 @@ export const ensureLoggedIn = async () => {
await loginWithSPID();
}
};

export const closeKeyboard = async () => {
// Sometimes the device ignores the locale set by the detox setup
// In such case we can try to close the keyboard using the english translation
try {
await element(by.label("Fine")).atIndex(0).tap();
} catch (e) {
await element(by.label("Done")).atIndex(0).tap();
}
};
1 change: 1 addition & 0 deletions ts/components/wallet/WalletHomeHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ export const useWalletHomeHeaderBottomSheet = (): IOBottomSheetModal => {
const navigationListItems: ReadonlyArray<NavigationListItem> = [
{
title: I18n.t("wallet.paymentMethod"),
testId: "wallet.paymentMethod",
subtitle: I18n.t("wallet.paymentMethodDesc"),
onPress: () =>
navigateToWalletAddPaymentMethod({
Expand Down
2 changes: 1 addition & 1 deletion ts/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ export const remindersOptInEnabled = Config.REMINDERS_OPT_IN_ENABLED === "YES";
export const isNewCduFlow = Config.CDU_NEW_FLOW === "YES";

// version of ToS
export const tosVersion: NonNegativeNumber = 4.7 as NonNegativeNumber;
export const tosVersion: NonNegativeNumber = 4.8 as NonNegativeNumber;

export const fetchTimeout = pipe(
parseInt(Config.FETCH_TIMEOUT_MS, 10),
Expand Down
2 changes: 1 addition & 1 deletion ts/features/bonus/cgn/__e2e__/cgn.e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ const activateBonusSuccess = async () => {

describe("CGN", () => {
beforeEach(async () => {
await device.reloadReactNative();
await device.launchApp({ newInstance: true });
await ensureLoggedIn();
});

Expand Down
7 changes: 1 addition & 6 deletions ts/features/bonus/cgn/components/detail/CgnUnsubscribe.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import { isError, isReady } from "../../../../../common/model/RemoteValue";
import { navigateBack } from "../../../../../store/actions/navigation";
import { cgnDetails } from "../../store/actions/details";
import { IOToast } from "../../../../../components/Toast";
import { skipToastShowingDueToE2ECrash } from "./ToastPatch";

const CgnUnsubscribe = () => {
const dispatch = useIODispatch();
Expand Down Expand Up @@ -39,11 +38,7 @@ const CgnUnsubscribe = () => {
if (isReady(unsubscriptionStatus)) {
navigateBack();
dispatch(cgnDetails.request());
// This is needed to prevent a crash while running E2E tests. Showing
// the toast causes random crashes upon calling device.reloadReactNative
if (!skipToastShowingDueToE2ECrash) {
IOToast.success(I18n.t("bonus.cgn.activation.deactivate.toast"));
}
IOToast.success(I18n.t("bonus.cgn.activation.deactivate.toast"));
}
if (isError(unsubscriptionStatus) && !isFirstRender.current) {
IOToast.error(I18n.t("global.genericError"));
Expand Down
1 change: 0 additions & 1 deletion ts/features/bonus/cgn/components/detail/ToastPatch.e2e.ts

This file was deleted.

1 change: 0 additions & 1 deletion ts/features/bonus/cgn/components/detail/ToastPatch.ts

This file was deleted.

2 changes: 1 addition & 1 deletion ts/features/euCovidCert/__e2e__/euCovidCertExpired.e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const learnMoreLinkTestId = "euCovidCertLearnMoreLink";

describe("EuCovidCert Expired", () => {
beforeAll(async () => {
await device.reloadReactNative();
await device.launchApp({ newInstance: true });
await ensureLoggedIn();
});

Expand Down
2 changes: 1 addition & 1 deletion ts/features/euCovidCert/__e2e__/euCovidCertRevoked.e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const learnMoreLinkTestId = "euCovidCertLearnMoreLink";

describe("EuCovidCert Revoked", () => {
beforeAll(async () => {
await device.reloadReactNative();
await device.launchApp({ newInstance: true });
await ensureLoggedIn();
});

Expand Down
2 changes: 1 addition & 1 deletion ts/features/euCovidCert/__e2e__/euCovidCertValid.e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const fullScreenQrCodeTestId = "fullScreenQRCode";

describe("EuCovidCert Valid", () => {
beforeAll(async () => {
await device.reloadReactNative();
await device.launchApp({ newInstance: true });
await ensureLoggedIn();
});

Expand Down
2 changes: 1 addition & 1 deletion ts/features/messages/__e2e__/messages.e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { ensureLoggedIn } from "../../../__e2e__/utils";

describe("Messages Screen", () => {
beforeEach(async () => {
await device.reloadReactNative();
await device.launchApp({ newInstance: true });
await ensureLoggedIn();
});

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { e2eWaitRenderTimeout } from "../../../../__e2e__/config";
import { ensureLoggedIn } from "../../../../__e2e__/utils";
import { closeKeyboard, ensureLoggedIn } from "../../../../__e2e__/utils";
import I18n from "../../../../i18n";

describe("Credit Card onboarding", () => {
beforeEach(async () => {
await device.reloadReactNative();
await device.launchApp({ newInstance: true });
await ensureLoggedIn();
});

Expand All @@ -24,12 +24,12 @@ describe("Credit Card onboarding", () => {
// Button "+ Add"
await element(by.id("walletAddNewPaymentMethodTestId")).tap();

await waitFor(element(by.text(I18n.t("wallet.paymentMethod"))))
await waitFor(element(by.id("wallet.paymentMethod")))
.toBeVisible()
.withTimeout(e2eWaitRenderTimeout);

// Add payment method listItem in bottomSheet
await element(by.text(I18n.t("wallet.paymentMethod"))).tap();
await element(by.id("wallet.paymentMethod")).tap();

await waitFor(element(by.text(I18n.t("wallet.methods.card.name"))))
.toBeVisible()
Expand All @@ -51,7 +51,7 @@ describe("Credit Card onboarding", () => {
await element(by.id("securityCodeInputMask")).typeText("123");

// Close the keyboard
await element(by.label("Fine")).atIndex(0).tap();
await closeKeyboard();
await element(by.text(I18n.t("global.buttons.continue"))).tap();

await waitFor(element(by.id("saveOrContinueButton")))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ type Props = { paymentMethod: WalletInfo };
* - global settings (payment capability, favourite, etc.)
*/
const WalletDetailsPaymentMethodFeatures = ({ paymentMethod }: Props) => {
const isMethodExpired = isPaymentMethodExpired(paymentMethod);
const isMethodExpired = isPaymentMethodExpired(paymentMethod.details);
const isIdpayEnabled = useIOSelector(isIdPayEnabledSelector);

if (isMethodExpired) {
Expand Down
Loading

0 comments on commit a2feda5

Please sign in to comment.