Cleanup (IOS-238)

This commit is contained in:
Nathan Mattes 2024-05-21 18:11:18 +02:00
parent 9e486a82e6
commit 47bedff5e5
9 changed files with 23 additions and 74 deletions

View File

@ -106,9 +106,7 @@ extension AccountListViewModel {
guard let account = authentication.account() else { return }
// avatar
cell.avatarButton.avatarImageView.configure(
configuration: .init(url: account.avatarImageURL())
)
cell.avatarButton.avatarImageView.configure(with: account.avatarImageURL())
// name
do {

View File

@ -73,11 +73,7 @@ extension ProfileCardView.ViewModel {
private func bindUser(view: ProfileCardView) {
$authorAvatarImageURL
.sink { url in
view.avatarButton.avatarImageView.configure(
configuration: .init(
url: url
)
)
view.avatarButton.avatarImageView.configure(with: url)
view.avatarButton.avatarImageView.configure(
cornerConfiguration: .init(corner: .fixed(radius: 12))
)

View File

@ -66,8 +66,7 @@ extension NotificationView {
let author = notification.account
// author avatar
let configuration = AvatarImageView.Configuration(url: author.avatarImageURL())
avatarButton.avatarImageView.configure(configuration: configuration)
avatarButton.avatarImageView.configure(with: author.avatarImageURL())
avatarButton.avatarImageView.configure(cornerConfiguration: .init(corner: .fixed(radius: 12)))
// author name

View File

@ -116,9 +116,7 @@ extension ProfileHeaderView.ViewModel {
)
.sink { avatarImageURL, avatarImageEditing, isEditing, _ in
view.avatarButton.avatarImageView.image = avatarImageEditing
view.avatarButton.avatarImageView.configure(configuration: .init(
url: (!isEditing || avatarImageEditing == nil) ? avatarImageURL : nil
))
view.avatarButton.avatarImageView.configure(with: (!isEditing || avatarImageEditing == nil) ? avatarImageURL : nil)
}
.store(in: &disposeBag)
// blur for blocking & blockingBy

View File

@ -78,7 +78,7 @@ extension AutoCompleteSection {
}
cell.subtitleLabel.text = "@" + account.acct
cell.avatarImageView.isHidden = false
cell.avatarImageView.configure(configuration: .init(url: URL(string: account.avatar)))
cell.avatarImageView.configure(with: URL(string: account.avatar))
}
private static func configureEmoji(cell: AutoCompleteTableViewCell, emoji: Mastodon.Entity.Emoji, isFirst: Bool) {
@ -88,7 +88,7 @@ extension AutoCompleteSection {
// cell.subtitleLabel.text = isFirst ? L10n.Scene.Compose.AutoComplete.spaceToAdd : " "
cell.subtitleLabel.text = " "
cell.avatarImageView.isHidden = false
cell.avatarImageView.configure(configuration: .init(url: URL(string: emoji.url)))
cell.avatarImageView.configure(with: URL(string: emoji.url))
}
}

View File

@ -51,11 +51,7 @@ extension FamiliarFollowersDashboardView.ViewModel {
avatarButton.size = size
avatarButton.frame = CGRect(origin: origin, size: size)
view.avatarContainerView.addSubview(avatarButton)
avatarButton.avatarImageView.configure(
configuration: .init(
url: avatarURL
)
)
avatarButton.avatarImageView.configure(with: avatarURL)
avatarButton.avatarImageView.configure(
cornerConfiguration: .init(
corner: .fixed(radius: 7),

View File

@ -241,19 +241,9 @@ extension StatusView.ViewModel {
private func bindAuthor(statusView: StatusView) {
let authorView = statusView.authorView
// avatar
Publishers.CombineLatest(
$authorAvatarImage.removeDuplicates(),
$authorAvatarImageURL.removeDuplicates()
)
.sink { image, url in
let configuration: AvatarImageView.Configuration = {
if let image {
return AvatarImageView.Configuration(image: image)
} else {
return AvatarImageView.Configuration(url: url)
}
}()
authorView.avatarButton.avatarImageView.configure(configuration: configuration)
$authorAvatarImageURL.removeDuplicates()
.sink { url in
authorView.avatarButton.avatarImageView.configure(with: url)
authorView.avatarButton.avatarImageView.configure(cornerConfiguration: .init(corner: .fixed(radius: 12)))
}
.store(in: &disposeBag)

View File

@ -20,7 +20,6 @@ extension UserView {
public var disposeBag = Set<AnyCancellable>()
public var observations = Set<NSKeyValueObservation>()
@Published public var authorAvatarImage: UIImage?
@Published public var authorAvatarImageURL: URL?
@Published public var authorName: MetaContent?
@Published public var authorUsername: String?
@ -36,22 +35,13 @@ extension UserView.ViewModel {
func bind(userView: UserView) {
// avatar
Publishers.CombineLatest(
$authorAvatarImage,
$authorAvatarImageURL
)
.sink { image, url in
let configuration: AvatarImageView.Configuration = {
if let image = image {
return AvatarImageView.Configuration(image: image)
} else {
return AvatarImageView.Configuration(url: url)
}
}()
userView.avatarButton.avatarImageView.configure(configuration: configuration)
userView.avatarButton.avatarImageView.configure(cornerConfiguration: .init(corner: .fixed(radius: 7)))
}
.store(in: &disposeBag)
$authorAvatarImageURL
.sink { url in
userView.avatarButton.avatarImageView.configure(with: url)
userView.avatarButton.avatarImageView.configure(cornerConfiguration: .init(corner: .fixed(radius: 7)))
}
.store(in: &disposeBag)
// name
$authorName
.sink { metaContent in

View File

@ -11,7 +11,7 @@ import AlamofireImage
public class AvatarImageView: FLAnimatedImageView {
public var imageViewSize: CGSize?
public var configuration = Configuration(url: nil)
public var url: URL? = nil
public var cornerConfiguration = CornerConfiguration()
}
@ -55,35 +55,17 @@ extension AvatarImageView {
public static let placeholder = UIImage.placeholder(color: .systemFill)
public struct Configuration {
public let url: URL?
public init(
url: URL?
) {
self.url = url
}
public init(
image: UIImage
) {
self.url = nil
}
}
public func configure(configuration: Configuration) {
public func configure(with url: URL?) {
prepareForReuse()
self.configuration = configuration
guard let url = configuration.url else {
return
}
self.url = url
guard let url else { return }
switch url.pathExtension.lowercased() {
case "gif":
setImage(
url: configuration.url,
url: url,
scaleToSize: imageViewSize
)
default: