notify method

  1. @override
void notify(
  1. covariant EffectBaseNode e
)
override

Notify a subscriber about changes

Implementation

@override
@pragma('vm:prefer-inline')
@pragma('wasm:prefer-inline')
@pragma('dart2js:prefer-inline')
void notify(covariant EffectBaseNode e) {
  EffectBaseNode? effect = e;
  int insertIndex = queuedLength;
  int firstInsertedIndex = insertIndex;

  do {
    effect!.flags &= ~2 /* ReactiveFlags.watching */;

    // queued[insertIndex++] = effect;
    _queueSet(insertIndex++, effect as JEffectNode?);
    effect = effect.subs?.sub as EffectBaseNode?;
    if (effect == null ||
        effect.flags & 2 /** ReactiveFlags.watching */ == 0) {
      break;
    }
  } while (true);

  queuedLength = insertIndex;

  while (firstInsertedIndex < --insertIndex) {
    final left = queued[firstInsertedIndex];
    // queued[firstInsertedIndex++] = queued[insertIndex];
    _queueSet(firstInsertedIndex++, queued[insertIndex]);
    queued[insertIndex] = left;
  }
}