/// <summary> /// Subscribe to updates for individual entries /// </summary> private IDisposable BindEntryUpdates( IChatLoader chatLoader, IChatUpdater chatUpdater, IAvatarLoader avatarLoader ) { return(chatUpdater.GetChatUpdates() .Buffer(TimeSpan.FromSeconds(1)) .SelectMany(chats => chats) .Select(chat => new { Chat = chat, Entry = GetChatEntryModel(chat) }) .SelectMany(item => LoadAvatar(avatarLoader, item.Entry) .Select(avatar => new { Chat = item.Chat, Entry = item.Entry, Avatar = avatar })) .SubscribeOn(TaskPoolScheduler.Default) .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(item => { UpdateChatEntryModel(item.Entry, item.Chat, item.Avatar); })); }
/// <summary> /// Subscribe to updates for individual entries /// </summary> private IDisposable BindEntryUpdates() { return(_chatUpdater.GetChatUpdates() .Buffer(TimeSpan.FromSeconds(1)) .SelectMany(chats => chats) .Select(chat => new { Chat = chat, Entry = GetChatEntryModel(chat) }) .Accept(item => { UpdateChatEntryModel((ChatEntryModel)item.Entry, item.Chat); })); }