示例#1
0
 public ChatViewModelDesignData()
 {
     ChatEntries.Add(new PlayerMessageEntry
     {
         PlayerName = "Dummy1",
         Color      = ChatColor.Green,
         Message    = "Message with player name visible",
     });
     ChatEntries.Add(new ServerMessageEntry
     {
         Color   = ChatColor.Red,
         Message = "Message without player name",
     });
     ChatEntries.Add(new InvalidAchievementEntry
     {
         Color            = ChatColor.Blue,
         AchievementTitle = "Too good for you",
         PlayerName       = "Dummy3",
     });
     for (int i = 0; i < 50; i++)
     {
         ChatEntries.Add(new PlayerMessageEntry
         {
             Color      = ChatColor.Orange,
             PlayerName = "Player1",
             Message    = "A dummy message"
         });
     }
 }
示例#2
0
        public override async void OnNavigatingTo(INavigationParameters parameters)
        {
            if (parameters.GetNavigationMode() == NavigationMode.New)
            {
                var dbChats = await _database.Chats.GetAll();

                AreChatsEmpty = dbChats.Count == 0;

                var chatEntries = new List <ChatEntry>();
                foreach (var dbChat in dbChats)
                {
                    var chatEntry = dbChat.ToChatEntry();
                    if (chatEntry.LastMessage != null)
                    {
                        if (chatEntry.Type == ChatType.Normal)
                        {
                            chatEntry.LastMessage.Decrypt(_walletManager.Wallet, chatEntry.ChatPartner.PublicKey);
                        }
                        else if (chatEntry.Type == ChatType.Group)
                        {
                            var privKey = chatEntry.GroupInfo.IsPublic ? chatEntry.GroupInfo.PrivateKey : _walletManager.Wallet.Decrypt(chatEntry.GroupInfo.PrivateKey, chatEntry.GroupInfo.PublicKey);
                            chatEntry.LastMessage.Decrypt(privKey, chatEntry.LastMessage.Sender.PublicKey);
                        }
                    }

                    var dbLastReadMessageID = await _database.LastReadMessageIDs.GetByChatID(chatEntry.ID);

                    chatEntry.UpdateUnreadMessageCount(dbLastReadMessageID != null ? dbLastReadMessageID.LastReadID : 0);

                    chatEntries.Add(chatEntry);
                }
                ChatEntries = new ExtendedObservableCollection <ChatEntry>(chatEntries);
                ChatEntries.Sort(false);

                // BETA
                await TryJoinPublicBetaGroup();
            }
            else if (parameters.GetNavigationMode() == NavigationMode.Back) // Navigated back to this page
            {
                try
                {
                    foreach (var chatEntry in ChatEntries.ToList())
                    {
                        var dbLastReadMessageID = await _database.LastReadMessageIDs.GetByChatID(chatEntry.ID);

                        chatEntry.UpdateUnreadMessageCount(dbLastReadMessageID != null ? dbLastReadMessageID.LastReadID : 0);
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex);
                }
            }

            CheckFreeUsage();
        }
示例#3
0
 private void OnHumanSpeechDetected(QiValue qv)
 {
     if (qv.Count > 0 && qv[0].ContentValueKind == QiValueKind.QiString)
     {
         System.Windows.Application.Current.Dispatcher.Invoke(() =>
         {
             ChatEntries.Add(new HumanChatEntryViewModel(qv[0].GetString()));
         });
     }
 }
示例#4
0
 protected void AddEntry(ChatEntry entry)
 {
     ExecuteOnUIThread.Invoke(() =>
     {
         ChatEntries.Add(entry);
         if (ChatEntries.Count > MaxEntries)
         {
             ChatEntries.RemoveAt(0);
         }
     });
 }
示例#5
0
    public ChatEntry AddEntry()
    {
        var entry = new ChatEntry {
            DateTime = DateTime.Now, Sender = NickName
        };

        entry.Content = UserInput;
        ChatEntries.Add(entry);
        UserInput = null;
        return(entry);
    }
