// // WhatProblemStepViewModel.swift // Lockdown // // Created by Pavel Vilbik on 23.06.23. // Copyright © 2023 Confirmed Inc. All rights reserved. // import UIKit class WhatProblemStepViewModel: BaseStepViewModel, StepViewModelProtocol { private let isUserPremium: Bool let step: Steps = .whatsProblem private let problemList = [ NSLocalizedString("Internet connection is blocked", comment: ""), NSLocalizedString("VPN not connecting", comment: ""), NSLocalizedString("Blocking not working", comment: ""), NSLocalizedString("Battery Drain", comment: ""), NSLocalizedString("Other", comment: "") ] private var selectedProblemIndex = -1 private var otherInput: String? { didSet { didChangeReady?(isFilled) } } private var selectedProblem: String? { if (0..= 0 else { return nil } var result = "" result.append(problemList[selectedProblemIndex]) if isSelectedOther(), let otherInput { result.append("\n") result.append(otherInput) } result.append("\n") return result } var isFilled: Bool { guard selectedProblemIndex >= 0 else { return false } if isSelectedOther() { return !(otherInput?.isEmpty ?? true) } return true } var didChangeReady: ((Bool) -> Void)? init(isUserPremium: Bool, didChangeReady: ((Bool) -> Void)?) { self.isUserPremium = isUserPremium self.didChangeReady = didChangeReady } override func updateRows() { staticTableView?.clear() if isUserPremium { addTitleRow( NSLocalizedString("What problem are you experiencing?", comment: ""), subtitle: nil ) } else { staticTableView?.addRowCell { cell in let titleView = ImageBannerWithTitleView() titleView.imageView.image = UIImage(named: "feedback-promo") titleView.titleLabel.text = NSLocalizedString("Get a promo Discount", comment: "") titleView.subtitleLabel.text = NSLocalizedString("Let us know your opinion, and as a thank you for your feedback, we’ll have a special offer waiting for you at the end!", comment: "") self.setupClear(cell) cell.addSubview(titleView) titleView.anchors.edges.pin(insets: .init(top: 0, left: 0, bottom: 30, right: 0)) } } staticTableView?.addRowCell { cell in let titleView = SectionTitleView() titleView.titleLabel.text = NSLocalizedString("Select your problem", comment: "") self.setupClear(cell) cell.addSubview(titleView) titleView.anchors.edges.pin(insets: .init(top: 0, left: 0, bottom: 5, right: 0)) } for index in 0.. Bool { selectedProblemIndex == problemList.count - 1 } private func updateForSelect(problemIndex: Int, isSelected: Bool) { if isSelected { selectedProblemIndex = problemIndex } else { selectedProblemIndex = -1 } if !isSelectedOther() { otherInput = nil } updateRows() didChangeReady?(isFilled) } }