From 6f1427308e124906d0d8637974097258302c6c0d Mon Sep 17 00:00:00 2001 From: Cesar de la Vega Date: Tue, 21 Jan 2025 12:46:36 +0100 Subject: [PATCH 1/2] add titleInDefaultLocale to callback --- .../CustomerCenter/Data/CustomerCenterAction.swift | 8 +++++++- .../Data/CustomerCenterConfigTestData.swift | 3 +++ .../ViewModels/FeedbackSurveyViewModel.swift | 2 ++ Sources/CustomerCenter/CustomerCenterConfigData.swift | 9 +++++++-- .../Responses/CustomerCenterConfigResponse.swift | 1 + .../PaywallsTester/UI/Views/SamplePaywallsList.swift | 2 ++ 6 files changed, 22 insertions(+), 3 deletions(-) diff --git a/RevenueCatUI/CustomerCenter/Data/CustomerCenterAction.swift b/RevenueCatUI/CustomerCenter/Data/CustomerCenterAction.swift index 03df8ba062..409f019e26 100644 --- a/RevenueCatUI/CustomerCenter/Data/CustomerCenterAction.swift +++ b/RevenueCatUI/CustomerCenter/Data/CustomerCenterAction.swift @@ -23,7 +23,13 @@ public enum CustomerCenterAction { /// - Parameter refundRequestStatus: The status of the refund request case refundRequestCompleted(_ refundRequestStatus: RefundRequestStatus) /// An option of the feedback survey has been selected - /// - Parameter feedbackSurveyOptionId: The id of the feedback survey option selected + /// - Parameter feedbackSurveyOptionId: The id of the selected feedback survey option case feedbackSurveyCompleted(_ feedbackSurveyOptionId: String) + /// An option of the feedback survey has been selected + /// - Parameter feedbackSurveyOptionId: The id of the selected feedback survey option + /// - Parameter titleInDefaultLocale: The displayed text of the selected feedback survey + /// option in the default locale (English by default) + case feedbackSurveyCompletedWithTitleInDefaultLocale(_ feedbackSurveyOptionId: String, + _ titleInDefaultLocale: String) } diff --git a/RevenueCatUI/CustomerCenter/Data/CustomerCenterConfigTestData.swift b/RevenueCatUI/CustomerCenter/Data/CustomerCenterConfigTestData.swift index 029b436178..b33ea3300a 100644 --- a/RevenueCatUI/CustomerCenter/Data/CustomerCenterConfigTestData.swift +++ b/RevenueCatUI/CustomerCenter/Data/CustomerCenterConfigTestData.swift @@ -73,16 +73,19 @@ enum CustomerCenterConfigTestData { .init( id: "1", title: "Too expensive", + titleInDefaultLocale: "Too expensive", promotionalOffer: nil ), .init( id: "2", title: "Don't use the app", + titleInDefaultLocale: "Don't use the app", promotionalOffer: nil ), .init( id: "3", title: "Bought by mistake", + titleInDefaultLocale: "Bought by mistake", promotionalOffer: nil ) ] diff --git a/RevenueCatUI/CustomerCenter/ViewModels/FeedbackSurveyViewModel.swift b/RevenueCatUI/CustomerCenter/ViewModels/FeedbackSurveyViewModel.swift index a49feeb1f8..85e4204eb4 100644 --- a/RevenueCatUI/CustomerCenter/ViewModels/FeedbackSurveyViewModel.swift +++ b/RevenueCatUI/CustomerCenter/ViewModels/FeedbackSurveyViewModel.swift @@ -64,6 +64,8 @@ class FeedbackSurveyViewModel: ObservableObject { if let customerCenterActionHandler = self.customerCenterActionHandler { trackSurveyAnswerSubmitted(option: option, darkMode: darkMode, displayMode: displayMode) customerCenterActionHandler(.feedbackSurveyCompleted(option.id)) + customerCenterActionHandler(.feedbackSurveyCompletedWithTitleInDefaultLocale(option.id, + option.titleInDefaultLocale)) } if let promotionalOffer = option.promotionalOffer, diff --git a/Sources/CustomerCenter/CustomerCenterConfigData.swift b/Sources/CustomerCenter/CustomerCenterConfigData.swift index a2cc6a69ad..2a9a3d6507 100644 --- a/Sources/CustomerCenter/CustomerCenterConfigData.swift +++ b/Sources/CustomerCenter/CustomerCenterConfigData.swift @@ -309,11 +309,16 @@ public struct CustomerCenterConfigData { public let id: String public let title: String + public let titleInDefaultLocale: String public let promotionalOffer: PromotionalOffer? - public init(id: String, title: String, promotionalOffer: PromotionalOffer?) { + public init(id: String, + title: String, + titleInDefaultLocale: String, + promotionalOffer: PromotionalOffer?) { self.id = id self.title = title + self.titleInDefaultLocale = titleInDefaultLocale self.promotionalOffer = promotionalOffer } @@ -541,12 +546,12 @@ extension CustomerCenterConfigData.HelpPath.FeedbackSurvey.Option { init(from response: CustomerCenterConfigResponse.HelpPath.FeedbackSurvey.Option) { self.id = response.id self.title = response.title + self.titleInDefaultLocale = response.titleInDefaultLocale if let promotionalOffer = response.promotionalOffer { self.promotionalOffer = CustomerCenterConfigData.HelpPath.PromotionalOffer(from: promotionalOffer) } else { self.promotionalOffer = nil } - } } diff --git a/Sources/Networking/Responses/CustomerCenterConfigResponse.swift b/Sources/Networking/Responses/CustomerCenterConfigResponse.swift index 6984bae308..35629e477f 100644 --- a/Sources/Networking/Responses/CustomerCenterConfigResponse.swift +++ b/Sources/Networking/Responses/CustomerCenterConfigResponse.swift @@ -87,6 +87,7 @@ struct CustomerCenterConfigResponse { let id: String let title: String + let titleInDefaultLocale: String let promotionalOffer: PromotionalOffer? } diff --git a/Tests/TestingApps/PaywallsTester/PaywallsTester/UI/Views/SamplePaywallsList.swift b/Tests/TestingApps/PaywallsTester/PaywallsTester/UI/Views/SamplePaywallsList.swift index 6a4371fb04..850eea8df3 100644 --- a/Tests/TestingApps/PaywallsTester/PaywallsTester/UI/Views/SamplePaywallsList.swift +++ b/Tests/TestingApps/PaywallsTester/PaywallsTester/UI/Views/SamplePaywallsList.swift @@ -256,6 +256,8 @@ extension SamplePaywallsList { print("CustomerCenter: refundRequestCompleted. Result: \(status)") case .feedbackSurveyCompleted(let surveyOptionID): print("CustomerCenter: feedbackSurveyCompleted. Result: \(surveyOptionID)") + case .feedbackSurveyCompletedWithTitleInDefaultLocale(let surveyOptionID, let titleInDefaultLocale): + print("CustomerCenter: feedbackSurveyCompleted. Result: \(surveyOptionID); \(titleInDefaultLocale)") } } } From 5ed58bc9a3689c9d950d69e53b43456b0902bb3d Mon Sep 17 00:00:00 2001 From: Cesar de la Vega Date: Tue, 21 Jan 2025 13:05:03 +0100 Subject: [PATCH 2/2] change to return the whole Option --- .../CustomerCenter/Data/CustomerCenterAction.swift | 7 ++----- .../ViewModels/FeedbackSurveyViewModel.swift | 3 +-- .../PaywallsTester/UI/Views/SamplePaywallsList.swift | 4 ++-- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/RevenueCatUI/CustomerCenter/Data/CustomerCenterAction.swift b/RevenueCatUI/CustomerCenter/Data/CustomerCenterAction.swift index 409f019e26..a212180b5d 100644 --- a/RevenueCatUI/CustomerCenter/Data/CustomerCenterAction.swift +++ b/RevenueCatUI/CustomerCenter/Data/CustomerCenterAction.swift @@ -26,10 +26,7 @@ public enum CustomerCenterAction { /// - Parameter feedbackSurveyOptionId: The id of the selected feedback survey option case feedbackSurveyCompleted(_ feedbackSurveyOptionId: String) /// An option of the feedback survey has been selected - /// - Parameter feedbackSurveyOptionId: The id of the selected feedback survey option - /// - Parameter titleInDefaultLocale: The displayed text of the selected feedback survey - /// option in the default locale (English by default) - case feedbackSurveyCompletedWithTitleInDefaultLocale(_ feedbackSurveyOptionId: String, - _ titleInDefaultLocale: String) + /// - Parameter option: The ``CustomerCenterConfigData.HelpPath.FeedbackSurvey.Option`` that was selected + case feedbackSurveyCompletedWithOption(_ option: CustomerCenterConfigData.HelpPath.FeedbackSurvey.Option) } diff --git a/RevenueCatUI/CustomerCenter/ViewModels/FeedbackSurveyViewModel.swift b/RevenueCatUI/CustomerCenter/ViewModels/FeedbackSurveyViewModel.swift index 85e4204eb4..fcadd028db 100644 --- a/RevenueCatUI/CustomerCenter/ViewModels/FeedbackSurveyViewModel.swift +++ b/RevenueCatUI/CustomerCenter/ViewModels/FeedbackSurveyViewModel.swift @@ -64,8 +64,7 @@ class FeedbackSurveyViewModel: ObservableObject { if let customerCenterActionHandler = self.customerCenterActionHandler { trackSurveyAnswerSubmitted(option: option, darkMode: darkMode, displayMode: displayMode) customerCenterActionHandler(.feedbackSurveyCompleted(option.id)) - customerCenterActionHandler(.feedbackSurveyCompletedWithTitleInDefaultLocale(option.id, - option.titleInDefaultLocale)) + customerCenterActionHandler(.feedbackSurveyCompletedWithOption(option)) } if let promotionalOffer = option.promotionalOffer, diff --git a/Tests/TestingApps/PaywallsTester/PaywallsTester/UI/Views/SamplePaywallsList.swift b/Tests/TestingApps/PaywallsTester/PaywallsTester/UI/Views/SamplePaywallsList.swift index 850eea8df3..dabcfd0c68 100644 --- a/Tests/TestingApps/PaywallsTester/PaywallsTester/UI/Views/SamplePaywallsList.swift +++ b/Tests/TestingApps/PaywallsTester/PaywallsTester/UI/Views/SamplePaywallsList.swift @@ -256,8 +256,8 @@ extension SamplePaywallsList { print("CustomerCenter: refundRequestCompleted. Result: \(status)") case .feedbackSurveyCompleted(let surveyOptionID): print("CustomerCenter: feedbackSurveyCompleted. Result: \(surveyOptionID)") - case .feedbackSurveyCompletedWithTitleInDefaultLocale(let surveyOptionID, let titleInDefaultLocale): - print("CustomerCenter: feedbackSurveyCompleted. Result: \(surveyOptionID); \(titleInDefaultLocale)") + case .feedbackSurveyCompletedWithOption(let option): + print("CustomerCenter: feedbackSurveyCompleted. Result: \(option)") } } }