private ChatCallbackObservable(int employeeId) { observers = new List <IChatCallbackObserver>(); employeeUoW = UnitOfWorkFactory.CreateForRoot <Employee>(employeeId, $"[CS]Слежение за чатами"); unreadedMessages = ChatMessageRepository.GetLastChatMessages(employeeUoW, employeeUoW.Root); //Initiates new message check every 30 seconds. timerId = GLib.Timeout.Add(refreshInterval, new GLib.TimeoutHandler(refresh)); }
private bool refresh() { var tempUnreadedMessages = ChatMessageRepository.GetLastChatMessages(employeeUoW, employeeUoW.Root); foreach (var item in tempUnreadedMessages) { if (!unreadedMessages.ContainsKey(item.Key) || unreadedMessages[item.Key] != item.Value) { NotifyChatUpdate(item.Key); } } unreadedMessages = tempUnreadedMessages; return(true); }