Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

Task/14315 error handling #4895

Merged
merged 57 commits into from
Nov 29, 2022
Merged
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
0d71c8b
14315: Show SRS Warn Others Precondition Alert
flxschmidt Nov 15, 2022
2c927d4
14315: Open FAQs
flxschmidt Nov 15, 2022
782b17e
14315: Mock 90 days alert
flxschmidt Nov 15, 2022
9ffecf9
14315: Some Renamings
flxschmidt Nov 15, 2022
4e1632d
14315: Show Cancel Warn Others Alert from Coordinator. Refactor SRS F…
flxschmidt Nov 15, 2022
42916bd
Merge branch 'story/14171-support-sharing-self-test' into task/14315-…
flxschmidt Nov 18, 2022
67e1ecb
14315: Prepare SRS Error
flxschmidt Nov 20, 2022
8e59019
14315: PPACError text key
flxschmidt Nov 20, 2022
0ecf6f6
14315: Show PPACError and SRSServerError alerts.
flxschmidt Nov 22, 2022
a794b0f
14315: SRS confirm warn others alert. Some refactoring regarding srs …
flxschmidt Nov 22, 2022
1a1eb8b
14315: OTPError
flxschmidt Nov 22, 2022
28ec373
14315: Remove developing mock
flxschmidt Nov 22, 2022
76a6bd0
14315: Cancel Consent on different screens
flxschmidt Nov 22, 2022
d431a78
14315: UT buildable
flxschmidt Nov 23, 2022
37ac7c3
Update src/xcode/ENA/ENA/Source/Scenes/ExposureSubmission/ExposureSub…
flxschmidt Nov 23, 2022
875b0a7
Update src/xcode/ENA/ENA/Source/Scenes/ExposureSubmission/ExposureSub…
flxschmidt Nov 23, 2022
234e2fc
14315: Cancel and Confirm Consent Alert has now preferred Actions
flxschmidt Nov 23, 2022
9e1250c
Merge branch 'story/14171-support-sharing-self-test' into task/14315-…
flxschmidt Nov 23, 2022
68f7194
14315: Swiftlint
flxschmidt Nov 23, 2022
f2a4f3b
Merge branch 'story/14171-support-sharing-self-test' into task/14315-…
flxschmidt Nov 23, 2022
e9c5cfa
14315: Rename SRSServerError to SRSError
flxschmidt Nov 23, 2022
c721731
Merge branch 'story/14171-support-sharing-self-test' into task/14315-…
flxschmidt Nov 23, 2022
8db393d
14315: submitSRSExposure shows SRS Flow Alert for SRSError on error
flxschmidt Nov 23, 2022
3cfe3aa
Merge branch 'release/3.0.x' into task/14315-error-handling
naveeddotio Nov 24, 2022
d7fa78d
Merge branch 'release/3.0.x' into task/14315-error-handling
naveeddotio Nov 24, 2022
3eba650
14315: Camelcase
flxschmidt Nov 24, 2022
b2f6967
14315: Change SRS precondition check before SRS consent screen.
flxschmidt Nov 24, 2022
2691446
Merge branch 'task/14315-error-handling' of https://github.com/corona…
flxschmidt Nov 24, 2022
d4fb9eb
14315: Remove a developer mock
flxschmidt Nov 24, 2022
3583b39
move precondition checks into the SRS service
30mar Nov 24, 2022
de679e5
Merge branch 'task/14315-error-handling' of github.com:corona-warn-ap…
30mar Nov 24, 2022
5df040e
14315: minor PR Remarks.
flxschmidt Nov 24, 2022
c225fac
Merge branch 'task/14315-error-handling' of https://github.com/corona…
flxschmidt Nov 24, 2022
8280a23
14315: Minor
flxschmidt Nov 24, 2022
1b550fb
14315: Revert last commit
flxschmidt Nov 24, 2022
b608811
14315: Fix Mock to be conformable to the protocol
flxschmidt Nov 24, 2022
a3cc255
14315: consent cancel warn others for checkins
flxschmidt Nov 24, 2022
c51036d
14315: Swiftlint
flxschmidt Nov 24, 2022
1e240d6
14315: UT buildable
flxschmidt Nov 24, 2022
72c94e3
14315: Try
flxschmidt Nov 24, 2022
bb1220b
14315: Try to fix pipeline issue
flxschmidt Nov 24, 2022
480e284
Merge branch 'release/3.0.x' into task/14315-error-handling
naveeddotio Nov 24, 2022
9c918ae
14315: Try UT build pipeline
flxschmidt Nov 25, 2022
c95a737
Merge branch 'task/14315-error-handling' of https://github.com/corona…
flxschmidt Nov 25, 2022
ce84af9
Merge branch 'release/3.0.x' into task/14315-error-handling
thomasaugsten Nov 25, 2022
b5fa384
14315: Fix Swiftlint issue with unused rule
flxschmidt Nov 25, 2022
ffb7374
Merge branch 'release/3.0.x' into task/14315-error-handling
naveeddotio Nov 25, 2022
7c98763
14315: PPACService checkSRSFlowPrerequisites success handler
flxschmidt Nov 28, 2022
043334c
14315: Solve PR Remarks.
flxschmidt Nov 28, 2022
542c281
14315: Typo
flxschmidt Nov 28, 2022
0fde708
Add dev menu toggle for prechecks
30mar Nov 28, 2022
9f7481d
14315: Coordinator dismissing
flxschmidt Nov 29, 2022
820163a
14315: PR remark
flxschmidt Nov 29, 2022
6205080
adapting feedback
naveeddotio Nov 29, 2022
6b703d5
Merge branch 'task/14315-error-handling' into 14360-Implement-Dev-Menu
naveeddotio Nov 29, 2022
fb87351
Merge pull request #4902 from corona-warn-app/14360-Implement-Dev-Menu
naveeddotio Nov 29, 2022
8c1332e
14315: UT build
flxschmidt Nov 29, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/xcode/ENA/ENA.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1760,11 +1760,14 @@
DC7002E12851EC7F00B164AC /* TooltipViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC7002E02851EC7F00B164AC /* TooltipViewModelTests.swift */; };
DC7003042858947F00B164AC /* AppInformationViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC7003032858947F00B164AC /* AppInformationViewControllerTests.swift */; };
DC7003092858A83800B164AC /* ErrorLogSubmissionProvidingMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC7003082858A83800B164AC /* ErrorLogSubmissionProvidingMock.swift */; };
DC8795AC2923ED8D00F478D5 /* UIViewController+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC8795AB2923ED8D00F478D5 /* UIViewController+Helpers.swift */; };
DC95881428BCF9FE00F4D03E /* MaskStateTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC95881328BCF9FE00F4D03E /* MaskStateTableViewCell.swift */; };
DC95881628BE3D5500F4D03E /* MaskStateCellModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC95881528BE3D5500F4D03E /* MaskStateCellModel.swift */; };
DC95881828BE5E2800F4D03E /* MaskStateCellModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC95881728BE5E2800F4D03E /* MaskStateCellModelTests.swift */; };
DC9AB2392908174000A2F9D1 /* String+Attributed.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC9AB2382908174000A2F9D1 /* String+Attributed.swift */; };
DCD345B8291BF7B700E95A2D /* UIView+Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCD345B7291BF7B700E95A2D /* UIView+Utils.swift */; };
DCDE5FD8292A9DE800F3E733 /* SRSErrorAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCDE5FD7292A9DE800F3E733 /* SRSErrorAlert.swift */; };
DCDE5FDA292CFABC00F3E733 /* SRSPreconditionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCDE5FD9292CFABC00F3E733 /* SRSPreconditionError.swift */; };
DCE0A446291E4B79008721D8 /* SRSTestTypeSelectionViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCE0A445291E4B79008721D8 /* SRSTestTypeSelectionViewModelTests.swift */; };
DCEDBD5628479ECB00D34E7A /* Alias.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEDBD5528479ECB00D34E7A /* Alias.swift */; };
DCEDBD582847A0AF00D34E7A /* HealthCertificateExportCertificatesInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEDBD572847A0AF00D34E7A /* HealthCertificateExportCertificatesInfoViewController.swift */; };
Expand Down Expand Up @@ -3658,11 +3661,14 @@
DC7002E02851EC7F00B164AC /* TooltipViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TooltipViewModelTests.swift; sourceTree = "<group>"; };
DC7003032858947F00B164AC /* AppInformationViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppInformationViewControllerTests.swift; sourceTree = "<group>"; };
DC7003082858A83800B164AC /* ErrorLogSubmissionProvidingMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorLogSubmissionProvidingMock.swift; sourceTree = "<group>"; };
DC8795AB2923ED8D00F478D5 /* UIViewController+Helpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController+Helpers.swift"; sourceTree = "<group>"; };
DC95881328BCF9FE00F4D03E /* MaskStateTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MaskStateTableViewCell.swift; sourceTree = "<group>"; };
DC95881528BE3D5500F4D03E /* MaskStateCellModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MaskStateCellModel.swift; sourceTree = "<group>"; };
DC95881728BE5E2800F4D03E /* MaskStateCellModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MaskStateCellModelTests.swift; sourceTree = "<group>"; };
DC9AB2382908174000A2F9D1 /* String+Attributed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Attributed.swift"; sourceTree = "<group>"; };
DCD345B7291BF7B700E95A2D /* UIView+Utils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Utils.swift"; sourceTree = "<group>"; };
DCDE5FD7292A9DE800F3E733 /* SRSErrorAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRSErrorAlert.swift; sourceTree = "<group>"; };
DCDE5FD9292CFABC00F3E733 /* SRSPreconditionError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRSPreconditionError.swift; sourceTree = "<group>"; };
DCE0A445291E4B79008721D8 /* SRSTestTypeSelectionViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRSTestTypeSelectionViewModelTests.swift; sourceTree = "<group>"; };
DCEDBD5528479ECB00D34E7A /* Alias.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Alias.swift; sourceTree = "<group>"; };
DCEDBD572847A0AF00D34E7A /* HealthCertificateExportCertificatesInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HealthCertificateExportCertificatesInfoViewController.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -6914,6 +6920,7 @@
85142500245DA0B3009D2791 /* UIViewController+Alert.swift */,
2F26CE2D248B9C4F00BE30EE /* UIViewController+BackButton.swift */,
EB66267C25C3219900C4D7C2 /* UIViewController+Child.swift */,
DC8795AB2923ED8D00F478D5 /* UIViewController+Helpers.swift */,
13722043247AEEAD00152764 /* UNNotificationCenter+Extension.swift */,
948AFE792554377F0019579A /* UNUserNotificationCenter+WarnOthers.swift */,
B1EDFD8C248E74D000E7EAFF /* URL+StaticString.swift */,
Expand Down Expand Up @@ -10055,6 +10062,8 @@
8F75219129266B1200F1B3DE /* SRSError.swift */,
BAB6C7F825C462E600E042FB /* PPACToken.swift */,
BAB6C7EE25C4626100E042FB /* TimestampedToken.swift */,
DCDE5FD7292A9DE800F3E733 /* SRSErrorAlert.swift */,
DCDE5FD9292CFABC00F3E733 /* SRSPreconditionError.swift */,
);
path = Model;
sourceTree = "<group>";
Expand Down Expand Up @@ -12027,6 +12036,7 @@
8FA88F9F2613A7E300FD36DA /* EncodingType.swift in Sources */,
AB126873254C05A7006E9194 /* ENAFormatter.swift in Sources */,
CDD87C56247556DE007CE6CA /* MainSettingsCell.swift in Sources */,
DC8795AC2923ED8D00F478D5 /* UIViewController+Helpers.swift in Sources */,
AB6289D4251BA4EC00CF61D2 /* String+Compare.swift in Sources */,
EB67B5EF262AD6D300218EC7 /* CheckinSelectionCellModel.swift in Sources */,
5071A88026EB808A00B09B40 /* HTTP+Method.swift in Sources */,
Expand Down Expand Up @@ -12167,6 +12177,7 @@
01BB00D2274FDE750065D1D1 /* TicketValidationAccessTokenProcessor.swift in Sources */,
8FB776F526F22C92005255BB /* CheckinQRCodeParser.swift in Sources */,
5222AA68255ECFE100F338C7 /* ExposureSubmissionTestResultConsentViewController.swift in Sources */,
DCDE5FD8292A9DE800F3E733 /* SRSErrorAlert.swift in Sources */,
8F39058F2715B84400A90E79 /* MoreActionItemView.swift in Sources */,
01BCBFB42756095D00E4B6F1 /* TicketValidationServiceIdentityDocumentResult.swift in Sources */,
713EA25F24798A9100AB7EE8 /* ExposureDetectionRiskCell.swift in Sources */,
Expand Down Expand Up @@ -12228,6 +12239,7 @@
9488C3012521EE8E00504648 /* DeltaOnboardingNavigationController.swift in Sources */,
AB76C4BA2695EEFB009ADEB0 /* AntigenTestProfileInputCell.swift in Sources */,
017AD18725A5C70700FA2B3F /* DynamicCell+ExposureDetection.swift in Sources */,
DCDE5FDA292CFABC00F3E733 /* SRSPreconditionError.swift in Sources */,
71FE1C86247AC33D00851FEB /* ExposureSubmissionTestResultHeaderView.swift in Sources */,
3456D95725EFD51900A62F5D /* ErrorReportHistoryViewModel.swift in Sources */,
1309194F247972C40066E329 /* PrivacyProtectionViewController.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,5 @@
"TicketValidation_CoronaWarnAppLink" = "https://apps.apple.com/de/app/corona-warn-app/id1512595757?mt=8";

"Stiko_VaccinationRecommendations" = "https://www.rki.de/stiko";

"ExposureSubmission_WarnWithoutTAN_FAQLink" = "https://www.coronawarn.app/en/faq/results/#warn_without_tan";
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,5 @@
"TicketValidation_CoronaWarnAppLink" = "https://apps.apple.com/de/app/corona-warn-app/id1512595757?mt=8";

"Stiko_VaccinationRecommendations" = "https://www.rki.de/stiko";

"ExposureSubmission_WarnWithoutTAN_FAQLink" = "https://www.coronawarn.app/de/faq/results/#warn_without_tan";
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,46 @@ Bei ausgeschalteter Hintergrundaktualisierung müssen Sie die App täglich aufru

"ExposureSubmissionDispatch_FindTestCentersDescription" = "Finden Sie Teststellen in Ihrer Nähe und falls Probleme auftreten, können Sie diese melden. \nSie werden auf eine externe Website des RKI weitergeleitet.";

/* SRS Warn Others Precondition Error Alert */

