fix: reblog not disable for non-public post issue. resolve #173

This commit is contained in:
CMK 2021-06-29 19:55:42 +08:00
parent ce3ac2bfd2
commit 9858a39f3d
4 changed files with 30 additions and 15 deletions

View File

@ -574,9 +574,8 @@ extension StatusSection {
cell.statusView.contentMetaText.textView.accessibilityLanguage = (status.reblog ?? status).language
// set visibility
if let visibility = (status.reblog ?? status).visibility {
if let visibility = (status.reblog ?? status).visibilityEnum {
cell.statusView.updateVisibility(visibility: visibility)
cell.statusView.revealContentWarningButton.publisher(for: \.isHidden)
.receive(on: DispatchQueue.main)
.sink { [weak cell] isHidden in
@ -953,6 +952,13 @@ extension StatusSection {
guard status.reblogsCount.intValue > 0 else { return nil }
return L10n.Common.Controls.Timeline.Accessibility.countReblogs(status.reblogsCount.intValue)
}()
// disable reblog when non-public (except self)
cell.statusView.actionToolbarContainer.reblogButton.isEnabled = true
if let visibility = status.visibilityEnum, visibility != .public, status.author.id != requestUserID {
cell.statusView.actionToolbarContainer.reblogButton.isEnabled = false
}
// set like
let isLike = status.favouritedBy.flatMap { $0.contains(where: { $0.id == requestUserID }) } ?? false
let favoriteCountTitle: String = {

View File

@ -89,3 +89,10 @@ extension Status {
}
extension Status: EmojiContainer { }
extension Status {
var visibilityEnum: Mastodon.Entity.Status.Visibility? {
return visibility.flatMap { Mastodon.Entity.Status.Visibility(rawValue: $0) }
}
}

View File

@ -202,15 +202,6 @@ extension ComposeToolbarView {
}
}
func imageNameForTimeline() -> String {
switch self {
case .public: return "globe"
// case .unlisted: return "eye.slash"
case .private: return "person.3"
case .direct: return "at"
}
}
var visibility: Mastodon.Entity.Status.Visibility {
switch self {
case .public: return .public

View File

@ -14,6 +14,7 @@ import AlamofireImage
import FLAnimatedImage
import MetaTextView
import Meta
import MastodonSDK
// TODO:
// import LinkPresentation
@ -498,10 +499,20 @@ extension StatusView {
}
// TODO: a11y
}
func updateVisibility(visibility: String) {
guard let visibility = ComposeToolbarView.VisibilitySelectionType(rawValue: visibility) else { return }
visibilityImageView.image = UIImage(systemName: visibility.imageNameForTimeline(), withConfiguration: UIImage.SymbolConfiguration(pointSize: 13, weight: .regular))
func updateVisibility(visibility: Mastodon.Entity.Status.Visibility) {
switch visibility {
case .public:
visibilityImageView.image = UIImage(systemName: "globe", withConfiguration: UIImage.SymbolConfiguration(pointSize: 13, weight: .regular))
case .private:
visibilityImageView.image = UIImage(systemName: "person.3", withConfiguration: UIImage.SymbolConfiguration(pointSize: 13, weight: .regular))
case .unlisted:
visibilityImageView.image = UIImage(systemName: "eye.slash", withConfiguration: UIImage.SymbolConfiguration(pointSize: 13, weight: .regular))
case .direct:
visibilityImageView.image = UIImage(systemName: "at", withConfiguration: UIImage.SymbolConfiguration(pointSize: 13, weight: .regular))
case ._other:
visibilityImageView.image = nil
}
}
}