示例#1
0
 public ChatMessageWidget(string senderUuid, string message, DateTime receivedTime, ChatMessageStatus status)
 {
     this.ReceivedTime = receivedTime;
     this.SenderUuid   = senderUuid;
     this.Message      = message;
     this.Status       = status;
 }
        private void ChangeMessageViewStatus(ChatMessageStatus status)
        {
            MessageStatusView.Visibility = ViewStates.Visible;

            int statusImageResourceId;

            switch (status)
            {
            case ChatMessageStatus.Sending:
                statusImageResourceId = StyleHelper.Style.MessageStatusSentIcon;
                break;

            case ChatMessageStatus.Delivered:
                statusImageResourceId = StyleHelper.Style.MessageStatusDeliveredIcon;
                break;

            case ChatMessageStatus.Read:
                statusImageResourceId = StyleHelper.Style.MessageStatusReadIcon;
                break;

            case ChatMessageStatus.Other:
                MessageStatusView.Visibility = ViewStates.Gone;
                return;

            default: throw new InvalidEnumArgumentException();
            }

            MessageStatusView.SetImageResource(statusImageResourceId);
        }
示例#3
0
        public async Task <UpdateResult> SetMessageStatusAsync(string messageId, ChatMessageStatus status)
        {
            var update = Builders <ChatMessage> .Update.Set(m => m.Status, status);

            var result = await Collection.UpdateOneAsync(m => m.Id == messageId, update);

            return(result);
        }
示例#4
0
        public ChatMessageWidget(string senderUuid, string message)
        {
            this.SenderUuid = senderUuid;
            this.Message    = message;

            this.ReceivedTime = DateTime.UtcNow;
            this.Status       = ChatMessageStatus.PENDING;
        }
示例#5
0
        public ChatMessageWidget(string messageId, string senderUuid, string message, DateTime receivedTime, ChatMessageStatus status)
        {
            this.MessageId    = messageId;
            this.ReceivedTime = receivedTime;
            this.SenderUuid   = senderUuid;
            this.Message      = message;
            this.Status       = status;

            // Pre-cache the user's display name and blocked status
            if (!Client.Instance.TryGetDisplayName(SenderUuid, out cachedDisplayName))
            {
                cachedDisplayName = "???";
            }
            cachedBlockedState = Client.Instance.BlockedUsers.Contains(SenderUuid);
        }
示例#6
0
        /// <inheritdoc />
        /// <exception cref="ArgumentException">Chat message with the given message ID does not exist</exception>
        public override void Update()
        {
            // Update the message status if we've been given a message ID
            if (MessageId != null)
            {
                if (!Client.Instance.TryGetMessage(MessageId, out ClientChatMessage message))
                {
                    throw new ArgumentException("Chat message with the given message ID does not exist.");
                }

                Status = message.Status;
            }

            // Update the sender's display name and blocked states
            if (!Client.Instance.TryGetDisplayName(SenderUuid, out cachedDisplayName))
            {
                cachedDisplayName = "???";
            }
            cachedBlockedState = Client.Instance.BlockedUsers.Contains(SenderUuid);
        }
示例#7
0
 public ChatMessageWidget(string senderUuid, string message, DateTime receivedTime, ChatMessageStatus status)
     : this(null, senderUuid, message, receivedTime, status)
 {
 }
示例#8
0
 /// <inheritdoc />
 /// <summary>
 /// Creates a new <see cref="ClientChatMessage"/> with the given message ID, sender UUID, message, timestamp, and status.
 /// </summary>
 /// <param name="messageId">Unique message ID</param>
 /// <param name="senderUuid">Sender's UUID</param>
 /// <param name="message">Message</param>
 /// <param name="timestamp">Message timestamp</param>
 /// <param name="status">Status</param>
 public ClientChatMessage(string messageId, string senderUuid, string message, DateTime timestamp, ChatMessageStatus status) : base(messageId, senderUuid, message, timestamp)
 {
     this.Status = status;
 }
示例#9
0
 /// <inheritdoc />
 /// <summary>
 /// Creates a new <see cref="ClientChatMessage"/> with the given message ID, sender UUID, message, and timestamp with a pending status.
 /// </summary>
 /// <param name="messageId">Unique message ID</param>
 /// <param name="senderUuid">Sender's UUID</param>
 /// <param name="message">Message</param>
 /// <param name="timestamp">Message timestamp</param>
 public ClientChatMessage(string messageId, string senderUuid, string message, DateTime timestamp) : base(messageId, senderUuid, message, timestamp)
 {
     this.Status = ChatMessageStatus.PENDING;
 }
示例#10
0
 /// <inheritdoc />
 /// <summary>
 /// Creates a new <see cref="ClientChatMessage"/> with the given message ID, sender UUID, message, and status and sets the timestamp to now.
 /// </summary>
 /// <param name="messageId">Unique message ID</param>
 /// <param name="senderUuid">Sender's UUID</param>
 /// <param name="message">Message</param>
 /// <param name="status">Status</param>
 public ClientChatMessage(string messageId, string senderUuid, string message, ChatMessageStatus status) : base(messageId, senderUuid, message)
 {
     this.Status = status;
 }
示例#11
0
 /// <inheritdoc />
 /// <summary>
 /// Creates a new <see cref="ClientChatMessage"/> with the given message ID, sender UUID, and message and sets the timestamp to now with a pending status.
 /// </summary>
 /// <param name="messageId">Unique message ID</param>
 /// <param name="senderUuid">Sender's UUID</param>
 /// <param name="message">Message</param>
 public ClientChatMessage(string messageId, string senderUuid, string message) : base(messageId, senderUuid, message)
 {
     this.Status = ChatMessageStatus.PENDING;
 }