Skip to content

Instantly share code, notes, and snippets.

View radude89's full-sized avatar
🏖️
Swifting

Radu Dan radude89

🏖️
Swifting
View GitHub Profile
@radude89
radude89 / viper-fg-37.swift
Created July 15, 2021 03:26
viper-fg-37.swift
// MARK: - GatherViewController
final class GatherViewController: UIViewController, GatherViewable {
// MARK: - Properties
@IBOutlet weak var playerTableView: UITableView!
@IBOutlet weak var scoreLabelView: ScoreLabelView!
@IBOutlet weak var scoreStepper: ScoreStepper!
@IBOutlet weak var timerLabel: UILabel!
@IBOutlet weak var timerView: UIView!
@IBOutlet weak var timePickerView: UIPickerView!
@radude89
radude89 / viper-fg-36.swift
Created July 15, 2021 03:26
viper-fg-36.swift
func cellPresenter(at index: Int) -> PlayerTableViewCellPresenterProtocol {
if let cellPresenter = cellPresenters[index] {
cellPresenter.viewState = viewState
return cellPresenter
}
let cellPresenter = PlayerTableViewCellPresenter(viewState: viewState)
cellPresenters[index] = cellPresenter
return cellPresenter
@radude89
radude89 / viper-fg-35.swift
Created July 15, 2021 03:26
viper-fg-35.swift
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell: PlayerTableViewCell = tableView.dequeueReusableCell(withIdentifier: "PlayerTableViewCell") as? PlayerTableViewCell else {
return UITableViewCell()
}
let index = indexPath.row
let cellPresenter = presenter.cellPresenter(at: index)
let player = presenter.player(at: index)
cellPresenter.view = cell
@radude89
radude89 / viper-fg-34.swift
Created July 15, 2021 03:25
viper-fg-34.swift
final class PlayerTableViewCell: UITableViewCell, PlayerTableViewCellProtocol {
@IBOutlet weak var checkboxImageView: UIImageView!
@IBOutlet weak var playerCellLeftConstraint: NSLayoutConstraint!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var positionLabel: UILabel!
@IBOutlet weak var skillLabel: UILabel!
private enum Constants {
static let playerContentLeftPadding: CGFloat = 10.0
static let playerContentAndIconLeftPadding: CGFloat = -20.0
@radude89
radude89 / viper-fg-33.swift
Created July 15, 2021 03:25
viper-fg-33.swift
final class PlayerTableViewCellPresenter: PlayerTableViewCellPresenterProtocol {
var view: PlayerTableViewCellProtocol?
var viewState: PlayerListViewState
var isSelected = false
init(view: PlayerTableViewCellProtocol? = nil,
viewState: PlayerListViewState = .list) {
self.view = view
self.viewState = viewState
@radude89
radude89 / viper-fg-32.swift
Created July 15, 2021 03:25
viper-fg-32.swift
protocol PlayerTableViewCellPresenterProtocol: AnyObject {
var view: PlayerTableViewCellProtocol? { get set }
var viewState: PlayerListViewState { get set }
var isSelected: Bool { get set }
func setupView()
func configure(with player: PlayerResponseModel)
func toggle()
}
@radude89
radude89 / viper-fg-31.swift
Created July 15, 2021 03:25
viper-fg-31.swift
// MARK: - PlayerAddDelegate
extension PlayerListPresenter: PlayerAddDelegate {
func didAddPlayer() {
loadPlayers()
}
}
// MARK: - ConfirmPlayersDelegate
extension PlayerListPresenter: ConfirmPlayersDelegate {
func didEndGather() {
@radude89
radude89 / viper-fg-30.swift
Created July 15, 2021 03:24
viper-fg-30.swift
extension PlayerAddPresenter: PlayerAddPresenterServiceHandler {
func playerWasAdded() {
view?.hideLoadingView()
delegate?.didAddPlayer()
router.dismissAddView()
}
}
@radude89
radude89 / viper-fg-29.swift
Created July 15, 2021 03:24
viper-fg-29.swift
extension PlayerListRouter: PlayerListRouterProtocol {
func showAddPlayer(delegate: PlayerAddDelegate) {
let module = moduleFactory.makePlayerAdd(using: navigationController, delegate: delegate)
if let viewController = module.assemble() {
navigationController.pushViewController(viewController, animated: true)
}
}
func showConfirmPlayers(with playersDictionary: [TeamSection: [PlayerResponseModel]], delegate: ConfirmPlayersDelegate) {
@radude89
radude89 / viper-fg-28.swift
Created July 15, 2021 03:24
viper-fg-28.swift
func confirmOrAddPlayers() {
if isInListViewMode {
showAddPlayerView()
} else {
showConfirmPlayersView()
}
}
private var isInListViewMode: Bool {
viewState == .list