diff --git a/Kickstarter-iOS/Features/PledgedProjectsOverview/CardView/PPOAlertFlag.swift b/Kickstarter-iOS/Features/PledgedProjectsOverview/CardView/PPOAlertFlag.swift index a48ca3c562..793ae2dc5d 100644 --- a/Kickstarter-iOS/Features/PledgedProjectsOverview/CardView/PPOAlertFlag.swift +++ b/Kickstarter-iOS/Features/PledgedProjectsOverview/CardView/PPOAlertFlag.swift @@ -8,16 +8,20 @@ struct PPOAlertFlag: View { var body: some View { HStack { - self.image - .renderingMode(.template) - .aspectRatio(contentMode: .fit) - .foregroundStyle(self.foregroundColor) - .frame(width: Constants.imageSize, height: Constants.imageSize) - Spacer() - .frame(width: Constants.spacerWidth) + if let icon = alert.icon { + self.image(forIcon: icon) + .renderingMode(.template) + .aspectRatio(contentMode: .fit) + .foregroundStyle(self.foregroundColor) + .frame(width: Constants.imageSize, height: Constants.imageSize) + Spacer() + .frame(width: Constants.spacerWidth) + } + Text(self.alert.message) .font(Font(PPOStyles.flagFont)) .foregroundStyle(self.foregroundColor) + .frame(minHeight: Constants.imageSize) } .padding(Constants.padding) .background(self.backgroundColor) @@ -29,8 +33,8 @@ struct PPOAlertFlag: View { .accessibilityAddTraits(.isStaticText) } - var image: Image { - switch self.alert.icon { + private func image(forIcon icon: PPOProjectCardModel.Alert.AlertIcon) -> Image { + switch icon { case .time: Image(PPOStyles.timeImage) case .alert: @@ -44,6 +48,8 @@ struct PPOAlertFlag: View { Color(uiColor: PPOStyles.warningColor.foreground) case .alert: Color(uiColor: PPOStyles.alertColor.foreground) + case .info: + Color(uiColor: PPOStyles.infoColor.foreground) } } @@ -53,6 +59,8 @@ struct PPOAlertFlag: View { Color(uiColor: PPOStyles.warningColor.background) case .alert: Color(uiColor: PPOStyles.alertColor.background) + case .info: + Color(uiColor: PPOStyles.infoColor.background) } } @@ -72,6 +80,7 @@ struct PPOAlertFlag: View { #Preview("Stack of flags") { VStack(alignment: .leading, spacing: 8) { + PPOAlertFlag(alert: .init(type: .info, icon: nil, message: "Awaiting reward")) PPOAlertFlag(alert: .init(type: .warning, icon: .time, message: "Address locks in 8 hours")) PPOAlertFlag(alert: .init(type: .warning, icon: .alert, message: "Survey available")) PPOAlertFlag(alert: .init(type: .alert, icon: .alert, message: "Payment failed")) diff --git a/Kickstarter-iOS/Features/PledgedProjectsOverview/CardView/PPOProjectCardModel.swift b/Kickstarter-iOS/Features/PledgedProjectsOverview/CardView/PPOProjectCardModel.swift index 754b6fce65..4572da9beb 100644 --- a/Kickstarter-iOS/Features/PledgedProjectsOverview/CardView/PPOProjectCardModel.swift +++ b/Kickstarter-iOS/Features/PledgedProjectsOverview/CardView/PPOProjectCardModel.swift @@ -113,17 +113,17 @@ public struct PPOProjectCardModel: Identifiable, Equatable, Hashable { public struct Alert: Identifiable, Equatable, Hashable { public let type: AlertType - public let icon: AlertIcon + public let icon: AlertIcon? public let message: String - public init(type: AlertType, icon: AlertIcon, message: String) { + public init(type: AlertType, icon: AlertIcon?, message: String) { self.type = type self.icon = icon self.message = message } public var id: String { - "\(self.type)-\(self.icon)-\(self.message)" + "\(self.type)-\(self.icon?.id ?? "noIcon")-\(self.message)" } public enum AlertIcon: Identifiable, Equatable { @@ -143,6 +143,7 @@ public struct PPOProjectCardModel: Identifiable, Equatable, Hashable { public enum AlertType: Identifiable, Equatable { case warning case alert + case info public var id: String { switch self { @@ -150,6 +151,8 @@ public struct PPOProjectCardModel: Identifiable, Equatable, Hashable { "warning" case .alert: "alert" + case .info: + "info" } } } @@ -172,12 +175,14 @@ extension PPOProjectCardModel.Alert { .alert case "warning": .warning + case "info": + .info default: nil } let message = flag.message - guard let alertType, let alertIcon, let message else { + guard let alertType, let message else { return nil } diff --git a/Kickstarter-iOS/Features/PledgedProjectsOverview/PPOStyles.swift b/Kickstarter-iOS/Features/PledgedProjectsOverview/PPOStyles.swift index 999b5b12e3..3f249f2e4d 100644 --- a/Kickstarter-iOS/Features/PledgedProjectsOverview/PPOStyles.swift +++ b/Kickstarter-iOS/Features/PledgedProjectsOverview/PPOStyles.swift @@ -24,6 +24,11 @@ enum PPOStyles { background: LegacyColors.ksr_white.uiColor() ) + static let infoColor = ( + foreground: LegacyColors.Tags.Success.foreground.uiColor(), + background: LegacyColors.Tags.Success.background.uiColor() + ) + static let warningColor = ( foreground: LegacyColors.Tags.Warn.foreground.uiColor(), background: LegacyColors.Tags.Warn.background.uiColor()