internal void Update(MemberPresence model) { if (model.User != null) { Update(model.User as UserReference); } if (model.Roles != null) { UpdateRoles(model.Roles.Select(x => Server.GetRole(x))); } if (model.Status != null && Status != model.Status) { Status = UserStatus.FromString(model.Status); if (Status == UserStatus.Offline) { _lastOnline = DateTime.UtcNow; } } if (model.Game != null) { CurrentGame = new Game(model.Game.Name, model.Game.Type ?? GameType.Default, model.Game.Url); } else { CurrentGame = null; } }
public ChatListUserCellModel(int memberId, string memberName, string memberPhoto, string lastMessage, string lastMessageDate, bool isNewMessage, bool isMemberMuted, int unreadMessagesCount, EventHandler <int> openMemberProfile, EventHandler <int> openChat, DateTime lastMessageDateTime, MemberPresence memberPresence = MemberPresence.Offline) { MemberId = memberId; MemberName = memberName; MemberPhoto = memberPhoto; MemberPresence = memberPresence; LastMessage = lastMessage; LastMessageDate = lastMessageDate; IsNewMessage = isNewMessage; OpenMemberProfile = openMemberProfile; OpenChat = openChat; LastMessageDateTime = lastMessageDateTime; IsMemberMuted = isMemberMuted; UnreadMessagesCount = unreadMessagesCount; }
internal void Update(MemberPresence model) { if (model.User != null) { Update(model.User as UserReference); } if (model.Roles != null) { UpdateRoles(model.Roles.Select(x => Server.GetRole(x))); } if (model.Status != null && Status != model.Status) { Status = UserStatus.FromString(model.Status); if (Status == UserStatus.Offline) { _lastOnline = DateTime.UtcNow; } } CurrentGame = model.Game?.Name; //Allows null }
public void Configure(ChatMessagesModel chatMessagesModel, EventHandler <long> messageEvent, MemberPresence memberPresence) { }
public void Configure(ChatMessagesModel message, EventHandler <long> messageEvent, MemberPresence memberPresence) { _imageView.Image?.Dispose(); _imageView.Image = null; _messageId = message.MessageId; _messageEvent = messageEvent; var nameAttr = new UIStringAttributes { ForegroundColor = Colors.Black, Font = UIFont.SystemFontOfSize(15f, UIFontWeight.Semibold) }; var timeAttr = new UIStringAttributes { ForegroundColor = Colors.ProfileGrayDarker, Font = UIFont.SystemFontOfSize(11f, UIFontWeight.Regular) }; var messageAttributes = new UIStringAttributes { Font = message.FailedToSend ? UIFont.BoldSystemFontOfSize(15f) : UIFont.SystemFontOfSize(14f), ForegroundColor = message.FailedToSend ? Colors.Red : Colors.Black, ParagraphStyle = new NSMutableParagraphStyle { LineSpacing = 2f }, }; var customString = new NSMutableAttributedString(message.Name + message.MessageDate); customString.SetAttributes(nameAttr.Dictionary, new NSRange(0, message.Name.Length)); customString.SetAttributes(timeAttr.Dictionary, new NSRange(message.Name.Length + 1, message.MessageDate.Length - 1)); _nameLabel.AttributedText = customString; var attributedText = new NSMutableAttributedString(message.MessageData); attributedText.AddAttributes(messageAttributes, new NSRange(0, message.MessageData.Length)); _messageLabel.AttributedText = attributedText; if (!string.IsNullOrEmpty(message.Picture)) { _picture = string.Copy(message.Picture); ImageService.Instance.LoadStream((token) => { return(ImageHelper.GetStreamFromImageByte(token, _picture)); }).ErrorPlaceholder("profile_noimage", ImageSource.CompiledResource).Retry(3, 200).Finish(CleanString).Transform(new CircleTransformation()).Into(_imageView); } else { _imageView.Image = UIImage.FromBundle("profile_noimage"); CustomUIExtensions.RoundView(_imageView); } if (message.ShowPresense) { switch (memberPresence) { case MemberPresence.Online: _presenceView.BackgroundColor = Colors.UserOnline; _presenceView.Hidden = false; break; case MemberPresence.Recent: _presenceView.BackgroundColor = Colors.UserRecent; _presenceView.Hidden = false; break; case MemberPresence.Offline: _presenceView.Hidden = true; break; } } else { _presenceView.Hidden = true; } CustomUIExtensions.RoundView(_presenceView); _presenceView.Layer.BorderWidth = 1f; _presenceView.Layer.BorderColor = Colors.White.CGColor; _dividerLeftView.BackgroundColor = Colors.AlertDividerColor; _dividerRightView.BackgroundColor = Colors.AlertDividerColor; UILabelExtensions.SetupLabelAppearance(_dateLabel, message.HeaderDate, Colors.ChatDate, 12f, UIFontWeight.Medium); _dateView.Hidden = !message.ShowHeaderDate; _dateViewHeightConstraint.Constant = message.ShowHeaderDate ? LocalConstants.Chat_HeaderDateBig : LocalConstants.Chat_HeaderDateSmall; }