public void ScrollDownMessages() { var iScrollableType = typeof(IScrollable); Listeners.Where(listener => iScrollableType.IsAssignableFrom(listener.GetType())) .ToList().ForEach(scrollable => ((IScrollable)scrollable).ScrollDown()); }
public override Listener Find(string hostId) { if (hostId == null) { throw new ArgumentNullException("Find.hostName"); } return(Listeners.Where(q => q.Source.HostId == hostId).FirstOrDefault <Listener>()); }
private void ListenerDo(Action <IViewportEventListener> action) { foreach (var listener in Listeners.Where(x => x.IsActive()).OrderBy(x => x.OrderHint)) { try { action(listener); } catch (Exception ex) { OnListenerException(ex); } } }
private void ListenerDoEvent(ViewportEvent e, Action <IViewportEventListener, ViewportEvent> action) { foreach (var listener in Listeners.Where(x => x.IsActive()).OrderBy(x => x.OrderHint)) { try { action(listener, e); } catch (Exception ex) { OnListenerException(ex); } if (e.Handled) { break; } } }
/// <summary> /// Subscribe to size changes of the browser window using the provided options /// </summary> /// <param name="callback">The method (callbacK) that is invoke as soon as the size of the window has changed</param> /// <param name="options"></param> /// <returns>The subscription id. This id is needed for unscribe</returns> public async Task <Guid> Subscribe(Action <BrowserWindowSize> callback, ResizeOptions options) { if (callback is null) { throw new ArgumentNullException(nameof(callback)); } options ??= _options; if (DotNetRef == null) { DotNetRef = DotNetObjectReference.Create(this); } var existingOptionId = Listeners.Where(x => x.Value.Option == options).Select(x => x.Key).FirstOrDefault(); if (existingOptionId == default) { var subscriptionInfo = new ResizeServiceSubscriptionInfo(options); var subscriptionId = subscriptionInfo.AddSubscription(callback); var listenerId = Guid.NewGuid(); Listeners.Add(listenerId, subscriptionInfo); try { await JsRuntime.InvokeVoidAsync($"mudResizeListenerFactory.listenForResize", DotNetRef, options, listenerId); } catch (TaskCanceledException) { // no worries here } return(subscriptionId); } else { var entry = Listeners[existingOptionId]; var subscriptionId = entry.AddSubscription(callback); return(subscriptionId); } }