From 366287a9f84eca283fe7a9295774548ae5456b76 Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 23 Nov 2022 14:16:28 +0800 Subject: [PATCH] fix: use singleton AppContext to workaround reentry problem --- MastodonSDK/Sources/MastodonCore/AppContext.swift | 4 ++++ ShareActionExtension/Scene/ShareViewController.swift | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/MastodonSDK/Sources/MastodonCore/AppContext.swift b/MastodonSDK/Sources/MastodonCore/AppContext.swift index d44c1ea5a..d8aa06fae 100644 --- a/MastodonSDK/Sources/MastodonCore/AppContext.swift +++ b/MastodonSDK/Sources/MastodonCore/AppContext.swift @@ -115,6 +115,10 @@ public class AppContext: ObservableObject { .store(in: &disposeBag) } + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + } + } extension AppContext { diff --git a/ShareActionExtension/Scene/ShareViewController.swift b/ShareActionExtension/Scene/ShareViewController.swift index 4a093becd..00c5b77de 100644 --- a/ShareActionExtension/Scene/ShareViewController.swift +++ b/ShareActionExtension/Scene/ShareViewController.swift @@ -21,7 +21,7 @@ final class ShareViewController: UIViewController { var disposeBag = Set() - let context = AppContext() + let context = AppContext.shared private(set) lazy var viewModel = ShareViewModel(context: context) let publishButton: UIButton = { @@ -63,6 +63,10 @@ final class ShareViewController: UIViewController { label.text = "No Available Account" // TODO: i18n return label }() + + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + } } @@ -155,7 +159,7 @@ extension ShareViewController { _ = try await statusPublisher.publish(api: context.apiService, authContext: authContext) self.publishButton.setTitle(L10n.Common.Controls.Actions.done, for: .normal) - try await Task.sleep(nanoseconds: 1 * .second) + try await Task.sleep(nanoseconds: 1 * .second) self.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) @@ -325,3 +329,7 @@ extension ShareViewController { case missingAuthentication } } + +extension AppContext { + static let shared = AppContext() +}