mastodon-ios/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+D...

54 lines
2.0 KiB
Swift

//
// MastodonRegisterViewModel+Diffable.swift
// Mastodon
//
// Created by MainasuK on 2022-1-5.
//
import UIKit
import Combine
import MastodonAsset
import MastodonLocalization
extension MastodonRegisterViewModel {
private func configureAvatar(cell: MastodonRegisterAvatarTableViewCell) {
self.$avatarImage
.receive(on: DispatchQueue.main)
.sink { [weak self, weak cell] image in
guard let self = self else { return }
guard let cell = cell else { return }
let image = image ?? Asset.Scene.Onboarding.avatarPlaceholder.image
cell.avatarButton.setImage(image, for: .normal)
cell.avatarButton.menu = self.createAvatarMediaContextMenu()
cell.avatarButton.showsMenuAsPrimaryAction = true
}
.store(in: &cell.disposeBag)
}
private func configureTextFieldCell(
cell: MastodonRegisterTextFieldTableViewCell,
validateState: Published<ValidateState>.Publisher
) {
Publishers.CombineLatest(
validateState,
cell.textField.publisher(for: \.isFirstResponder)
)
.receive(on: DispatchQueue.main)
.sink { [weak cell] validateState, isFirstResponder in
guard let cell = cell else { return }
switch validateState {
case .empty:
cell.textFieldShadowContainer.shadowColor = isFirstResponder ? Asset.Colors.brandBlue.color : .black
cell.textFieldShadowContainer.shadowAlpha = isFirstResponder ? 1 : 0.25
case .valid:
cell.textFieldShadowContainer.shadowColor = Asset.Colors.TextField.valid.color
cell.textFieldShadowContainer.shadowAlpha = 1
case .invalid:
cell.textFieldShadowContainer.shadowColor = Asset.Colors.TextField.invalid.color
cell.textFieldShadowContainer.shadowAlpha = 1
}
}
.store(in: &cell.disposeBag)
}
}