I have sf chat, and there is a base from which the correspondence comes, the message object has the is_read field, it can be true or false, I have a task, add visual reporting to the chat, whether the message is read or not, how can I do this with yours chat? Or should I find or create another?
I looked at your link, but I didn't figure it out a bit, how can this help me, do you have another example?
| public class CustomTextMessage : TextMessage
{
public bool IsRead
{
get;
set;
}
public CustomTextMessage()
{
} }//ViewModel ... this.messages = new ObservableCollection<object>(); this.currentAuthor = new Author() { Name = "Nancy", Avatar = "Nancy.png" }; this.GenerateMessages();... private void GenerateMessages() {
this.messages.Add(new CustomTextMessage()
{
Author = currentAuthor,
Text = "Hi guys, good morning! I'm very delighted to share with you the news that our team is going to launch a new mobile application.",
DateTime = DateTime.Now
});
this.messages.Add(new CustomTextMessage()
{
Author = this.Harrison,
Text = "That is good news.",
DateTime = DateTime.Now
});
this.messages.Add(new CustomTextMessage()
{
Author = this.Margaret,
Text = "What kind of application is it and when are we going to launch?",
DateTime = DateTime.Now
});
this.messages.Add(new CustomTextMessage()
{
Author = currentAuthor,
Text = "A kind of Emergency Broadcast App.",
DateTime = DateTime.Now
});
this.messages.Add(new CustomTextMessage()
{
Author = this.Harrison,
Text = "That is good news.",
DateTime = DateTime.Now
});
this.messages.Add(new CustomTextMessage()
{
Author = this.Margaret,
Text = "What kind of application is it and when are we going to launch?",
DateTime = DateTime.Now
}); }.... // SfChat Page ..... this.sfChat.MessageTemplate = new MyCustomMessageTemplateSelector(this.sfChat); this.sfChat.SendMessage += SfChat_SendMessage; ... protected override void OnAppearing() {
base.OnAppearing();
foreach (var message in this.viewModel.Messages)
{
if (!(message as CustomTextMessage).IsRead)
{
(message as CustomTextMessage).IsRead = true;
}
} }... public class MyCustomMessageTemplateSelector : ChatMessageTemplateSelector {
private readonly DataTemplate ReadMessageTemplate;
private readonly DataTemplate UnReadMessageTemplate;
public MyCustomMessageTemplateSelector(SfChat chat) : base(chat)
{
this.ReadMessageTemplate = new DataTemplate(typeof(TextMessageTemplate));
this.UnReadMessageTemplate = new DataTemplate(typeof(TextMessageTemplate2));
}
protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
{
if (item as ITextMessage != null)
{
if ((item as ITextMessage).Author.Name =="Nancy")
{
if (Helper.IsActive)
{
return this.ReadMessageTemplate;
}
else
{
return this.UnReadMessageTemplate;
}
}
else if ((item as CustomTextMessage).IsRead)
{
return this.ReadMessageTemplate;
}
else
{
return this.UnReadMessageTemplate;
}
}
else
{
// returns default template for all other messages.
return base.OnSelectTemplate(item, container);
}
} } |