Пример #1
0
        // Adds newly created chat to our list
        void proccessNewChat(object sender, EventArgs e)
        {
            int messageIndex = serverConnection.unreadMessages.Count - 1;

            if (messageIndex < 0)
            {
                return;
            }
            JObject message = JObject.Parse(serverConnection.unreadMessages[messageIndex]);
            string  type    = serverConnection.interpretMessageType(message);

            if (type == "chatCreated")
            {
                // Add new chat to our list
                Chat aChat = new Chat(message[type].ToString());

                // Creates sym key
                aChat.createSymKey();

                myChats[aChat.chatName]       = aChat;
                chatNameMatches[aChat.chatId] = aChat.chatName;

                // Invite Users
                string[] usersToInvite = FindViewById <EditText>(Resource.Id.chatInvites).Text.Split(',');
                for (int i = 0; i < usersToInvite.Length; i++)
                {
                    if (usersToInvite[i] == "")
                    {
                        continue;
                    }
                    inviteUsersToChat(aChat.chatName, usersToInvite[i]);
                }


                RunOnUiThread(() =>
                {
                    convoScreen();
                });
            }

            if (type == "acceptedToChat")
            {
                Chat   aChat       = new Chat(message[type].ToString());
                string givenSymKey = message[type]["symKey"].ToString();

                // Decrypts encrypted symkey
                AsymmetricKeyHelper asymKeyHelper = new AsymmetricKeyHelper(myAsymKeyPairAlias + mainUser.username);
                var symKey = asymKeyHelper.DecryptDataFromString(givenSymKey);

                aChat.loadChatKey(symKey);
                myChats[aChat.chatName]       = aChat;
                chatNameMatches[aChat.chatId] = aChat.chatName;
                getNewMessages(aChat);

                if (currentView == "convoScreen")
                {
                    RunOnUiThread(() =>
                    {
                        convoScreen();
                    });
                }
            }
        }