From 75de2029ff227f550c933f616fcbe2d10e5e7378 Mon Sep 17 00:00:00 2001 From: Davide Date: Tue, 17 Dec 2024 20:57:10 +0100 Subject: [PATCH] Always refresh app features onForeground() (#1022) Even if they haven't changed since the app was last sent to the background. Regression from #1019 where the initial .reloadReceipt() call was wrapped in a Task to make it asynchronous. --- Library/Sources/UILibrary/Business/AppContext.swift | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Library/Sources/UILibrary/Business/AppContext.swift b/Library/Sources/UILibrary/Business/AppContext.swift index 8acb1965a..0000cc09c 100644 --- a/Library/Sources/UILibrary/Business/AppContext.swift +++ b/Library/Sources/UILibrary/Business/AppContext.swift @@ -98,14 +98,23 @@ private extension AppContext { pp_log(.App.profiles, .info, "\tObserve in-app events...") iapManager.observeObjects() + + // load in background, see comment right below Task { await iapManager.reloadReceipt() } + // using Task above (#1019) causes the receipt to be loaded asynchronously. + // the initial call to onEligibleFeatures() may execute before the receipt is + // loaded and therefore do nothing. with .removeDuplicates(), there would + // not be a second chance to call onEligibleFeatures() if the eligible + // features haven't changed after reloading the receipt (this is the case + // for TestFlight where some features are set statically). that's why it's + // commented now pp_log(.App.profiles, .info, "\tObserve eligible features...") iapManager .$eligibleFeatures - .removeDuplicates() +// .removeDuplicates() .sink { [weak self] eligible in Task { try await self?.onEligibleFeatures(eligible)