From eb2b874ab564e8f98be352c723760fe6da3afe84 Mon Sep 17 00:00:00 2001 From: shannon Date: Thu, 13 Mar 2025 13:05:55 -0400 Subject: [PATCH] Show new avatar image as soon as it has been chosen. Also, lighten the editing overlay effect on the header and avatar images. --- .../Profile/Header/View/ProfileHeaderView+ViewModel.swift | 4 +++- Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift | 6 +++--- Mastodon/Scene/Profile/ProfileViewController.swift | 3 +++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView+ViewModel.swift b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView+ViewModel.swift index f7d461283..102c493b8 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView+ViewModel.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView+ViewModel.swift @@ -116,7 +116,9 @@ extension ProfileHeaderView.ViewModel { ) .sink { avatarImageURL, avatarImageEditing, isEditing, _ in view.avatarButton.avatarImageView.image = avatarImageEditing - view.avatarButton.avatarImageView.configure(with: (!isEditing || avatarImageEditing == nil) ? avatarImageURL : nil) + if !isEditing || avatarImageEditing == nil { + view.avatarButton.avatarImageView.configure(with: avatarImageURL) + } } .store(in: &disposeBag) // blur for blocking & blockingBy diff --git a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift index 19bbce432..076fd35d8 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift @@ -32,8 +32,8 @@ final class ProfileHeaderView: UIView { static let friendshipActionButtonSize = CGSize(width: 108, height: 34) static let bannerImageViewPlaceholderColor = UIColor.systemGray - static let bannerImageViewOverlayViewBackgroundNormalColor = UIColor.black.withAlphaComponent(0.5) - static let bannerImageViewOverlayViewBackgroundEditingColor = UIColor.black.withAlphaComponent(0.8) + static let bannerImageViewOverlayViewBackgroundNormalColor = UIColor.black.withAlphaComponent(0.1) + static let bannerImageViewOverlayViewBackgroundEditingColor = UIColor.black.withAlphaComponent(0.2) weak var delegate: ProfileHeaderViewDelegate? var disposeBag = Set() @@ -99,7 +99,7 @@ final class ProfileHeaderView: UIView { func setupImageOverlayViews() { editBannerButton.tintColor = .white - editAvatarBackgroundView.backgroundColor = UIColor.black.withAlphaComponent(0.6) + editAvatarBackgroundView.backgroundColor = UIColor.black.withAlphaComponent(0.2) editAvatarButtonOverlayIndicatorView.tintColor = .white } diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index 6e0ead38a..9546fb7b6 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -599,6 +599,9 @@ extension ProfileViewController { let newBannerImage: UIImage? let newAvatarImage: UIImage? + profileHeaderViewController?.viewModel.isUpdating = true + defer { profileHeaderViewController?.viewModel.isUpdating = false } + if case let .local(image) = headerDetails.bannerImage { if image.size.width <= ProfileHeaderViewModel.bannerImageMaxSizeInPixel.width { newBannerImage = image