"ExposureSubmissionDispatch_SRSWarnOthersPreconditionError_title" = "Andere warnen nicht möglich";

"ExposureSubmissionDispatch_SRSWarnOthersPreconditionError_insufficientAppUsageTime_message" = "Leider können Sie momentan andere noch nicht warnen, da Sie die App noch nicht lange genug installiert haben. Dies dient der Vermeidung von Missbrauch.\nEinen offiziellen Test können Sie jederzeit registrieren und andere damit warnen. (Fehlercode %@)";

"ExposureSubmissionDispatch_SRSWarnOthersPreconditionError_positiveTestResultWasAlreadySubmittedWithin90Days_message" = "Sie können momentan andere nicht warnen, da Sie innerhalb der vergangenen 90 Tage bereits ein positives Testergebnis gemeldet haben. Dies dient der Vermeidung von Missbrauch.\nEinen offiziellen Test können Sie jederzeit registrieren und andere damit warnen. (Fehlercode %@)";

"ExposureSubmissionDispatch_SRSWarnOthersPreconditionError_deviceCheckError_message" = "Die Uhrzeit Ihres Smartphones stimmt nicht mit der aktuellen Zeit überein. Bitte korrigieren Sie die Uhrzeit in den Einstellungen Ihres Smartphones. Nach der Korrektur kann es einige Minuten dauern, bis die App die Uhrzeit erneut überprüft. Danach können Sie erneut versuchen zu warnen.";

"ExposureSubmissionDispatch_SRSWarnOthersPreconditionError_faqButtonTitle" = "FAQ";

"ExposureSubmissionDispatch_SRSWarnOthersPreconditionError_okButtonTitle" = "OK";

/* SRS Warn Others Error Message */

"ExposureSubmission_SRSError_title" = "Andere warnen nicht möglich";

"ExposureSubmission_SRSError_Message_CallHotline" = "Ein Fehler ist aufgetreten. Bitte versuchen Sie die Warnung später erneut zu senden oder kontaktieren Sie die technische Hotline über App-Informationen -> Technische Hotline. (Fehlercode %@)";

"ExposureSubmission_SRSError_Message_ChangeDeviceTime" = "Die Uhrzeit Ihres Smartphones stimmt nicht mit der aktuellen Zeit überein. Bitte korrigieren Sie die Uhrzeit in den Einstellungen Ihres Smartphones. Nach der Korrektur kann es einige Minuten dauern, bis die App die Uhrzeit erneut überprüft. Danach können Sie erneut versuchen zu warnen. (Fehlercode %@)";

"ExposureSubmission_SRSError_Message_DeviceNotSupported" = "Ihr Smartphone unterstützt diese Art von Warnung leider nicht. Einen offiziellen Test können Sie jederzeit in der App registrieren und andere damit warnen. (Fehlercode %@)";

