From 4a89ae3cfec567f78275275fc48305a8aa6f96ef Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Mon, 2 May 2022 17:59:03 -0400 Subject: [PATCH] Don't cache state of follow menu action Fixes #151 --- Tusker/Screens/Utilities/Previewing.swift | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Tusker/Screens/Utilities/Previewing.swift b/Tusker/Screens/Utilities/Previewing.swift index 65bc0196..f7274c94 100644 --- a/Tusker/Screens/Utilities/Previewing.swift +++ b/Tusker/Screens/Utilities/Previewing.swift @@ -59,7 +59,7 @@ extension MenuActionProvider { draft.visibility = .direct self.navigationDelegate?.compose(editing: draft) }), - UIDeferredMenuElement({ (elementHandler) in + UIDeferredMenuElement.uncachedIfPossible({ (elementHandler) in Task { @MainActor in if let action = await self.followAction(for: accountID, mastodonController: mastodonController) { elementHandler([action]) @@ -339,3 +339,13 @@ extension SFSafariViewController: CustomPreviewPresenting { presenter.present(self, animated: true) } } + +private extension UIDeferredMenuElement { + static func uncachedIfPossible(_ elementProvider: @escaping (@escaping ([UIMenuElement]) -> Void) -> Void) -> UIDeferredMenuElement { + if #available(iOS 15.0, *) { + return UIDeferredMenuElement.uncached(elementProvider) + } else { + return UIDeferredMenuElement(elementProvider) + } + } +}