-
Notifications
You must be signed in to change notification settings - Fork 1
/
ResultViewController.swift
115 lines (91 loc) · 2.79 KB
/
ResultViewController.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
//
// ResultViewController.swift
// FlashSpeak
//
// Created by Denis Dmitriev on 07.05.2023.
//
import UIKit
import SwiftUI
class ResultViewController: UIViewController {
// MARK: - Properties
var style: GradientStyle?
// MARK: - Private properties
private var presenter: ResultViewOutput
// MARK: - Constraction
init(
presenter: ResultViewOutput
) {
self.presenter = presenter
self.style = presenter.list.style
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private var resultView: ResultView {
return self.view as? ResultView ?? ResultView(color: style?.color)
}
// MARK: - Lifecycle
override func loadView() {
super.loadView()
self.view = ResultView(color: style?.color)
}
override func viewDidLoad() {
super.viewDidLoad()
presenter.subscribe()
addTargets()
}
// MARK: - Private functions
private func addTargets() {
resultView.repeatButton.addTarget(
self,
action: #selector(repeatDidTap(sender:)),
for: .touchUpInside
)
resultView.settingsButton.addTarget(
self,
action: #selector(didTapSettings(sender:)),
for: .touchUpInside
)
}
// MARK: - Actions
@objc func repeatDidTap(sender: UIButton) {
repeatDidTap()
}
@objc private func didTapSettings(sender: UIButton) {
settingsDidTap()
}
}
// MARK: - Functions
extension ResultViewController: ResultViewInput {
func repeatDidTap() {
presenter.repeatDidTap()
}
func settingsDidTap() {
presenter.settingsDidTap()
}
func updateResults(
resultViewModels: [ResultViewModel],
chartViewModels: [[ChartLearnViewModel]],
color: UIColor
) {
resultView.updateResults(viewModels: resultViewModels)
if chartViewModels.isEmpty {
resultView.chartStackView.isHidden = true
} else {
chartViewModels.forEach { viewModels in
let viewController = UIHostingController(
rootView: ChartLearnView(viewModels: viewModels, color: Color(color))
)
let chartView = viewController.view ?? UIView()
resultView.updateChartView(chartView)
addChild(viewController)
viewController.didMove(toParent: self)
resultView.chartStackView.isHidden = false
}
}
}
func updateMistakes(viewModels: [WordCellModel]) {
resultView.updateMistakes(viewModels: viewModels)
}
}