"ExposureSubmission_SRSError_Message_DeviceNotTrusted" = "Ihr Gerät erfüllt nicht die notwendigen Sicherheitsanforderungen für diese Art von Warnung. Einen offiziellen Test können Sie jederzeit in der App registrieren und andere damit warnen. (Fehlercode %@)";

"ExposureSubmission_SRSError_Message_NoNetwork" = "Möglicherweise wurde Ihre Internet-Verbindung unterbrochen. Bitte prüfen Sie die Verbindung und versuchen Sie es erneut. (Fehlercode %@)";

"ExposureSubmission_SRSError_Message_SubmissionTooEarly" = "Sie können momentan andere nicht warnen, da Sie innerhalb der vergangenen %@ Tage bereits ein positives Testergebnis gemeldet haben. Dies dient der Vermeidung von Missbrauch. Einen offiziellen Test können Sie jederzeit in der App registrieren und andere damit warnen. (Fehlercode %@)";

"ExposureSubmission_SRSError_Message_TimeSinceOnboardingUnverified" = "Aus Sicherheitsgründen können Sie erst %@ Stunden, nachdem Sie die App installiert oder aktualisiert haben, diese Art von Warnung senden. Bitte versuchen Sie es in %@ Stunden erneut. (Fehlercode %@)";

