Skip to content

Commit

Permalink
More clearly capture publisher in the ObserverTrampoline closure wi…
Browse files Browse the repository at this point in the history
…thout a cycle
  • Loading branch information
nolanw committed Aug 16, 2024
1 parent 6bc7a80 commit 4865e0b
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
7 changes: 4 additions & 3 deletions Sources/FoilDefaultStorage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,11 @@ public struct FoilDefaultStorage<T: UserDefaultsSerializable> {
// Publisher must be initialized after `registerDefault`,
// because `fetch` assumes that `registerDefault` has been called before
// and uses force unwrap
self._publisher = CurrentValueSubject<T, Never>(userDefaults.fetch(keyName))
let publisher = CurrentValueSubject<T, Never>(userDefaults.fetch(keyName))
self._publisher = publisher

self._observer = ObserverTrampoline(userDefaults: userDefaults, key: keyName) { [_publisher] in
_publisher.send(userDefaults.fetch(keyName))
self._observer = ObserverTrampoline(userDefaults: userDefaults, key: keyName) {
publisher.send(userDefaults.fetch(keyName))
}
}
}
7 changes: 4 additions & 3 deletions Sources/FoilDefaultStorageOptional.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,10 @@ public struct FoilDefaultStorageOptional<T: UserDefaultsSerializable> {
public init(key keyName: String, userDefaults: UserDefaults = .standard) {
self.key = keyName
self._userDefaults = userDefaults
self._publisher = CurrentValueSubject<T?, Never>(userDefaults.fetchOptional(keyName))
self._observer = ObserverTrampoline(userDefaults: userDefaults, key: keyName) { [_publisher] in
_publisher.send(userDefaults.fetchOptional(keyName))
let publisher = CurrentValueSubject<T?, Never>(userDefaults.fetchOptional(keyName))
self._publisher = publisher
self._observer = ObserverTrampoline(userDefaults: userDefaults, key: keyName) {
publisher.send(userDefaults.fetchOptional(keyName))
}
}
}

0 comments on commit 4865e0b

Please sign in to comment.