(key: K, newValue: V)
| 245 | } |
| 246 | |
| 247 | private addValue_(key: K, newValue: V) { |
| 248 | checkIfStateModificationsAreAllowed(this.keysAtom_) |
| 249 | transaction(() => { |
| 250 | const observable = new ObservableValue( |
| 251 | newValue, |
| 252 | this.enhancer_, |
| 253 | __DEV__ ? `${this.name_}.${stringifyKey(key)}` : "ObservableMap.key", |
| 254 | false |
| 255 | ) |
| 256 | this.data_.set(key, observable) |
| 257 | newValue = (observable as any).value_ // value might have been changed |
| 258 | this.hasMap_.get(key)?.setNewValue_(true) |
| 259 | this.keysAtom_.reportChanged() |
| 260 | }) |
| 261 | const notifySpy = isSpyEnabled() |
| 262 | const notify = hasListeners(this) |
| 263 | const change: IMapDidChange<K, V> | null = |
| 264 | notify || notifySpy |
| 265 | ? { |
| 266 | observableKind: "map", |
| 267 | debugObjectName: this.name_, |
| 268 | type: ADD, |
| 269 | object: this, |
| 270 | name: key, |
| 271 | newValue |
| 272 | } |
| 273 | : null |
| 274 | if (__DEV__ && notifySpy) { |
| 275 | spyReportStart(change! as PureSpyEvent) |
| 276 | } // TODO fix type |
| 277 | if (notify) { |
| 278 | notifyListeners(this, change) |
| 279 | } |
| 280 | if (__DEV__ && notifySpy) { |
| 281 | spyReportEnd() |
| 282 | } |
| 283 | } |
| 284 | |
| 285 | get(key: K): V | undefined { |
| 286 | if (this.has(key)) { |
no test coverage detected