コード例 #1
0
        public void DeserializeTextChatMessageWithoutUserIdNullTest()
        {
            RoomId    roomId          = "55-178";
            FirstName firstName       = "John";
            LastName  lastName        = "Brawn";
            string    text            = "Message text.";
            var       jsonString      = "{\"roomId\":\"55-178\",\"firstName\":\"John\",\"lastName\":\"Brawn\",\"text\":\"Message text.\"}";
            var       jsonTupleString = $"[{jsonString},10]";

            ITextChatMessage deserializedMessage = JsonConvert.DeserializeObject <TextChatMessage>(jsonString);

            Assert.AreEqual(null, deserializedMessage.UserId);
            Assert.AreEqual(roomId, deserializedMessage.RoomId);
            Assert.AreEqual(firstName, deserializedMessage.FirstName);
            Assert.AreEqual(lastName, deserializedMessage.LastName);
            Assert.AreEqual(text, deserializedMessage.Text);

            Assert.AreEqual(null, deserializedMessage.UserId);
            Assert.AreEqual((string)roomId, (string)deserializedMessage.RoomId);
            Assert.AreEqual((string)firstName, (string)deserializedMessage.FirstName);
            Assert.AreEqual((string)lastName, (string)deserializedMessage.LastName);

            var deserializedTuple = JsonConvert.DeserializeObject <Tuple <TextChatMessage, UserId> >(jsonTupleString, new TupleJsonArrayConverter());

            Assert.AreEqual(null, deserializedTuple.Item1.UserId);
            Assert.AreEqual(roomId, deserializedTuple.Item1.RoomId);
            Assert.AreEqual(firstName, deserializedTuple.Item1.FirstName);
            Assert.AreEqual(lastName, deserializedTuple.Item1.LastName);
            Assert.AreEqual(text, deserializedTuple.Item1.Text);
            Assert.AreEqual(new UserId(10), deserializedTuple.Item2);
        }
コード例 #2
0
 public async Task AddMessageAsync(ITextChatMessage msg)
 {
     if (_rooms.ContainsKey(msg.RoomId))             // The room isn't necessarily loaded (e.g.: ChatRequest is sent, but no one has joined the room yet)
     {
         _rooms[msg.RoomId].AddMessage(msg);
     }
     await _storage.AddMessageAsync(msg);
 }
コード例 #3
0
        public async Task PostTo(User fromUser, ITextChatMessage msg)
        {
            // Mark user as active
            SetLastActivity(fromUser.Id);

            // Propagate message
            OnPostedMessage?.Invoke(msg);

            // Unset typing
            ChatModel.UnsetAsTyping(fromUser.Id, silent: true);

            // Add Message to chat model
            await ChatModel.AddMessageAsync(msg);
        }
コード例 #4
0
 public async Task AddMessageAsync(ITextChatMessage msg)
 {
     using (var db = new HellolingoEntities()) {
         var record = new DataAccess.TextChat {
             When       = msg.When,
             RoomId     = msg.RoomId,
             UserId     = msg.UserId,
             DeviceTag  = msg.DeviceTag,
             FirstName  = msg.FirstName,
             LastName   = msg.LastName,
             Text       = msg.Text,
             Visibility = (byte)msg.Visibility,
         };
         db.TextChats.Add(record);
         await db.SaveChangesAsync();
     }
 }
コード例 #5
0
 public Task AddMessageAsync(ITextChatMessage msg)
 {
     return(null);
 }
コード例 #6
0
 public void AddMessage(ITextChatMessage msg)
 {
     Messages.Add(msg);
 }