private void FireEnterLeaveListenerState(EnterLeaveListenerState state) { foreach (var eventSink in EventSinks) { eventSink.OnEvent(state); } }
private void SafeFragmentMapAdd(string name, EnterLeaveListenerState enterLeaveListenerState) { Stack <EnterLeaveListenerState> listenerStates; if (FragmentMap.ContainsKey(name)) { listenerStates = FragmentMap[name]; } else { listenerStates = new Stack <EnterLeaveListenerState>(); FragmentMap[name] = listenerStates; } listenerStates.Push(enterLeaveListenerState); }
public void OnEvent(EnterLeaveListenerState enterLeaveListenerState) { if (enterLeaveListenerState.FragmentSpread != null) { SafeFragmentMapAdd(enterLeaveListenerState.FragmentSpread.Name, enterLeaveListenerState); } else if (enterLeaveListenerState.FragmentDefinition != null) { CurrentFragmentDefinitionRoot = SafeFragmentMapPop(enterLeaveListenerState.FragmentDefinition.Name); FragmentMap.Remove(enterLeaveListenerState.FragmentDefinition.Name); } else { EnterLeaveListenerState = enterLeaveListenerState; if (CurrentFragmentDefinitionRoot != null) { EnterLeaveListenerState.CurrentFieldPath = $"{CurrentFragmentDefinitionRoot.CurrentFieldPath}{EnterLeaveListenerState.CurrentFieldPath}"; } } }