mirror of
https://github.com/mastodon/mastodon-ios
synced 2025-04-11 22:58:02 +02:00
Wire up the header image to be actually displayed
This commit is contained in:
parent
23a0943b12
commit
4af5d3910a
@ -159,6 +159,9 @@ extension ProfileHeaderViewController {
|
||||
viewModel.$isUpdating
|
||||
.assign(to: \.isUpdating, on: profileHeaderView.viewModel)
|
||||
.store(in: &disposeBag)
|
||||
viewModel.profileInfoEditing.$header
|
||||
.assign(to: \.headerImageEditing, on: profileHeaderView.viewModel)
|
||||
.store(in: &disposeBag)
|
||||
viewModel.profileInfoEditing.$avatar
|
||||
.assign(to: \.avatarImageEditing, on: profileHeaderView.viewModel)
|
||||
.store(in: &disposeBag)
|
||||
@ -224,7 +227,13 @@ extension ProfileHeaderViewController {
|
||||
DispatchQueue.main.async {
|
||||
let cropController = CropViewController(croppingStyle: .default, image: image)
|
||||
cropController.delegate = self
|
||||
cropController.setAspectRatioPreset(.presetSquare, animated: true)
|
||||
switch self.currentImageType {
|
||||
case .banner:
|
||||
cropController.customAspectRatio = CGSize(width: 3, height: 1)
|
||||
cropController.setAspectRatioPreset(.presetCustom, animated: true)
|
||||
case .avatar:
|
||||
cropController.setAspectRatioPreset(.presetSquare, animated: true)
|
||||
}
|
||||
cropController.aspectRatioPickerButtonHidden = true
|
||||
cropController.aspectRatioLockEnabled = true
|
||||
pickerViewController.dismiss(animated: true, completion: {
|
||||
|
@ -28,6 +28,7 @@ extension ProfileHeaderView {
|
||||
|
||||
@Published var emojiMeta: MastodonContent.Emojis = [:]
|
||||
@Published var headerImageURL: URL?
|
||||
@Published var headerImageEditing: UIImage?
|
||||
@Published var avatarImageURL: URL?
|
||||
@Published var avatarImageEditing: UIImage?
|
||||
|
||||
@ -61,14 +62,19 @@ extension ProfileHeaderView.ViewModel {
|
||||
|
||||
func bind(view: ProfileHeaderView) {
|
||||
// header
|
||||
Publishers.CombineLatest(
|
||||
Publishers.CombineLatest4(
|
||||
$headerImageURL,
|
||||
$headerImageEditing,
|
||||
$isEditing,
|
||||
viewDidAppear
|
||||
)
|
||||
.sink { headerImageURL, _ in
|
||||
.sink { headerImageURL, headerImageEditing, isEditing, _ in
|
||||
view.bannerImageView.af.cancelImageRequest()
|
||||
let placeholder = UIImage.placeholder(color: ProfileHeaderView.bannerImageViewPlaceholderColor)
|
||||
guard let bannerImageURL = headerImageURL else {
|
||||
let defaultPlaceholder = UIImage.placeholder(color: ProfileHeaderView.bannerImageViewPlaceholderColor)
|
||||
let placeholder = isEditing ? (headerImageEditing ?? defaultPlaceholder) : defaultPlaceholder
|
||||
guard let bannerImageURL = headerImageURL,
|
||||
!isEditing || headerImageEditing == nil
|
||||
else {
|
||||
view.bannerImageView.image = placeholder
|
||||
return
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user