diff --git a/Tusker/InstanceFeatures.swift b/Tusker/InstanceFeatures.swift index d35b02c31a..c365cd221b 100644 --- a/Tusker/InstanceFeatures.swift +++ b/Tusker/InstanceFeatures.swift @@ -29,6 +29,10 @@ struct InstanceFeatures { instanceType == .pleroma } + var profilePinnedStatuses: Bool { + instanceType != .pixelfed + } + mutating func update(instance: Instance, nodeInfo: NodeInfo?) { let ver = instance.version.lowercased() if ver.contains("glitch") { @@ -37,6 +41,8 @@ struct InstanceFeatures { instanceType = .hometown } else if ver.contains("pleroma") { instanceType = .pleroma + } else if ver.contains("pixelfed") { + instanceType = .pixelfed } else { instanceType = .mastodon } @@ -51,6 +57,7 @@ extension InstanceFeatures { case pleroma case hometown case glitch + case pixelfed var isMastodon: Bool { switch self { diff --git a/Tusker/Screens/Profile/ProfileStatusesViewController.swift b/Tusker/Screens/Profile/ProfileStatusesViewController.swift index 06032a1ad9..7f9b26e282 100644 --- a/Tusker/Screens/Profile/ProfileStatusesViewController.swift +++ b/Tusker/Screens/Profile/ProfileStatusesViewController.swift @@ -105,7 +105,8 @@ class ProfileStatusesViewController: DiffableTimelineLikeTableViewController Snapshot, completion: @escaping (LoadResult) -> Void) { - guard kind == .statuses else { + guard kind == .statuses, + mastodonController.instanceFeatures.profilePinnedStatuses else { completion(.success(snapshot())) return } diff --git a/Tusker/Screens/Utilities/Previewing.swift b/Tusker/Screens/Utilities/Previewing.swift index 2483746c33..633c14fcc6 100644 --- a/Tusker/Screens/Utilities/Previewing.swift +++ b/Tusker/Screens/Utilities/Previewing.swift @@ -163,7 +163,8 @@ extension MenuPreviewProvider { } // only allowing pinning user's own statuses - if account.id == status.account.id { + if account.id == status.account.id, + mastodonController.instanceFeatures.profilePinnedStatuses { let pinned = status.pinned ?? false actionsSection.append(createAction(identifier: "pin", title: pinned ? "Unpin from Profile" : "Pin to Profile", systemImageName: pinned ? "pin.slash" : "pin", handler: { [weak self] (_) in guard let self = self else { return }