From f90f292da7ea29f0cef68362c97103d12daaec35 Mon Sep 17 00:00:00 2001 From: Tobi Omotayo Date: Thu, 8 Aug 2024 13:26:10 +0100 Subject: [PATCH] add a mechanism to update rootview decoded config from welcom screen. update changelog --- CHANGELOG.md | 5 +++++ Example/SmileID/App/RootView.swift | 5 ++++- Example/SmileID/WelcomeScreen.swift | 20 +++++++++++--------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31756bda4..e2ee291ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Release Notes +## [Unreleased] + +### Changed +* Remove `prodUrl` and `testURl` from Config model struct since the `prod_url` and `test_url` keys are no longer used in the `smile_config.json` file. + ## 10.2.7 ### Changed diff --git a/Example/SmileID/App/RootView.swift b/Example/SmileID/App/RootView.swift index ac27b9516..aa973a440 100644 --- a/Example/SmileID/App/RootView.swift +++ b/Example/SmileID/App/RootView.swift @@ -44,7 +44,10 @@ struct RootView: View { .ignoresSafeArea() .preferredColorScheme(.light) } else { - WelcomeScreen(showSuccess: $showSuccess) + WelcomeScreen( + showSuccess: $showSuccess, + didUpdateConfig: { viewModel.updateConfig(config: $0) } + ) } } } diff --git a/Example/SmileID/WelcomeScreen.swift b/Example/SmileID/WelcomeScreen.swift index e59102685..28ea8ee9b 100644 --- a/Example/SmileID/WelcomeScreen.swift +++ b/Example/SmileID/WelcomeScreen.swift @@ -6,7 +6,8 @@ struct WelcomeScreen: View { @State private var showQrCodeScanner = false @State private var errorMessage: String? @Binding var showSuccess: Bool - @State private var partnerId: String? + @State private var config: Config? + var didUpdateConfig: (Config) -> Void var body: some View { VStack(alignment: .leading) { @@ -82,8 +83,8 @@ struct WelcomeScreen: View { .sheet(isPresented: $showManualEntrySheet) { let content = SmileConfigEntryView(errorMessage: errorMessage) { smileConfig in let response = updateSmileConfig(smileConfig) - if let smilePartnerId = response { - partnerId = smilePartnerId + if let config = response { + self.config = config showSuccess = true showManualEntrySheet = false } else { @@ -107,8 +108,8 @@ struct WelcomeScreen: View { if case let .success(result) = response { let configJson = result.string let response = updateSmileConfig(configJson) - if let smilePartnerId = response { - partnerId = smilePartnerId + if let config = response { + self.config = config showSuccess = true showQrCodeScanner = false } @@ -117,18 +118,19 @@ struct WelcomeScreen: View { } .overlay( Group { - if showSuccess { + if let config, showSuccess { Color.black.opacity(0.3) .edgesIgnoringSafeArea(.all) .overlay( AlertView( icon: Image(systemName: "checkmark.circle.fill"), title: "Configuration Added", - description: "Welcome Partner \(partnerId ?? ""), you can " + description: "Welcome Partner \(config.partnerId), you can " + "now proceed to the home screen of the Sample App", buttonTitle: "Continue", onClick: { showSuccess = false + didUpdateConfig(config) } ) .padding([.leading, .trailing], 20) @@ -139,11 +141,11 @@ struct WelcomeScreen: View { } } -private func updateSmileConfig(_ configJson: String) -> String? { +private func updateSmileConfig(_ configJson: String) -> Config? { do { let config = try JSONDecoder().decode(Config.self, from: configJson.data(using: .utf8)!) UserDefaults.standard.set(configJson, forKey: "smileConfig") - return config.partnerId + return config } catch { print("Error decoding new config: \(error)") return nil