@@ -103,12 +103,19 @@ extension ObservationStateRegistrar: Equatable, Hashable, Codable {
103103 _ member: inout Member ,
104104 _ oldValue: Member ,
105105 _ isIdentityEqual: ( Member , Member ) -> Bool ,
106- _ shouldNotifyObservers: ( Member , Member ) -> Bool
106+ _ shouldNotifyObservers: ( Member , Member ) -> Bool = { _ , _ in true }
107107 ) {
108108 if !isIdentityEqual( oldValue, member) {
109109 let newValue = member
110110 member = oldValue
111- self . mutate ( subject, keyPath: keyPath, & member, newValue, isIdentityEqual, shouldNotifyObservers)
111+ self . mutate (
112+ subject,
113+ keyPath: keyPath,
114+ & member,
115+ newValue,
116+ isIdentityEqual,
117+ shouldNotifyObservers
118+ )
112119 }
113120 }
114121 }
@@ -132,9 +139,10 @@ extension ObservationStateRegistrar: Equatable, Hashable, Codable {
132139 keyPath: KeyPath < Subject , Member > ,
133140 _ value: inout Value ,
134141 _ newValue: Value ,
135- _ isIdentityEqual: ( Value , Value ) -> Bool
142+ _ isIdentityEqual: ( Value , Value ) -> Bool ,
143+ _ shouldNotifyObservers: ( Value , Value ) -> Bool = { _, _ in true }
136144 ) {
137- if isIdentityEqual ( value, newValue) {
145+ if isIdentityEqual ( value, newValue) || !shouldNotifyObservers ( value , newValue ) {
138146 value = newValue
139147 } else {
140148 self . registrar. withMutation ( of: subject, keyPath: keyPath) {
@@ -171,12 +179,20 @@ extension ObservationStateRegistrar: Equatable, Hashable, Codable {
171179 keyPath: KeyPath < Subject , Member > ,
172180 _ member: inout Member ,
173181 _ oldValue: Member ,
174- _ isIdentityEqual: ( Member , Member ) -> Bool
182+ _ isIdentityEqual: ( Member , Member ) -> Bool ,
183+ _ shouldNotifyObservers: ( Member , Member ) -> Bool = { _, _ in true }
175184 ) {
176185 if !isIdentityEqual( oldValue, member) {
177186 let newValue = member
178187 member = oldValue
179- self . mutate ( subject, keyPath: keyPath, & member, newValue, isIdentityEqual)
188+ self . mutate (
189+ subject,
190+ keyPath: keyPath,
191+ & member,
192+ newValue,
193+ isIdentityEqual,
194+ shouldNotifyObservers
195+ )
180196 }
181197 }
182198 }
0 commit comments