From 340af79ae10764a90b3395f7d268d88556fb120b Mon Sep 17 00:00:00 2001 From: Paolo Musolino Date: Thu, 20 Mar 2025 14:56:51 +0100 Subject: [PATCH 1/4] Add sign-in observer and handle deinitialization in SiteSwitcherView.swift - Add `signinObserver` to listen for sign-in completion notifications. - Implement observer removal in `deinit` to prevent memory leaks. --- .../Blog/Site Picker/SiteSwitcherView.swift | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/WordPress/Classes/ViewRelated/Blog/Site Picker/SiteSwitcherView.swift b/WordPress/Classes/ViewRelated/Blog/Site Picker/SiteSwitcherView.swift index d26c243b3193..97924f2c0c7a 100644 --- a/WordPress/Classes/ViewRelated/Blog/Site Picker/SiteSwitcherView.swift +++ b/WordPress/Classes/ViewRelated/Blog/Site Picker/SiteSwitcherView.swift @@ -4,6 +4,7 @@ import WordPressUI final class SiteSwitcherViewController: UIHostingController, UIPopoverPresentationControllerDelegate { private let viewModel: BlogListViewModel + private var signinObserver: NSObjectProtocol? init(configuration: BlogListConfiguration = .defaultConfig, addSiteAction: @escaping ((AddSiteMenuViewModel.Selection) -> Void), @@ -28,6 +29,20 @@ final class SiteSwitcherViewController: UIHostingController, U if #available(iOS 17, *) { AppTips.SitePickerTip().invalidate(reason: .actionPerformed) } + + // Add observer for sign-in completion notification + let notificationName = NSNotification.Name(WordPressAuthenticationManager.WPSigninDidFinishNotification) + signinObserver = NotificationCenter.default.addObserver(forName: notificationName, object: nil, queue: nil) { [weak self] _ in + DispatchQueue.main.async { + self?.presentingViewController?.dismiss(animated: true) + } + } + } + + deinit { + if let observer = signinObserver { + NotificationCenter.default.removeObserver(observer) + } } @objc private func buttonCloseTapped() { From cd7b9caa085015852a048de3d59ba0538d7cfebb Mon Sep 17 00:00:00 2001 From: Paolo Musolino Date: Thu, 20 Mar 2025 15:00:56 +0100 Subject: [PATCH 2/4] update: release notes 25.9 --- RELEASE-NOTES.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 69b86e82f822..b15f9207f364 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,6 +1,6 @@ 25.9 ----- - +* [*] Site Switcher screen now properly dismisses after successfully adding a self-hosted site. 25.8 ----- From 7d64d196c406402842d21c71505d370feace07a3 Mon Sep 17 00:00:00 2001 From: Paolo Musolino Date: Thu, 20 Mar 2025 18:14:29 +0100 Subject: [PATCH 3/4] update: added PR reference in release-notes --- RELEASE-NOTES.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index b15f9207f364..1522969f5cd2 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,6 +1,6 @@ 25.9 ----- -* [*] Site Switcher screen now properly dismisses after successfully adding a self-hosted site. +* [*] Site Switcher screen now properly dismisses after successfully adding a self-hosted site. [#24273] 25.8 ----- From e02db0dd82ca61cfef709b127c8565238afed7b7 Mon Sep 17 00:00:00 2001 From: Paolo Musolino Date: Mon, 24 Mar 2025 17:01:43 +0100 Subject: [PATCH 4/4] Remove the `deinit` method from `SiteSwitcherView` since it's superfluous --- .../ViewRelated/Blog/Site Picker/SiteSwitcherView.swift | 6 ------ 1 file changed, 6 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Site Picker/SiteSwitcherView.swift b/WordPress/Classes/ViewRelated/Blog/Site Picker/SiteSwitcherView.swift index 97924f2c0c7a..2e29696f0963 100644 --- a/WordPress/Classes/ViewRelated/Blog/Site Picker/SiteSwitcherView.swift +++ b/WordPress/Classes/ViewRelated/Blog/Site Picker/SiteSwitcherView.swift @@ -39,12 +39,6 @@ final class SiteSwitcherViewController: UIHostingController, U } } - deinit { - if let observer = signinObserver { - NotificationCenter.default.removeObserver(observer) - } - } - @objc private func buttonCloseTapped() { presentingViewController?.dismiss(animated: true) }