Update profiles requirements on new in-app receipt (#895)
Required features were only updated when reloading the local profiles, but they may also change on in-app events due to changes in eligibility.
This commit is contained in:
parent
9528cecc27
commit
d8545a01b4
|
@ -60,11 +60,7 @@ public final class ProfileManager: ObservableObject {
|
||||||
private var allProfiles: [Profile.ID: Profile] {
|
private var allProfiles: [Profile.ID: Profile] {
|
||||||
didSet {
|
didSet {
|
||||||
reloadFilteredProfiles(with: searchSubject.value)
|
reloadFilteredProfiles(with: searchSubject.value)
|
||||||
if let processor {
|
reloadRequiredFeatures()
|
||||||
requiredFeatures = allProfiles.reduce(into: [:]) {
|
|
||||||
$0[$1.key] = processor.verify($1.value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,6 +181,19 @@ extension ProfileManager {
|
||||||
public func search(byName name: String) {
|
public func search(byName name: String) {
|
||||||
searchSubject.send(name)
|
searchSubject.send(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func reloadRequiredFeatures() {
|
||||||
|
guard let processor else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
requiredFeatures = allProfiles.reduce(into: [:]) {
|
||||||
|
guard let ineligible = processor.verify($1.value), !ineligible.isEmpty else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
$0[$1.key] = ineligible
|
||||||
|
}
|
||||||
|
pp_log(.App.profiles, .info, "Required features: \(requiredFeatures)")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - CRUD
|
// MARK: - CRUD
|
||||||
|
|
|
@ -176,6 +176,10 @@ private extension AppContext {
|
||||||
} catch {
|
} catch {
|
||||||
pp_log(.App.profiles, .error, "\tUnable to re-observe remote profiles: \(error)")
|
pp_log(.App.profiles, .error, "\tUnable to re-observe remote profiles: \(error)")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// refresh required profile features
|
||||||
|
pp_log(.App.profiles, .info, "\tReload profiles required features...")
|
||||||
|
profileManager.reloadRequiredFeatures()
|
||||||
}
|
}
|
||||||
await pendingTask?.value
|
await pendingTask?.value
|
||||||
pendingTask = nil
|
pendingTask = nil
|
||||||
|
|
Loading…
Reference in New Issue