Merged Theming with AsyncDialogs

This commit is contained in:
Patrick Hellebrand
2021-09-23 16:06:55 +02:00
5 changed files with 38 additions and 37 deletions

View File

@@ -29,8 +29,6 @@ namespace PolyChat
private readonly FileManager fileManager; private readonly FileManager fileManager;
// Props // Props
private Dictionary<string, Connection> Connections = new Dictionary<string, Connection>(); private Dictionary<string, Connection> Connections = new Dictionary<string, Connection>();
private string OwnName = "";
private string OwnIP;
/// <summary> /// <summary>
/// Initializes Controller with UI access /// Initializes Controller with UI access
@@ -40,7 +38,6 @@ namespace PolyChat
{ {
UIController = uiController; UIController = uiController;
fileManager = new FileManager(uiController); fileManager = new FileManager(uiController);
OwnIP = getIP();
fileManager.loadChats(); fileManager.loadChats();
Serve(); Serve();
@@ -96,7 +93,6 @@ namespace PolyChat
Debug.WriteLine("---- Added new Connection ----"); Debug.WriteLine("---- Added new Connection ----");
Connections.Add(ForeignIp, new Connection(socket, Data => OnMessage(ForeignIp, Data), CloseChat)); Connections.Add(ForeignIp, new Connection(socket, Data => OnMessage(ForeignIp, Data), CloseChat));
UIController.OnIncomingConnection(ForeignIp); UIController.OnIncomingConnection(ForeignIp);
fileManager.loadChat(ForeignIp);
} }
}); });
}); });
@@ -139,7 +135,7 @@ namespace PolyChat
else Debug.WriteLine("Undefined: " + data); else Debug.WriteLine("Undefined: " + data);
} }
public void CloseChat(string IP, bool wasConnected = true) public void CloseChat(string IP, bool wasConnected = true, bool delete = false)
{ {
Debug.WriteLine($"Deleting connection with IP:{IP}"); Debug.WriteLine($"Deleting connection with IP:{IP}");
if (IP != null && Connections.ContainsKey(IP)) if (IP != null && Connections.ContainsKey(IP))
@@ -147,14 +143,18 @@ namespace PolyChat
Connections[IP].Close(); Connections[IP].Close();
Connections.Remove(IP); Connections.Remove(IP);
} }
CloseChatUI(IP, wasConnected); if (delete || !wasConnected)
CloseChatUI(IP, wasConnected, delete);
if (delete)
fileManager.deleteChat(IP);
} }
private void CloseChatUI(string IP, bool wasConnected = true) private void CloseChatUI(string IP, bool wasConnected = true, bool delete = false)
{ {
UIController.OnChatPartnerDeleted(IP); UIController.OnChatPartnerDeleted(IP);
string heading = wasConnected ? "Connection Closed" : "Connection Failed"; string heading = wasConnected ? "Connection Closed" : "Connection Failed";
UIController.ShowConnectionError(IP, heading, $"Connecting to {IP} failed..."); if(!delete)
UIController.ShowConnectionError(IP, heading, $"Connecting to {IP} failed...");
} }
private bool isInConnections(string IP) private bool isInConnections(string IP)

View File

@@ -50,26 +50,27 @@ namespace PolyChat
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{ {
Dialog dialog = new Dialog( Dialog dialog = new Dialog(
Dialog.TYPE_ERROR, Dialog.TYPE_ERROR,
heading, heading,
message, message,
new DialogButton( new DialogButton(
"Retry", "Retry",
() => () =>
{ {
Controller.Connect(param); Controller.Connect(param);
Partners.Add(new ChatPartner( Partners.Add(new ChatPartner(
"Connecting...", "Connecting...",
param param
)); ));
updateNoChatsPlaceholder(); updateNoChatsPlaceholder();
} }
), ),
new DialogButton( new DialogButton(
"Ignore", "Ignore",
() => { /* do nothing */ } () => { /* do nothing */ }
) )
); );
SafelyOpenDialog(dialog);
}); });
} }
@@ -102,7 +103,9 @@ namespace PolyChat
{ {
string ip = IP.GetIPFromCode(dialog.getValue()); string ip = IP.GetIPFromCode(dialog.getValue());
Controller.Connect(ip); Controller.Connect(ip);
Partners.Add(new ChatPartner( ChatPartner pa = Partners.FirstOrDefault(p => p.Code == ip);
if (pa == null)
Partners.Add(new ChatPartner(
"Connecting...", "Connecting...",
ip ip
)); ));
@@ -188,7 +191,7 @@ namespace PolyChat
private void OnDeleteChat(object sender = null, RoutedEventArgs e = null) private void OnDeleteChat(object sender = null, RoutedEventArgs e = null)
{ {
Controller.CloseChat(selectedPartner.Code); Controller.CloseChat(selectedPartner.Code,delete: true);
Partners.Remove(selectedPartner); Partners.Remove(selectedPartner);
updateNoChatsPlaceholder(); updateNoChatsPlaceholder();
updateNoChatSelected(); updateNoChatSelected();

View File

@@ -15,9 +15,9 @@ namespace PolyChat.Models
private SocketIOSocket Socket; private SocketIOSocket Socket;
private bool Connected = false; private bool Connected = false;
private readonly string IP; private readonly string IP;
private Action<string, bool> DeleteConnection; private Action<string, bool, bool> DeleteConnection;
public Connection(string ip, ushort port, Action<JToken[]> onMessage, Action<string, bool> onClose) public Connection(string ip, ushort port, Action<JToken[]> onMessage, Action<string, bool, bool> onClose)
{ {
Debug.WriteLine("! CONNECTING TO SERVER !"); Debug.WriteLine("! CONNECTING TO SERVER !");
IP = ip; IP = ip;
@@ -32,7 +32,7 @@ namespace PolyChat.Models
Client.On("message", (Action<JToken[]>) onMessage); Client.On("message", (Action<JToken[]>) onMessage);
} }
public Connection(SocketIOSocket socket, Action<JToken[]> onMessage, Action<string, bool> onClose) public Connection(SocketIOSocket socket, Action<JToken[]> onMessage, Action<string, bool, bool> onClose)
{ {
Socket = socket; Socket = socket;
DeleteConnection = onClose; DeleteConnection = onClose;
@@ -66,7 +66,7 @@ namespace PolyChat.Models
{ {
Debug.WriteLine("--- Disconnected! ---"); Debug.WriteLine("--- Disconnected! ---");
Debug.WriteLine($"--- Deleting Connection with IP: {IP}---"); Debug.WriteLine($"--- Deleting Connection with IP: {IP}---");
DeleteConnection(IP, IsConnected()); DeleteConnection(IP, IsConnected(),false);
Connected = false; Connected = false;
} }
private void OnError(JToken[] data) private void OnError(JToken[] data)

View File

@@ -36,7 +36,7 @@ namespace PolyChat.Models
{ {
foreach (String path in filepaths) foreach (String path in filepaths)
{ {
if (Path.GetFileName(path).Equals(ip)) if (Path.GetFileName(path).Equals(ip+".txt"))
{ {
File.Delete(path); File.Delete(path);
return; return;

View File

@@ -34,8 +34,6 @@ namespace PolyChat.Views
// TODO: use event handlers and asign actions here // TODO: use event handlers and asign actions here
Primary = primary.Action; Primary = primary.Action;
Secondary = secondary.Action; Secondary = secondary.Action;
// show
MainPage.SafelyOpenDialog(this);
RequestedTheme = MainPage.GetTheme(); RequestedTheme = MainPage.GetTheme();
} }