示例#6
0
    void Awake()
    {
        repositorio = GameObject.FindGameObjectWithTag("Repositorio").GetComponent <Repositorio>();
        comandos    = GameObject.FindGameObjectWithTag("Repositorio").GetComponent <MUDCommand>();

        foreach (Sala sala in repositorio.salas)
        {
            ChatEntries chat = new ChatEntries();
            chat.idSala = sala.idSala;

            chatEntries.Add(chat);
        }
    }
示例#7
0
        private void OnRobotSpeechDetected(QiValue qv)
        {
            if (qv.Count == 0 || qv[0].ContentValueKind != QiValueKind.QiString)
            {
                return;
            }

            string sentence = qv[0].GetString();

            if (!string.IsNullOrWhiteSpace(sentence))
            {
                System.Windows.Application.Current.Dispatcher.Invoke(() =>
                {
                    ChatEntries.Add(new RobotChatEntryViewModel(sentence));
                });
            }
        }
示例#8
0
        async void UpdateChatEntriesCommandExcecuted()
        {
            var chats = await _syncServer.GetChatsAsync(_walletManager.Wallet.Address);

            if (chats != null)
            {
                for (var i = ChatEntries.Count - 1; i >= 0; i--)
                {
                    var chat       = ChatEntries[i];
                    var stillExist = false;
                    foreach (var chat2 in chats)
                    {
                        stillExist = (chat.ID == chat2.ID);
                        if (stillExist)
                        {
                            break;
                        }
                    }
                    if (!stillExist)
                    {
                        var updateTopic = $"{AppConstants.FCM.Topics.Update}_{(chat.Type == ChatType.Normal ? chat.ChatPartner.TronAddress : chat.GroupInfo.TronAddress)}";
                        _fcm.Unsubscribe(updateTopic);

                        await _database.Chats.DeleteByChatID(chat.ID);

                        ChatEntries.RemoveAt(i);
                    }
                }

                foreach (var chat in chats)
                {
                    var alreadyExist = false;
                    if (chat.LastMessage != null)
                    {
                        if (chat.Type == ChatType.Normal)
                        {
                            chat.LastMessage.Decrypt(_walletManager.Wallet, chat.ChatPartner.PublicKey);
                        }
                        else if (chat.Type == ChatType.Group)
                        {
                            var privKey = chat.GroupInfo.IsPublic ? chat.GroupInfo.PrivateKey : _walletManager.Wallet.Decrypt(chat.GroupInfo.PrivateKey, chat.GroupInfo.PublicKey);
                            chat.LastMessage.Decrypt(privKey, chat.LastMessage.Sender.PublicKey);
                        }
                    }

                    var dbLastReadMessageID = await _database.LastReadMessageIDs.GetByChatID(chat.ID);

                    chat.UpdateUnreadMessageCount(dbLastReadMessageID != null ? dbLastReadMessageID.LastReadID : 0);

                    for (var i = 0; i < ChatEntries.Count; i++)
                    {
                        if (chat.ID == ChatEntries[i].ID)
                        {
                            ChatEntries.RemoveAt(i);
                            ChatEntries.Insert(i, chat);
                            alreadyExist = true;
                        }
                    }

                    if (!alreadyExist)
                    {
                        AreChatsEmpty = false;
                        ChatEntries.Insert(0, chat);
                    }

                    var updateTopic = $"{AppConstants.FCM.Topics.Update}_{(chat.Type == ChatType.Normal ? chat.ChatPartner.TronAddress : chat.GroupInfo.TronAddress)}";
                    if (!_fcm.SubscribedTopics.Contains(updateTopic))
                    {
                        _fcm.Subscribe(updateTopic);
                    }
                    if (chat.Type == ChatType.Group)
                    {
                        var msgTopic = $"{AppConstants.FCM.Topics.Group}_{chat.GroupInfo.TronAddress}";
                        if (!_fcm.SubscribedTopics.Contains(msgTopic))
                        {
                            _fcm.Subscribe(msgTopic);
                        }
                    }
                }

                ChatEntries.Sort(false);
            }
        }