"ExposureSubmission_SRSError_Message_TryAgainLater" = "Ein Fehler ist aufgetreten. Bitte versuchen Sie die Warnung erneut zu senden. (Fehlercode %@)";

"ExposureSubmission_SRSError_Message_TryAgainNextMonth" = "Die Warnung kann aus Sicherheitsgründen in diesem Kalendermonat nicht gesendet werden. Bitte warten Sie bis zum nächsten Kalendermonat oder warnen Sie jederzeit mit einem in der App registrierten offiziellen Test. (Fehlercode %@)";

"ExposureSubmission_SRSError_faqButtonTitle" = "FAQ";

"ExposureSubmission_SRSError_okButtonTitle" = "OK";

"SRS_submission_Invalid_OTP" = "Ein Fehler ist aufgetreten. Bitte versuchen Sie die Warnung erneut zu senden.";

/* Exposure Submission Hotline */
Expand Down Expand Up @@ -1001,6 +1041,14 @@ Bei ausgeschalteter Hintergrundaktualisierung müssen Sie die App täglich aufru

"ExposureSubmission_SRSTestTypeSelection_primaryButtonTitle" = "Weiter";

"ExposureSubmission_SRSFlow_alert_confirmWarnOthers_Title" = "Achtung";

"ExposureSubmission_SRSFlow_alert_confirmWarnOthers_Message" = "Sind Sie sicher, dass Sie jetzt andere Personen, mit denen Sie in letzter Zeit Kontakt hatten, warnen wollen?";

"ExposureSubmission_SRSFlow_alert_confirmWarnOthers_ActionConfirm" = "Andere Warnen";

"ExposureSubmission_SRSFlow_alert_confirmWarnOthers_ActionCancel" = "Abbrechen";

/* Exposure Submission Result */

"ExposureSubmissionResult_RemoveAlert_Title" = "Wollen Sie Ihr Testergebnis löschen?";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,5 @@
"TicketValidation_CoronaWarnAppLink" = "https://apps.apple.com/de/app/corona-warn-app/id1512595757?mt=8";

"Stiko_VaccinationRecommendations" = "https://www.rki.de/stiko";

"ExposureSubmission_WarnWithoutTAN_FAQLink" = "https://www.coronawarn.app/en/faq/results/#warn_without_tan";
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,5 @@
"TicketValidation_CoronaWarnAppLink" = "https://apps.apple.com/de/app/corona-warn-app/id1512595757?mt=8";

"Stiko_VaccinationRecommendations" = "https://www.rki.de/stiko";

"ExposureSubmission_WarnWithoutTAN_FAQLink" = "https://www.coronawarn.app/en/faq/results/#warn_without_tan";
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,5 @@
"TicketValidation_CoronaWarnAppLink" = "https://apps.apple.com/de/app/corona-warn-app/id1512595757?mt=8";

"Stiko_VaccinationRecommendations" = "https://www.rki.de/stiko";

"ExposureSubmission_WarnWithoutTAN_FAQLink" = "https://www.coronawarn.app/en/faq/results/#warn_without_tan";
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,5 @@
"TicketValidation_CoronaWarnAppLink" = "https://apps.apple.com/de/app/corona-warn-app/id1512595757?mt=8";

"Stiko_VaccinationRecommendations" = "https://www.rki.de/stiko";

"ExposureSubmission_WarnWithoutTAN_FAQLink" = "https://www.coronawarn.app/en/faq/results/#warn_without_tan";
14 changes: 14 additions & 0 deletions src/xcode/ENA/ENA/Source/Extensions/UIViewController+Helpers.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//
// 🦠 Corona-Warn-App
//

import UIKit

extension UIViewController {
func dismissAllModalViewControllers(animated: Bool, completion: CompletionVoid? = nil) {
view.window?.rootViewController?.dismiss(
animated: animated,
completion: completion
)
}
}
Loading