Chats now only try to connect, if they are opened

This commit is contained in:
Patrick Hellebrand
2021-09-23 12:53:57 +02:00
committed by Felix Hartmann (PEA3-Fe-FI)
parent b12d3f3f4f
commit c00a7ff379
3 changed files with 20 additions and 7 deletions

View File

@@ -146,9 +146,11 @@ namespace PolyChat
private bool isInConnections(string IP) private bool isInConnections(string IP)
{ {
if (Connections.ContainsKey(IP)) return Connections.ContainsKey(IP);
return true; }
return false; public bool IsConnected(string ip)
{
return Connections.ContainsKey(ip) && Connections[ip].IsConnected();
} }
public static string getIP() public static string getIP()
@@ -195,7 +197,6 @@ namespace PolyChat
ip = ip.Substring(0, ip.Length - 4); ip = ip.Substring(0, ip.Length - 4);
Debug.WriteLine($"-{ip}"); Debug.WriteLine($"-{ip}");
Debug.WriteLine(jsonArr); Debug.WriteLine(jsonArr);
Connect(ip);
UIController.OnIncomingConnection(ip); UIController.OnIncomingConnection(ip);
UIController.OnIncomingMessages(ip, jsonArr); UIController.OnIncomingMessages(ip, jsonArr);
} }

View File

@@ -11,6 +11,7 @@ using System.Threading.Tasks;
using Windows.UI.Core; using Windows.UI.Core;
using Windows.UI.Xaml; using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 // The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
@@ -136,6 +137,7 @@ namespace PolyChat
switch (type) switch (type)
{ {
case "username": case "username":
Debug.WriteLine($"! username change for {sendingPartner.Code} -> {content}");
sendingPartner.SetName(Name); sendingPartner.SetName(Name);
break; break;
default: default:
@@ -156,8 +158,8 @@ namespace PolyChat
new ChatMessage( new ChatMessage(
origin, origin,
item["type"].ToString(), item["type"].ToString(),
item["content"].ToString(), item["content"].ToString()//,
DateTime.Parse(item["timestamp"].ToString()) //DateTime.Parse(item["timestamp"].ToString())
) )
); );
} }
@@ -190,6 +192,7 @@ namespace PolyChat
listViewMessages.ItemsSource = selectedPartner.Messages; listViewMessages.ItemsSource = selectedPartner.Messages;
selectedPartnerName.Text = selectedPartner.Name; selectedPartnerName.Text = selectedPartner.Name;
updateNoChatSelected(); updateNoChatSelected();
if (!Controller.IsConnected(code)) Controller.Connect(code);
} }
private void OnKeyUp(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e) private void OnKeyUp(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)

View File

@@ -1,14 +1,17 @@
using SocketIOSharp.Server.Client; using SocketIOSharp.Server.Client;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace PolyChat.Models namespace PolyChat.Models
{ {
public class ChatPartner public class ChatPartner : INotifyPropertyChanged
{ {
public string Name; public string Name;
public string Code; public string Code;
public ObservableCollection<ChatMessage> Messages; public ObservableCollection<ChatMessage> Messages;
private SocketIOSocket socketIOSocket; private SocketIOSocket socketIOSocket;
public event PropertyChangedEventHandler PropertyChanged;
public ChatPartner(string name, string code, ObservableCollection<ChatMessage> messages = null) public ChatPartner(string name, string code, ObservableCollection<ChatMessage> messages = null)
{ {
@@ -20,6 +23,11 @@ namespace PolyChat.Models
public SocketIOSocket SocketIOSocket { get => socketIOSocket; set => socketIOSocket = value; } public SocketIOSocket SocketIOSocket { get => socketIOSocket; set => socketIOSocket = value; }
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public void AddMessage(ChatMessage message) public void AddMessage(ChatMessage message)
{ {
Messages.Add(message); Messages.Add(message);
@@ -28,6 +36,7 @@ namespace PolyChat.Models
public void SetName(string name) public void SetName(string name)
{ {
Name = name; Name = name;
NotifyPropertyChanged("Name");
} }
} }
} }