forked from zelo72/mastodon-ios
fix: profile fields not set hidden when blocked issue. resolve #195
This commit is contained in:
parent
dae423f28f
commit
31a79cbef0
|
@ -222,13 +222,18 @@ extension ProfileHeaderViewController {
|
|||
}
|
||||
.store(in: &disposeBag)
|
||||
|
||||
Publishers.CombineLatest(
|
||||
Publishers.CombineLatest3(
|
||||
viewModel.isEditing,
|
||||
viewModel.displayProfileInfo.fields
|
||||
viewModel.displayProfileInfo.fields,
|
||||
viewModel.needsFiledCollectionViewHidden
|
||||
)
|
||||
.receive(on: RunLoop.main)
|
||||
.sink { [weak self] isEditing, fields in
|
||||
.sink { [weak self] isEditing, fields, needsHidden in
|
||||
guard let self = self else { return }
|
||||
guard !needsHidden else {
|
||||
self.profileHeaderView.fieldCollectionView.isHidden = true
|
||||
return
|
||||
}
|
||||
self.profileHeaderView.fieldCollectionView.isHidden = isEditing ? false : fields.isEmpty
|
||||
}
|
||||
.store(in: &disposeBag)
|
||||
|
|
|
@ -22,6 +22,7 @@ final class ProfileHeaderViewModel {
|
|||
let isEditing = CurrentValueSubject<Bool, Never>(false)
|
||||
let viewDidAppear = CurrentValueSubject<Bool, Never>(false)
|
||||
let needsSetupBottomShadow = CurrentValueSubject<Bool, Never>(true)
|
||||
let needsFiledCollectionViewHidden = CurrentValueSubject<Bool, Never>(false)
|
||||
let isTitleViewContentOffsetSet = CurrentValueSubject<Bool, Never>(false)
|
||||
let emojiDict = CurrentValueSubject<MastodonStatusContent.EmojiDict, Never>([:])
|
||||
let accountForEdit = CurrentValueSubject<Mastodon.Entity.Account?, Never>(nil)
|
||||
|
|
|
@ -218,7 +218,7 @@ final class ProfileHeaderView: UIView {
|
|||
collectionView.isScrollEnabled = false
|
||||
return collectionView
|
||||
}()
|
||||
var fieldCollectionViewHeightLaoutConstraint: NSLayoutConstraint!
|
||||
var fieldCollectionViewHeightLayoutConstraint: NSLayoutConstraint!
|
||||
var fieldCollectionViewHeightObservation: NSKeyValueObservation?
|
||||
|
||||
override init(frame: CGRect) {
|
||||
|
@ -239,6 +239,8 @@ final class ProfileHeaderView: UIView {
|
|||
|
||||
extension ProfileHeaderView {
|
||||
private func _init() {
|
||||
backgroundColor = ThemeService.shared.currentTheme.value.systemGroupedBackgroundColor
|
||||
fieldCollectionView.backgroundColor = ThemeService.shared.currentTheme.value.profileFieldCollectionViewBackgroundColor
|
||||
ThemeService.shared.currentTheme
|
||||
.receive(on: RunLoop.main)
|
||||
.sink { [weak self] theme in
|
||||
|
@ -427,17 +429,17 @@ extension ProfileHeaderView {
|
|||
|
||||
fieldCollectionView.translatesAutoresizingMaskIntoConstraints = false
|
||||
metaContainerStackView.addArrangedSubview(fieldCollectionView)
|
||||
fieldCollectionViewHeightLaoutConstraint = fieldCollectionView.heightAnchor.constraint(equalToConstant: 44).priority(.defaultHigh)
|
||||
fieldCollectionViewHeightLayoutConstraint = fieldCollectionView.heightAnchor.constraint(equalToConstant: 44).priority(.defaultHigh)
|
||||
NSLayoutConstraint.activate([
|
||||
fieldCollectionViewHeightLaoutConstraint,
|
||||
fieldCollectionViewHeightLayoutConstraint,
|
||||
])
|
||||
fieldCollectionViewHeightObservation = fieldCollectionView.observe(\.contentSize, options: .new, changeHandler: { [weak self] tableView, _ in
|
||||
guard let self = self else { return }
|
||||
guard self.fieldCollectionView.contentSize.height != .zero else {
|
||||
self.fieldCollectionViewHeightLaoutConstraint.constant = 44
|
||||
self.fieldCollectionViewHeightLayoutConstraint.constant = 44
|
||||
return
|
||||
}
|
||||
self.fieldCollectionViewHeightLaoutConstraint.constant = self.fieldCollectionView.contentSize.height
|
||||
self.fieldCollectionViewHeightLayoutConstraint.constant = self.fieldCollectionView.contentSize.height
|
||||
})
|
||||
|
||||
bringSubviewToFront(bannerContainerView)
|
||||
|
|
|
@ -495,7 +495,8 @@ extension ProfileViewController {
|
|||
let isNeedSetHidden = isBlocking || isBlockedBy || suspended
|
||||
self.profileHeaderViewController.viewModel.needsSetupBottomShadow.value = !isNeedSetHidden
|
||||
self.profileHeaderViewController.profileHeaderView.bioContainerView.isHidden = isNeedSetHidden
|
||||
self.profileHeaderViewController.pageSegmentedControl.isHidden = isNeedSetHidden
|
||||
self.profileHeaderViewController.viewModel.needsFiledCollectionViewHidden.value = isNeedSetHidden
|
||||
self.profileHeaderViewController.pageSegmentedControl.isEnabled = !isNeedSetHidden
|
||||
self.viewModel.needsPagePinToTop.value = isNeedSetHidden
|
||||
}
|
||||
.store(in: &disposeBag)
|
||||
|
@ -530,7 +531,7 @@ extension ProfileViewController {
|
|||
self.profileHeaderViewController.profileHeaderView.statusDashboardView.followersDashboardMeterView.accessibilityLabel = L10n.Scene.Profile.Dashboard.Accessibility.countFollowers(count ?? 0)
|
||||
}
|
||||
.store(in: &disposeBag)
|
||||
viewModel.needsPaingEnabled
|
||||
viewModel.needsPagingEnabled
|
||||
.receive(on: RunLoop.main)
|
||||
.sink { [weak self] needsPaingEnabled in
|
||||
guard let self = self else { return }
|
||||
|
|
|
@ -63,7 +63,7 @@ class ProfileViewModel: NSObject {
|
|||
let isMeBarButtonItemsHidden = CurrentValueSubject<Bool, Never>(true)
|
||||
|
||||
let needsPagePinToTop = CurrentValueSubject<Bool, Never>(false)
|
||||
let needsPaingEnabled = CurrentValueSubject<Bool, Never>(true)
|
||||
let needsPagingEnabled = CurrentValueSubject<Bool, Never>(true)
|
||||
let needsImageOverlayBlurred = CurrentValueSubject<Bool, Never>(false)
|
||||
|
||||
init(context: AppContext, optionalMastodonUser mastodonUser: MastodonUser?) {
|
||||
|
@ -161,7 +161,7 @@ class ProfileViewModel: NSObject {
|
|||
|
||||
isBlockingOrBlocked
|
||||
.map { !$0 }
|
||||
.assign(to: \.value, on: needsPaingEnabled)
|
||||
.assign(to: \.value, on: needsPagingEnabled)
|
||||
.store(in: &disposeBag)
|
||||
|
||||
isBlockingOrBlocked
|
||||
|
|
Loading…
Reference in New Issue