private string GetFromLabel(MessageViewModel message, string title) { if (!string.IsNullOrWhiteSpace(title)) { return(title); } if (message.ProtoService.TryGetChat(message.Sender, out Chat senderChat)) { return(message.ProtoService.GetTitle(senderChat)); } else if (message.IsSaved()) { var forward = message.ProtoService.GetTitle(message.ForwardInfo); if (forward != null) { return(forward); } } if (message.ProtoService.TryGetUser(message.Sender, out User user)) { return(user.GetFullName()); } return(title ?? string.Empty); }
private void ConvertState(MessageViewModel message) { if (message.IsOutgoing && !message.IsChannelPost && !message.IsSaved()) { var maxId = 0L; var chat = message.GetChat(); if (chat != null) { maxId = chat.LastReadOutboxMessageId; } if (message.SendingState is MessageSendingStateFailed) { StateLabel.Text = "\u00A0\u00A0\uE611"; } else if (message.SendingState is MessageSendingStatePending) { StateLabel.Text = "\u00A0\u00A0\uE600"; } else if (message.Id <= maxId) { StateLabel.Text = "\u00A0\u00A0\uE601"; } else { StateLabel.Text = "\u00A0\u00A0\uE602"; } } else { StateLabel.Text = string.Empty; } }
//private string GetFromLabel(TLMessage message, string title) //{ // return GetFromLabelInternal(message, title) + Environment.NewLine; //} private string GetFromLabel(MessageViewModel message, string title) { if (!string.IsNullOrWhiteSpace(title)) { return(title); } if (message.IsChannelPost) { var chat = message.GetChat(); if (chat != null) { return(message.ProtoService.GetTitle(chat)); } } else if (message.IsSaved()) { if (message.ForwardInfo is MessageForwardedFromUser fromUser) { return(message.ProtoService.GetUser(fromUser.SenderUserId)?.GetFullName()); } else if (message.ForwardInfo is MessageForwardedPost post) { return(message.ProtoService.GetTitle(message.ProtoService.GetChat(post.ChatId))); } } var user = message.GetSenderUser(); if (user != null) { return(user.GetFullName()); } //if (message.IsPost && (message.ToId is TLPeerChat || message.ToId is TLPeerChannel)) //{ // return message.Parent?.DisplayName ?? string.Empty; //} //else if (message.IsSaved() && message.FwdFromUser is TLUser user) //{ // return user.FullName; //} //var from = message.From?.FullName ?? string.Empty; //if (message.ViaBot != null && message.FwdFrom == null) //{ // from += $" via @{message.ViaBot.Username}"; //} //return from; return(title ?? string.Empty); }
public void UpdateMessageState(MessageViewModel message) { if (message.IsOutgoing && !message.IsChannelPost && !message.IsSaved()) { var maxId = 0L; var chat = message.GetChat(); if (chat != null) { maxId = chat.LastReadOutboxMessageId; } if (message.SendingState is MessageSendingStateFailed) { UpdateTicks(null); _ticksState = false; StateLabel.Text = "\u00A0\u00A0failed"; } else if (message.SendingState is MessageSendingStatePending) { UpdateTicks(null); _ticksState = false; StateLabel.Text = "\u00A0\u00A0\uE600"; } else if (message.Id <= maxId) { UpdateTicks(true, _ticksState); _ticksState = false; StateLabel.Text = _container != null ? "\u00A0\u00A0\uE603" : "\u00A0\u00A0\uE601"; } else { UpdateTicks(false); _ticksState = true; StateLabel.Text = _container != null ? "\u00A0\u00A0\uE603" : "\u00A0\u00A0\uE602"; } } else { UpdateTicks(null); _ticksState = false; StateLabel.Text = string.Empty; } }
private string UpdateStateIcon(MessageViewModel message) { if (message.IsOutgoing && !message.IsChannelPost && !message.IsSaved()) { var maxId = 0L; var chat = message.GetChat(); if (chat != null) { maxId = chat.LastReadOutboxMessageId; } if (message.SendingState is MessageSendingStateFailed) { UpdateTicks(null); _ticksState = MessageTicksState.Failed; // TODO: return("\u00A0\u00A0failed"); // Failed } else if (message.SendingState is MessageSendingStatePending) { UpdateTicks(null); _ticksState = MessageTicksState.Pending; return("\u00A0\u00A0\uE600"); // Pending } else if (message.Id <= maxId) { UpdateTicks(true, _ticksState == MessageTicksState.Sent); _ticksState = MessageTicksState.Read; return(_container != null ? "\u00A0\u00A0\uE603" : "\u00A0\u00A0\uE601"); // Read } UpdateTicks(false, _ticksState == MessageTicksState.Pending); _ticksState = MessageTicksState.Sent; return(_container != null ? "\u00A0\u00A0\uE603" : "\u00A0\u00A0\uE602"); // Unread } UpdateTicks(null); _ticksState = MessageTicksState.None; return(string.Empty); }
private string GetFromLabel(MessageViewModel message, string title) { if (!string.IsNullOrWhiteSpace(title)) { return(title); } if (message.IsChannelPost) { var chat = message.GetChat(); if (chat != null) { return(message.ProtoService.GetTitle(chat)); } } else if (message.IsSaved()) { if (message.ForwardInfo?.Origin is MessageForwardOriginUser fromUser) { return(message.ProtoService.GetUser(fromUser.SenderUserId)?.GetFullName()); } else if (message.ForwardInfo?.Origin is MessageForwardOriginChannel post) { return(message.ProtoService.GetTitle(message.ProtoService.GetChat(post.ChatId))); } else if (message.ForwardInfo?.Origin is MessageForwardOriginHiddenUser fromHiddenUser) { return(fromHiddenUser.SenderName); } } var user = message.GetSenderUser(); if (user != null) { return(user.GetFullName()); } return(title ?? string.Empty); }
private void UpdateMessageHeader(MessageViewModel message) { MaybeUseInner(ref message); var paragraph = HeaderLabel; var admin = AdminLabel; var parent = Header; paragraph.Inlines.Clear(); if (message == null) { return; } var chat = message.GetChat(); var sticker = message.Content is MessageSticker; var light = sticker || message.Content is MessageVideoNote; var shown = false; if (!light && message.IsFirst && !message.IsOutgoing && !message.IsChannelPost && (chat.Type is ChatTypeBasicGroup || chat.Type is ChatTypeSupergroup)) { var sender = message.GetSenderUser(); var hyperlink = new Hyperlink(); hyperlink.Inlines.Add(new Run { Text = sender?.GetFullName() }); hyperlink.UnderlineStyle = UnderlineStyle.None; hyperlink.Foreground = PlaceholderHelper.GetBrush(message.SenderUserId); hyperlink.Click += (s, args) => From_Click(message); paragraph.Inlines.Add(hyperlink); shown = true; } else if (!light && message.IsChannelPost && chat.Type is ChatTypeSupergroup) { var hyperlink = new Hyperlink(); hyperlink.Inlines.Add(new Run { Text = message.ProtoService.GetTitle(chat) }); hyperlink.UnderlineStyle = UnderlineStyle.None; //hyperlink.Foreground = Convert.Bubble(message.ChatId); hyperlink.Click += (s, args) => From_Click(message); paragraph.Inlines.Add(hyperlink); shown = true; } else if (!light && message.IsFirst && message.IsSaved()) { var title = string.Empty; if (message.ForwardInfo is MessageForwardedFromUser fromUser) { title = message.ProtoService.GetUser(fromUser.SenderUserId)?.GetFullName(); } else if (message.ForwardInfo is MessageForwardedPost post) { title = message.ProtoService.GetTitle(message.ProtoService.GetChat(post.ForwardedFromChatId)); } var hyperlink = new Hyperlink(); hyperlink.Inlines.Add(new Run { Text = title ?? string.Empty }); hyperlink.UnderlineStyle = UnderlineStyle.None; //hyperlink.Foreground = Convert.Bubble(message.FwdFrom?.FromId ?? message.FwdFrom?.ChannelId ?? 0); hyperlink.Click += (s, args) => FwdFrom_Click(message); paragraph.Inlines.Add(hyperlink); shown = true; } if (shown) { if (admin != null && !message.IsOutgoing && message.Delegate != null && message.Delegate.IsAdmin(message.SenderUserId)) { paragraph.Inlines.Add(new Run { Text = " " + Strings.Resources.ChatAdmin, Foreground = null }); } } var forward = false; if (message.ForwardInfo != null && !sticker && !message.IsSaved()) { if (paragraph.Inlines.Count > 0) { paragraph.Inlines.Add(new LineBreak()); } paragraph.Inlines.Add(new Run { Text = Strings.Resources.ForwardedMessage, FontWeight = FontWeights.Normal }); paragraph.Inlines.Add(new LineBreak()); paragraph.Inlines.Add(new Run { Text = Strings.Resources.From + " ", FontWeight = FontWeights.Normal }); var title = string.Empty; if (message.ForwardInfo is MessageForwardedFromUser fromUser) { title = message.ProtoService.GetUser(fromUser.SenderUserId)?.GetFullName(); } else if (message.ForwardInfo is MessageForwardedPost post) { title = message.ProtoService.GetTitle(message.ProtoService.GetChat(post.ChatId)); } var hyperlink = new Hyperlink(); hyperlink.Inlines.Add(new Run { Text = title }); hyperlink.UnderlineStyle = UnderlineStyle.None; hyperlink.Foreground = light ? new SolidColorBrush(Colors.White) : paragraph.Foreground; hyperlink.Click += (s, args) => FwdFrom_Click(message); paragraph.Inlines.Add(hyperlink); forward = true; } //if (message.HasViaBotId && message.ViaBot != null && !message.ViaBot.IsDeleted && message.ViaBot.HasUsername) var viaBot = message.ProtoService.GetUser(message.ViaBotUserId); if (viaBot != null && viaBot.Type is UserTypeBot && !string.IsNullOrEmpty(viaBot.Username)) { var hyperlink = new Hyperlink(); hyperlink.Inlines.Add(new Run { Text = (paragraph.Inlines.Count > 0 ? " via @" : "via @"), FontWeight = FontWeights.Normal }); hyperlink.Inlines.Add(new Run { Text = viaBot.Username }); hyperlink.UnderlineStyle = UnderlineStyle.None; hyperlink.Foreground = light ? new SolidColorBrush(Colors.White) : paragraph.Foreground; hyperlink.Click += (s, args) => ViaBot_Click(message); if (paragraph.Inlines.Count > 0 && !forward) { paragraph.Inlines.Insert(1, hyperlink); } else { paragraph.Inlines.Add(hyperlink); } } if (paragraph.Inlines.Count > 0) { if (admin != null && shown && !message.IsOutgoing && message.Delegate != null && message.Delegate.IsAdmin(message.SenderUserId)) { admin.Visibility = Visibility.Visible; } else if (admin != null) { admin.Visibility = Visibility.Collapsed; } paragraph.Inlines.Add(new Run { Text = " " }); paragraph.Visibility = Visibility.Visible; parent.Visibility = Visibility.Visible; } else { if (admin != null) { admin.Visibility = Visibility.Collapsed; } paragraph.Visibility = Visibility.Collapsed; parent.Visibility = message.ReplyToMessageId != 0 ? Visibility.Visible : Visibility.Collapsed; } }