Merged Theming with AsyncDialogs
This commit is contained in:
@@ -29,8 +29,6 @@ namespace PolyChat
|
||||
private readonly FileManager fileManager;
|
||||
// Props
|
||||
private Dictionary<string, Connection> Connections = new Dictionary<string, Connection>();
|
||||
private string OwnName = "";
|
||||
private string OwnIP;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes Controller with UI access
|
||||
@@ -40,7 +38,6 @@ namespace PolyChat
|
||||
{
|
||||
UIController = uiController;
|
||||
fileManager = new FileManager(uiController);
|
||||
OwnIP = getIP();
|
||||
fileManager.loadChats();
|
||||
Serve();
|
||||
|
||||
@@ -96,7 +93,6 @@ namespace PolyChat
|
||||
Debug.WriteLine("---- Added new Connection ----");
|
||||
Connections.Add(ForeignIp, new Connection(socket, Data => OnMessage(ForeignIp, Data), CloseChat));
|
||||
UIController.OnIncomingConnection(ForeignIp);
|
||||
fileManager.loadChat(ForeignIp);
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -139,7 +135,7 @@ namespace PolyChat
|
||||
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}");
|
||||
if (IP != null && Connections.ContainsKey(IP))
|
||||
@@ -147,14 +143,18 @@ namespace PolyChat
|
||||
Connections[IP].Close();
|
||||
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);
|
||||
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)
|
||||
|
||||
@@ -50,26 +50,27 @@ namespace PolyChat
|
||||
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
|
||||
{
|
||||
Dialog dialog = new Dialog(
|
||||
Dialog.TYPE_ERROR,
|
||||
heading,
|
||||
message,
|
||||
new DialogButton(
|
||||
"Retry",
|
||||
() =>
|
||||
{
|
||||
Controller.Connect(param);
|
||||
Partners.Add(new ChatPartner(
|
||||
"Connecting...",
|
||||
param
|
||||
));
|
||||
updateNoChatsPlaceholder();
|
||||
}
|
||||
),
|
||||
new DialogButton(
|
||||
"Ignore",
|
||||
() => { /* do nothing */ }
|
||||
)
|
||||
);
|
||||
Dialog.TYPE_ERROR,
|
||||
heading,
|
||||
message,
|
||||
new DialogButton(
|
||||
"Retry",
|
||||
() =>
|
||||
{
|
||||
Controller.Connect(param);
|
||||
Partners.Add(new ChatPartner(
|
||||
"Connecting...",
|
||||
param
|
||||
));
|
||||
updateNoChatsPlaceholder();
|
||||
}
|
||||
),
|
||||
new DialogButton(
|
||||
"Ignore",
|
||||
() => { /* do nothing */ }
|
||||
)
|
||||
);
|
||||
SafelyOpenDialog(dialog);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -102,7 +103,9 @@ namespace PolyChat
|
||||
{
|
||||
string ip = IP.GetIPFromCode(dialog.getValue());
|
||||
Controller.Connect(ip);
|
||||
Partners.Add(new ChatPartner(
|
||||
ChatPartner pa = Partners.FirstOrDefault(p => p.Code == ip);
|
||||
if (pa == null)
|
||||
Partners.Add(new ChatPartner(
|
||||
"Connecting...",
|
||||
ip
|
||||
));
|
||||
@@ -188,7 +191,7 @@ namespace PolyChat
|
||||
|
||||
private void OnDeleteChat(object sender = null, RoutedEventArgs e = null)
|
||||
{
|
||||
Controller.CloseChat(selectedPartner.Code);
|
||||
Controller.CloseChat(selectedPartner.Code,delete: true);
|
||||
Partners.Remove(selectedPartner);
|
||||
updateNoChatsPlaceholder();
|
||||
updateNoChatSelected();
|
||||
|
||||
@@ -15,9 +15,9 @@ namespace PolyChat.Models
|
||||
private SocketIOSocket Socket;
|
||||
private bool Connected = false;
|
||||
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 !");
|
||||
IP = ip;
|
||||
@@ -32,7 +32,7 @@ namespace PolyChat.Models
|
||||
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;
|
||||
DeleteConnection = onClose;
|
||||
@@ -66,7 +66,7 @@ namespace PolyChat.Models
|
||||
{
|
||||
Debug.WriteLine("--- Disconnected! ---");
|
||||
Debug.WriteLine($"--- Deleting Connection with IP: {IP}---");
|
||||
DeleteConnection(IP, IsConnected());
|
||||
DeleteConnection(IP, IsConnected(),false);
|
||||
Connected = false;
|
||||
}
|
||||
private void OnError(JToken[] data)
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace PolyChat.Models
|
||||
{
|
||||
foreach (String path in filepaths)
|
||||
{
|
||||
if (Path.GetFileName(path).Equals(ip))
|
||||
if (Path.GetFileName(path).Equals(ip+".txt"))
|
||||
{
|
||||
File.Delete(path);
|
||||
return;
|
||||
|
||||
@@ -34,8 +34,6 @@ namespace PolyChat.Views
|
||||
// TODO: use event handlers and asign actions here
|
||||
Primary = primary.Action;
|
||||
Secondary = secondary.Action;
|
||||
// show
|
||||
MainPage.SafelyOpenDialog(this);
|
||||
RequestedTheme = MainPage.GetTheme();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user