Пример #1
0
        private IMenuItem CreateUserBlock(string username, ChatObj chat)
        {
            MenuItemGrid item          = new MenuItemGrid(username, 5, 3);
            MenuItemText usernameBlock = new MenuItemText("username");

            item.AddChild(0, 0, 4, 1, usernameBlock);
            usernameBlock.SetText(username);
            usernameBlock.SetFontSize(8, 15);
            usernameBlock.SetTextStyle(UnityEngine.FontStyle.Bold);
            MenuItemText lastMsgBlock = new MenuItemText("lastMsg");

            item.AddChild(0, 1, 4, 2, lastMsgBlock);
            string text = chat.Messages.Last().Message;

            if (text.Length > MAX_MSG_LEN)
            {
                text  = text.Substring(0, MAX_MSG_LEN - 3);
                text += "...";
            }
            lastMsgBlock.SetText(text);
            lastMsgBlock.SetFontSize(5, 10);
            lastMsgBlock.SetAlignment(UnityEngine.TextAnchor.MiddleLeft);
            MenuItemButton openChat = new MenuItemButton("openChat");

            item.AddChild(4, 0, 1, 3, openChat);
            openChat.SetText(">");
            openChat.Clicked += () => ChatSelected?.Invoke(chat);
            return(item);
        }
Пример #2
0
 public void OpenChat(ChatObj chat)
 {
     _currChat   = chat;
     _toUserId   = chat.User1 == _userId ? chat.User2 : chat.User1;
     _toUsername = _api.DefaultApps.Friends.ListFriends().Wait().Find(x => x.UserId == _toUserId)?.Username;
     _headerItem.SetText(_toUsername);
     if (_toUsername == null)
     {
         _toUsername = "******";
     }
     Rerender();
 }
Пример #3
0
        private byte[] SendMessage(ulong from, ulong to, string message, MsgContext ctx)
        {
            InitChat(from, to);
            ChatObj    chat = _chats[from][to];
            ChatObjMsg msg  = new ChatObjMsg((ulong)DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
                                             from, to, message);

            lock (chat)
            {
                chat.Messages.Add(msg);
                AddToQueue(to, msg);
            }
            return(null);
        }
Пример #4
0
 private void InitChat(ulong from, ulong to)
 {
     if (!_chats.ContainsKey(from))
     {
         _chats.Add(from, new Dictionary <ulong, ChatObj>());
     }
     if (!_chats.ContainsKey(to))
     {
         _chats.Add(to, new Dictionary <ulong, ChatObj>());
     }
     if (!_chats[from].ContainsKey(to))
     {
         ChatObj newChat = new ChatObj(Math.Min(from, to), Math.Max(from, to));
         _chats[from].Add(to, newChat);
         _chats[to].Add(from, newChat);
         _allChats.Add(newChat);
     }
 }
Пример #5
0
 public void SubmitChat(ChatObj toSubmit)
 {
     lock (_ChatLock)
     {
         var query = from u in db.Users
                     where u.UserID == toSubmit.UserID
                     select u;
         if (query.Count() == 1)
         {
             ChatRoom newChat = new ChatRoom()
             {
                 Date   = toSubmit.Date,
                 Text   = toSubmit.Text,
                 UserID = toSubmit.UserID
             };
             db.ChatRooms.InsertOnSubmit(newChat);
             db.SubmitChanges();
         }
     }
 }
Пример #6
0
        public List <ChatObj> Post(ChatObj next)
        {
            DraftUser user = DraftAuthentication.AuthenticateRequest(Request);

            String text = next.Text;

            if (!String.IsNullOrWhiteSpace(text))
            {
                this.dataSource.SubmitChat(new ChatObj()
                {
                    Text   = text.Trim(),
                    UserID = user.ID,
                    Date   = DateTime.Now
                });
            }

            List <ChatObj> chatData = this.dataSource.GetChatData();

            return(chatData);
        }
Пример #7
0
 private void OnChatSelected(ChatObj chat)
 {
     _chatBlock.OpenChat(chat);
 }