// WHen we get a connection
        private void InitConnection(Socket s)
        {
            // Read info here
            RequestConnectMessage msg = (RequestConnectMessage)JsonConvert.DeserializeObject(ReceiveMessage(s), typeof(RequestConnectMessage));
            string ip = s.RemoteEndPoint.ToString(); // TODO: change port to RequestConnectMessage.Port

            Application.Current.Dispatcher.Invoke(() =>
            {
                Actions.OpenDialog(typeof(AcceptDeclineDialog),
                                   new AcceptDeclineDialogViewModel(ip,
                                                                    msg.Sender, parameter => AcceptConnection(s, msg.id, msg.Sender, ip), parameter => DeclineConnection(s)));
            });
        }
        public void ConnectCallback(IAsyncResult ar)
        {
            Socket client = (Socket)ar.AsyncState;

            try
            {
                client.EndConnect(ar);
            }
            catch (Exception e) // TODO: Narrower catch. Check what it throws and when
            {
                Console.WriteLine(e);
            }

            if (!client.Connected)
            {
                OnDisconnect();
                Actions.HandleBugException(new NoConnectionException(), "Could not establish connection.");
                return;
            }

            RequestConnectMessage msg = new RequestConnectMessage(this.Model.Username, this.Model.id);
            string strMsg             = msg.Serialize();

            client.Send(Encoding.UTF8.GetBytes(strMsg));

            AcceptDeclineMessage acceptDeclineMessage = (AcceptDeclineMessage)JsonConvert.DeserializeObject(ReceiveMessage(client), typeof(AcceptDeclineMessage));

            if (acceptDeclineMessage.IsAccepted)
            {
                string ip = client.RemoteEndPoint.ToString(); // TODO: change port to RequestConnectMessage.Port
                setCurrentConnection(acceptDeclineMessage.id, acceptDeclineMessage.Sender, ip);
                StartRecieve(client);
            }
            else
            {
                OnDisconnect();
                Actions.HandleBugException(new NoConnectionException(), "Other user did not accept.");
            }
        }