Add the Use Case selection screen to the onboarding flow.

This commit is contained in:
Doug
2022-02-02 12:24:22 +00:00
parent f0cef72d73
commit 295b3eaa99
48 changed files with 1178 additions and 134 deletions

View File

@@ -42,18 +42,13 @@ struct AnalyticsPromptViewState: BindableState {
/// A collection of strings for the UI that need to be created in
/// the coordinator or mocked in the RiotSwiftUI target.
protocol AnalyticsPromptStringsProtocol {
var appDisplayName: String { get }
var point1: NSAttributedString { get }
var point2: NSAttributedString { get }
var termsNewUser: NSAttributedString { get }
var termsUpgrade: NSAttributedString { get }
}
enum AnalyticsPromptType {
case newUser(termsString: NSAttributedString)
case upgrade(termsString: NSAttributedString)
case newUser
case upgrade
}
extension AnalyticsPromptType {
@@ -67,11 +62,23 @@ extension AnalyticsPromptType {
}
}
/// The terms string that should be displayed.
var termsStrings: NSAttributedString {
/// The main part of the terms string that should be displayed.
var mainTermsString: String {
switch self {
case .newUser(let termsString), .upgrade(let termsString):
return termsString
case .newUser:
return VectorL10n.analyticsPromptTermsNewUser("%@")
case .upgrade:
return VectorL10n.analyticsPromptTermsUpgrade("%@")
}
}
/// The tappable part of the terms string that should be displayed.
var termsLinkString: String {
switch self {
case .newUser:
return VectorL10n.analyticsPromptTermsLinkNewUser
case .upgrade:
return VectorL10n.analyticsPromptTermsLinkUpgrade
}
}
@@ -96,15 +103,7 @@ extension AnalyticsPromptType {
}
}
extension AnalyticsPromptType: CaseIterable {
static var allCases: [AnalyticsPromptType] {
let strings = MockAnalyticsPromptStrings()
return [
.newUser(termsString: strings.termsNewUser),
.upgrade(termsString: strings.termsUpgrade)
]
}
}
extension AnalyticsPromptType: CaseIterable { }
extension AnalyticsPromptType: Identifiable {
var id: String {