Files
lockdown-iOS-mirror/LockdowniOS/TablePaywallFeatureRowView.swift
Alexander Parshakov 2bc6adf847 Release 1.6.1
2023-01-10 21:17:38 +05:00

56 lines
2.1 KiB
Swift

//
// TablePaywallFeatureRowView.swift
// Lockdown
//
// Created by Alexander Parshakov on 12/5/22
// Copyright © 2022 Confirmed Inc. All rights reserved.
//
import UIKit
final class TablePaywallFeatureRowView: UIView, NibLoadable {
@IBOutlet private var featureLabel: UILabel!
@IBOutlet private var freeLevelIcon: UIImageView!
@IBOutlet private var vpnLevelIcon: UIImageView!
@IBOutlet private var proLevelIcon: UIImageView!
static func make(feature: PaywallTableFeature, isHighlighted: Bool) -> TablePaywallFeatureRowView {
let view = TablePaywallFeatureRowView.loadFromNib()
view.setupFeatureText(for: feature, isHighlighted: isHighlighted)
view.setupIcons(for: feature)
return view
}
private func setupFeatureText(for feature: PaywallTableFeature, isHighlighted: Bool) {
featureLabel.text = feature.body
featureLabel.textColor = isHighlighted ? .label : .gray
let fontSize: CGFloat = UIScreen.main.traitCollection.userInterfaceIdiom == .pad ? 16 : 11
featureLabel.font = .semiboldLockdownFont(size: fontSize)
}
private func setupIcons(for feature: PaywallTableFeature) {
freeLevelIcon.image = imageForAvailabilityStatus(feature.isAvailableForFree)
freeLevelIcon.tintColor = colorForAvailabilityStatus(feature.isAvailableForFree)
vpnLevelIcon.image = imageForAvailabilityStatus(feature.isAvailableOnVPN)
vpnLevelIcon.tintColor = colorForAvailabilityStatus(feature.isAvailableOnVPN)
proLevelIcon.image = imageForAvailabilityStatus(feature.isAvailableOnPro)
proLevelIcon.tintColor = colorForAvailabilityStatus(feature.isAvailableOnPro)
}
private func imageForAvailabilityStatus(_ isAvailable: Bool) -> UIImage {
let image = (isAvailable ? UIImage(named: "Checkmark") : UIImage(named: "ComparisonTableXmark"))
return image?.withRenderingMode(.alwaysTemplate) ?? UIImage()
}
private func colorForAvailabilityStatus(_ isAvailable: Bool) -> UIColor {
return isAvailable ? .confirmedBlue : .gray
}
}