internal override void Update(NotificationData data) { base.Update(data); //新しい通知を追加し、キープされた通知を再配置する var newDatas = ((SocialNotificationData)data).LogItems; var oldItemInfo = _actionLogs; var updatedDatas = (from nwItm in newDatas join oldItm in oldItemInfo on nwItm.RawData equals oldItm.RawData into nwOldPair from kpdItm in nwOldPair.DefaultIfEmpty() select new { NewItemData = nwItm, OldItemInfo = kpdItm }).ToArray(); foreach (var item in updatedDatas.Select((obj, idx) => new { Index = idx, Result = obj })) if (item.Result.OldItemInfo == null) _actionLogs.Insert(item.Index, new NotificationItemInfo(item.Result.NewItemData, Client)); else { var oldIdx = 0; if ((oldIdx = _actionLogs.IndexOf(item.Result.OldItemInfo)) >= 0 && item.Index != oldIdx) _actionLogs.Move(oldIdx, item.Index); } //古い通知を削除 for (var i = updatedDatas.Length; i < _actionLogs.Count; i++) _actionLogs.RemoveAt(i); if (Actor.Id != _actionLogs.First().Actor.Id) Actor = Client.People.InternalGetAndUpdateProfile(((SocialNotificationData)data).Actor); }
internal virtual void Update(NotificationData data) { _data = data; OnUpdated(new EventArgs()); }
public Task MarkAsReadAsync(NotificationData target, IPlatformClient client) { return Task.Delay(100); }
public NotificationInfo(NotificationData data, NotificationInfoContainer container, PlatformClient client) : base(client) { _data = data; _container = container; }