Compare commits

...

7 Commits

Author SHA1 Message Date
SCM6WE
0ca78d7861 Merge branch 'ConnectionController' of https://sourcecode.socialcoding.bosch.com/scm/~hpl2fe/polychat into ConnectionController 2021-09-23 16:07:50 +02:00
SCM6WE
323f4d5b5b Merge branch 'ConnectionController' of https://sourcecode.socialcoding.bosch.com/scm/~hpl2fe/polychat into ConnectionController
# Conflicts:
#	PolyChat/Controller.cs
2021-09-23 16:07:33 +02:00
Patrick Hellebrand
3b4ca6caa3 Merged Theming with AsyncDialogs 2021-09-23 16:06:55 +02:00
Patrick Hellebrand
0a1ff66e38 Message Alignment First Try 2021-09-23 16:05:20 +02:00
SCM6WE
88e5d3a329 Cleanup / Comments 2021-09-23 16:03:12 +02:00
Patrick Hellebrand
de2d135fdf Added Themes + Toggle 2021-09-23 15:31:30 +02:00
Patrick Hellebrand
15679951bc removed ability to send empty messages 2021-09-23 14:54:25 +02:00
8 changed files with 125 additions and 103 deletions

View File

@@ -16,7 +16,6 @@ using Windows.Storage.Streams;
namespace PolyChat namespace PolyChat
{ {
// 10.1.211.26 Marc // 10.1.211.26 Marc
// 10.1.218.90 Felix // 10.1.218.90 Felix
// 10.4.141.77 Pat // 10.4.141.77 Pat
@@ -37,7 +36,8 @@ namespace PolyChat
public Controller(MainPage uiController) public Controller(MainPage uiController)
{ {
UIController = uiController; UIController = uiController;
fileManager = new FileManager(uiController); fileManager = new FileManager(this);
//OwnIP = getIP();
fileManager.loadChats(); fileManager.loadChats();
Serve(); Serve();
@@ -65,6 +65,9 @@ namespace PolyChat
} }
/// <summary>
/// starts server for clients to connect to
/// </summary>
private void Serve() private void Serve()
{ {
Debug.WriteLine("--- Controller.Serve ---"); Debug.WriteLine("--- Controller.Serve ---");
@@ -107,6 +110,12 @@ namespace PolyChat
} }
} }
/// <summary>
/// Sends message to given ip
/// </summary>
/// <param name="ip"></param>
/// <param name="type"></param>
/// <param name="content"></param>
public void SendMessage(string ip, string type, string content) public void SendMessage(string ip, string type, string content)
{ {
Debug.WriteLine("--- Controller.SendMessage ---"); Debug.WriteLine("--- Controller.SendMessage ---");
@@ -122,6 +131,11 @@ namespace PolyChat
fileManager.saveChats(ip, json.ToString(), DateTime.Now); fileManager.saveChats(ip, json.ToString(), DateTime.Now);
} }
/// <summary>
/// if We recieve a message this method gets triggert
/// </summary>
/// <param name="ip">ip from sender</param>
/// <param name="data">String that is send</param>
private void OnMessage(string ip, JToken[] data) private void OnMessage(string ip, JToken[] data)
{ {
Debug.WriteLine("--- Controller.OnMessage ---"); Debug.WriteLine("--- Controller.OnMessage ---");
@@ -135,6 +149,12 @@ namespace PolyChat
else Debug.WriteLine("Undefined: " + data); else Debug.WriteLine("Undefined: " + data);
} }
/// <summary>
/// Closes chat connection
/// </summary>
/// <param name="IP">ip of user to be closed</param>
/// <param name="wasConnected"></param>
/// <param name="delete"></param>
public void CloseChat(string IP, bool wasConnected = true, bool delete = false) 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}");
@@ -149,6 +169,17 @@ namespace PolyChat
fileManager.deleteChat(IP); fileManager.deleteChat(IP);
} }
/// <summary>
/// sends incoming message to ui
/// </summary>
/// <param name="ip">ip of client that send the message</param>
/// <param name="jsonArr">the json array that is ti be displayed in th gui</param>
public void SendIncomingMessageUI(String ip, String jsonArr)
{
UIController.OnIncomingConnection(ip);
UIController.OnIncomingMessages(ip, jsonArr);
}
private void CloseChatUI(string IP, bool wasConnected = true, bool delete = false) private void CloseChatUI(string IP, bool wasConnected = true, bool delete = false)
{ {
UIController.OnChatPartnerDeleted(IP); UIController.OnChatPartnerDeleted(IP);
@@ -166,6 +197,10 @@ namespace PolyChat
return Connections.ContainsKey(ip) && Connections[ip].IsConnected(); return Connections.ContainsKey(ip) && Connections[ip].IsConnected();
} }
/// <summary>
/// returns your own ip that starts with 10. becuase that is our subnet
/// </summary>
/// <returns></returns>
public static string getIP() public static string getIP()
{ {
IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName()); IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName());
@@ -180,11 +215,5 @@ namespace PolyChat
return null; return null;
} }
private void encode(string json)
{
String ecryptetText = FileManager.encrypt(json);
Debug.WriteLine(ecryptetText);
Debug.WriteLine(FileManager.decrypt(ecryptetText));
}
} }
} }

View File

@@ -6,17 +6,18 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:models="using:PolyChat.Models" xmlns:models="using:PolyChat.Models"
mc:Ignorable="d" mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" RequestedTheme="Dark"> Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="224"/> <ColumnDefinition Width="224"/>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<!-- LEFT SIDE --> <!-- LEFT SIDE -->
<Grid Grid.Column="0" Margin="16"> <Grid Grid.Column="0" Padding="16" Background="{ThemeResource SystemChromeMediumColor}">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/>
<RowDefinition Height="*"/> <RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<!-- CONNECTION HEADER --> <!-- CONNECTION HEADER -->
<StackPanel HorizontalAlignment="Stretch" Spacing="8" Margin="0 0 0 8"> <StackPanel HorizontalAlignment="Stretch" Spacing="8" Margin="0 0 0 8">
@@ -37,7 +38,7 @@
<TextBlock Text="Connect to" Foreground="{ThemeResource SystemColorDisabledTextColor}"/> <TextBlock Text="Connect to" Foreground="{ThemeResource SystemColorDisabledTextColor}"/>
<TextBlock x:Name="ipAddress" Grid.Column="1"/> <TextBlock x:Name="ipAddress" Grid.Column="1"/>
</Grid> </Grid>
<Border BorderThickness="1" BorderBrush="{ThemeResource AppBarBorderThemeBrush}"/> <Border BorderThickness="1" BorderBrush="{ThemeResource SystemControlBackgroundListLowBrush}"/>
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Center"> <Grid HorizontalAlignment="Stretch" VerticalAlignment="Center">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
@@ -55,12 +56,8 @@
<DataTemplate x:DataType="models:ChatPartner"> <DataTemplate x:DataType="models:ChatPartner">
<RadioButton GroupName="chatSelect" Tag="{x:Bind Code}" HorizontalAlignment="Stretch" Height="64" Click="OnChatPartnerSelected"> <RadioButton GroupName="chatSelect" Tag="{x:Bind Code}" HorizontalAlignment="Stretch" Height="64" Click="OnChatPartnerSelected">
<StackPanel x:Name="ChatPartner" VerticalAlignment="Center" HorizontalAlignment="Stretch"> <StackPanel x:Name="ChatPartner" VerticalAlignment="Center" HorizontalAlignment="Stretch">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch"> <TextBlock HorizontalAlignment="Stretch" Text="{x:Bind Name}"/>
<TextBlock HorizontalAlignment="Stretch" Text="{x:Bind Name}"/> <TextBlock Foreground="{ThemeResource SystemColorDisabledTextColor}" Text="{x:Bind Code}"/>
<TextBlock Foreground="{ThemeResource SystemColorDisabledTextColor}" Text=" ("/>
<TextBlock Foreground="{ThemeResource SystemColorDisabledTextColor}" Text="{x:Bind Code}"/>
<TextBlock Foreground="{ThemeResource SystemColorDisabledTextColor}" Text=")"/>
</StackPanel>
<!-- <!--
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<TextBlock HorizontalAlignment="Stretch" Text="{x:Bind Messages.Last().toString()}"/> <TextBlock HorizontalAlignment="Stretch" Text="{x:Bind Messages.Last().toString()}"/>
@@ -73,6 +70,7 @@
</ListView.ItemTemplate> </ListView.ItemTemplate>
</ListView> </ListView>
</ScrollViewer> </ScrollViewer>
<Button Grid.Row="2" Click="OnToggleTheme" Content="Toggle Theme"/>
</Grid> </Grid>
<TextBlock x:Name="textNoChatSelected" Grid.Column="1" Text="No Chat Selected" Foreground="{ThemeResource SystemColorDisabledTextColor}" FontSize="24" VerticalAlignment="Center" HorizontalAlignment="Center"/> <TextBlock x:Name="textNoChatSelected" Grid.Column="1" Text="No Chat Selected" Foreground="{ThemeResource SystemColorDisabledTextColor}" FontSize="24" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<!-- RIGHT SIDE --> <!-- RIGHT SIDE -->
@@ -100,10 +98,11 @@
<ListView x:Name="listViewMessages" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="4 16"> <ListView x:Name="listViewMessages" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="4 16">
<ListView.ItemTemplate> <ListView.ItemTemplate>
<DataTemplate x:DataType="models:ChatMessage"> <DataTemplate x:DataType="models:ChatMessage">
<StackPanel x:Name="Message" MaxWidth="320" Margin="0 4" Padding="16 8" CornerRadius="4" Background="{ThemeResource SystemAccentColor}"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<TextBlock Text="{x:Bind Content}" Foreground="{ThemeResource SystemAltHighColor}" TextWrapping="WrapWholeWords" FontSize="14"/> <StackPanel HorizontalAlignment="{x:Bind Align}" x:Name="Message" MaxWidth="320" Margin="0 4" Padding="16 8" CornerRadius="4" Background="{ThemeResource SystemAccentColor}">
<TextBlock Text="{x:Bind TimeStamp.ToString()}" Foreground="{ThemeResource SystemAltMediumColor}"/> <TextBlock Text="{x:Bind Content}" Foreground="{ThemeResource SystemAltHighColor}" TextWrapping="WrapWholeWords" FontSize="14"/>
<TextBlock Text="{x:Bind Foreign}" Foreground="{ThemeResource SystemAltMediumLowColor}" FontStyle="Italic" /> <TextBlock Text="{x:Bind TimeStamp.ToString()}" Foreground="{ThemeResource SystemAltMediumColor}"/>
</StackPanel>
</StackPanel> </StackPanel>
</DataTemplate> </DataTemplate>
</ListView.ItemTemplate> </ListView.ItemTemplate>

View File

@@ -26,6 +26,7 @@ namespace PolyChat
private ObservableCollection<ChatPartner> Partners; private ObservableCollection<ChatPartner> Partners;
private ChatPartner selectedPartner = null; private ChatPartner selectedPartner = null;
private string username; private string username;
private static ElementTheme Theme = ElementTheme.Light;
public MainPage() public MainPage()
{ {
@@ -35,6 +36,9 @@ namespace PolyChat
// ui variables // ui variables
ipAddress.Text = IP.GetCodeFromIP(Controller.getIP()); ipAddress.Text = IP.GetCodeFromIP(Controller.getIP());
Partners = new ObservableCollection<ChatPartner>(); Partners = new ObservableCollection<ChatPartner>();
// theming
RequestedTheme = Theme;
// updated placeholder
updateNoChatsPlaceholder(); updateNoChatsPlaceholder();
updateNoUsernamePlaceholder(); updateNoUsernamePlaceholder();
updateNoChatSelected(); updateNoChatSelected();
@@ -74,7 +78,7 @@ namespace PolyChat
public void OnSendMessage(object sender = null, RoutedEventArgs e = null) public void OnSendMessage(object sender = null, RoutedEventArgs e = null)
{ {
selectedPartner.AddMessage(new ChatMessage(username, "message", inputSend.Text)); selectedPartner.AddMessage(new ChatMessage(username, "message", inputSend.Text, DateTime.Now, false));
Controller.SendMessage(selectedPartner.Code, "message", inputSend.Text); Controller.SendMessage(selectedPartner.Code, "message", inputSend.Text);
// clear input // clear input
inputSend.Text = ""; inputSend.Text = "";
@@ -159,7 +163,7 @@ namespace PolyChat
Partners.Insert(index, sendingPartner); Partners.Insert(index, sendingPartner);
break; break;
default: default:
sendingPartner.AddMessage(new ChatMessage(origin, type, content, timeStamp)); sendingPartner.AddMessage(new ChatMessage(origin, type, content, timeStamp, true));
break; break;
} }
}); });
@@ -176,15 +180,15 @@ 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()),
false // TODO: FIX !!!!
) )
); );
} }
}); });
} }
private void OnDeleteChat(object sender = null, RoutedEventArgs e = null) private void OnDeleteChat(object sender = null, RoutedEventArgs e = null)
{ {
Controller.CloseChat(selectedPartner.Code,delete: true); Controller.CloseChat(selectedPartner.Code,delete: true);
@@ -213,35 +217,31 @@ namespace PolyChat
if (!Controller.IsConnected(code)) Controller.Connect(code); if (!Controller.IsConnected(code)) Controller.Connect(code);
} }
public void OnToggleTheme(object sender, RoutedEventArgs e)
{
Theme = Theme == ElementTheme.Light ? ElementTheme.Dark : ElementTheme.Light;
RequestedTheme = Theme;
}
private void OnKeyUp(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e) private void OnKeyUp(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
{ {
updateSendButtonEnabled(); updateSendButtonEnabled();
if (e.Key == Windows.System.VirtualKey.Enter) if (buttonSend.IsEnabled && e.Key == Windows.System.VirtualKey.Enter)
{ {
OnSendMessage(); OnSendMessage();
} }
} }
public static IAsyncOperation<ContentDialogResult> SafelyOpenDialog(Dialog d) public static IAsyncOperation<ContentDialogResult> SafelyOpenDialog(ContentDialog d)
{ {
if(VisualTreeHelper.GetOpenPopups(Window.Current).Count == 0) if(VisualTreeHelper.GetOpenPopups(Window.Current).Count == 0)
return d.ShowAsync(); return d.ShowAsync();
return null; return null;
} }
public static IAsyncOperation<ContentDialogResult> SafelyOpenDialog(NewChatDialog d) // GETTERS
{
if (VisualTreeHelper.GetOpenPopups(Window.Current).Count == 0)
return d.ShowAsync();
return null;
}
public static IAsyncOperation<ContentDialogResult> SafelyOpenDialog(EditUsernameDialog d) public static ElementTheme GetTheme() => Theme;
{
if (VisualTreeHelper.GetOpenPopups(Window.Current).Count == 0)
return d.ShowAsync();
return null;
}
// UPDATE FUNCTIONS FOR UI PLACEHOLDERS // UPDATE FUNCTIONS FOR UI PLACEHOLDERS

View File

@@ -1,6 +1,7 @@
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using System.Text.Json; using System.Text.Json;
using Windows.UI.Xaml;
namespace PolyChat.Models namespace PolyChat.Models
{ {
@@ -10,38 +11,23 @@ namespace PolyChat.Models
public string Type; public string Type;
public string Content; public string Content;
public DateTime TimeStamp; public DateTime TimeStamp;
public readonly bool Foreign; public HorizontalAlignment Align;
private bool Foreign;
/// <summary> /// <summary>
/// Create own Message (directly sent) /// Create Message
/// </summary>
/// <param name="origin">My IP</param>
/// <param name="type">Message Type</param>
/// <param name="content">Message Content (not JSON)</param>
public ChatMessage(string origin, string type, string content)
{
Origin = origin;
TimeStamp = DateTime.Now;
Type = type;
Content = content;
// TODO
Foreign = false;
Debug.WriteLine("Created Message: " + ToString());
}
/// <summary>
/// Create Message loaded with timestamp
/// </summary> /// </summary>
/// <param name="origin">Origin IP</param> /// <param name="origin">Origin IP</param>
/// <param name="type">Message Type, usually "message"</param> /// <param name="type">Message Type, usually "message"</param>
/// <param name="content">Message Content, usually plain text</param> /// <param name="content">Message Content, usually plain text</param>
/// <param name="timeStamp">Parsed DateTime</param> /// <param name="timeStamp">Parsed DateTime</param>
public ChatMessage(string origin, string type, string content, DateTime timeStamp, bool foreign = false) public ChatMessage(string origin, string type, string content, DateTime timeStamp, bool foreign)
{ {
Origin = origin; Origin = origin;
TimeStamp = timeStamp; TimeStamp = timeStamp;
Type = type; Type = type;
Content = content; Content = content;
Align = foreign ? HorizontalAlignment.Right : HorizontalAlignment.Left;
Foreign = foreign; Foreign = foreign;
Debug.WriteLine("Created Loaded Message: " + ToString()); Debug.WriteLine("Created Loaded Message: " + ToString());
} }

View File

@@ -14,13 +14,21 @@ namespace PolyChat.Models
class FileManager class FileManager
{ {
// Controller // Controller
private readonly MainPage UIController; private readonly Controller controller;
public FileManager(MainPage uiController)
//===============================================================================================================================================
//Constructor
//===============================================================================================================================================
public FileManager(Controller controller)
{ {
UIController = uiController; this.controller = controller;
} }
//===============================================================================================================================================
// editing save files
//===============================================================================================================================================
/// <summary> /// <summary>
/// deletes chatlog of one speciffic user /// deletes chatlog of one speciffic user
/// </summary> /// </summary>
@@ -59,14 +67,13 @@ namespace PolyChat.Models
if (File.Exists($"U:\\PolyChat\\Saves\\{ip}.txt")) if (File.Exists($"U:\\PolyChat\\Saves\\{ip}.txt"))
{ {
String jsonArr = decrypt(File.ReadAllText($"U:\\PolyChat\\Saves\\{ip}.txt")); String jsonArr = decrypt(File.ReadAllText($"U:\\PolyChat\\Saves\\{ip}.txt"));
UIController.OnIncomingConnection(ip); controller.SendIncomingMessageUI(ip, jsonArr);
UIController.OnIncomingMessages(ip, jsonArr);
} }
} }
} }
/// <summary> /// <summary>
/// sends chatlogs as json array to uiController wit corrosponding ip /// sends chatlogs as json array to uiController with corrosponding ip
/// ///
/// in ui when chat is clicked connection gets established /// in ui when chat is clicked connection gets established
/// </summary> /// </summary>
@@ -97,22 +104,18 @@ namespace PolyChat.Models
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);
UIController.OnIncomingConnection(ip); controller.SendIncomingMessageUI(ip, jsonArr);
UIController.OnIncomingMessages(ip, jsonArr);
} }
} }
} }
/// <summary> /// <summary>
/// Saves incoming chat message to /// Saves incoming chat message to U:\PolyChat\Saves\ip.txt
/// </summary> /// </summary>
/// <param name="ip"></param> /// <param name="ip"></param>
/// <param name="json"></param> /// <param name="json"></param>
public void saveChats(string ip, string json, DateTime timeStamp) public void saveChats(string ip, string json, DateTime timeStamp)
{ {
//Vielleicht noch so machen dass die mit gleicher ip nacheinander gemacht
//werden damit es nicht zu überschreibungen kommt vielleicth auch ganz oben oder am ende ne
//writing flag setzen oder auch in der datei selbst ne flag setzen
new Thread(() => new Thread(() =>
{ {
//breaking if namechange //breaking if namechange
@@ -120,39 +123,39 @@ namespace PolyChat.Models
if (!obj["type"].ToString().Equals("username")) if (!obj["type"].ToString().Equals("username"))
{ {
//adding timestamp //adding timestamp
obj = JObject.Parse(json);
obj.Add(new JProperty("timestamp", timeStamp)); obj.Add(new JProperty("timestamp", timeStamp));
json = obj.ToString(); json = obj.ToString();
if (File.Exists($"U:\\PolyChat\\Saves\\{ip}.txt")) if (File.Exists($"U:\\PolyChat\\Saves\\{ip}.txt"))
{ {
Debug.WriteLine("--File allready exists--"); Debug.WriteLine("--File allready exists--");
//check for integraty of file //check for integraty of file
string output = decrypt(File.ReadAllText($"U:\\PolyChat\\Saves\\{ip}.txt")); string output = decrypt(File.ReadAllText($"U:\\PolyChat\\Saves\\{ip}.txt"));
Debug.WriteLine($"---{output}---"); Debug.WriteLine($"---{output}---");
if (output.Substring(0, 1).Equals("[") && output.Substring(output.Length - 1, 1).Equals("]")) if (output.Substring(0, 1).Equals("[") && output.Substring(output.Length - 1, 1).Equals("]"))
{ {
Debug.WriteLine("--adding new chatmessage--");
//structure intact //structure intact
//save new chat //save new chat
String saved = output.Substring(0, output.Length - 1); Debug.WriteLine("--adding new chatmessage--");
output = saved + ", " + json + " ]"; output = output.Substring(0, output.Length - 1) + ", " + json + " ]"; //rip appart and put file back together
File.Delete($"U:\\PolyChat\\Saves\\{ip}.txt"); File.Delete($"U:\\PolyChat\\Saves\\{ip}.txt");
File.WriteAllText($"U:\\PolyChat\\Saves\\{ip}.txt", encrypt(output)); File.WriteAllText($"U:\\PolyChat\\Saves\\{ip}.txt", encrypt(output)); //encrypt and save to textfile
} }
else else
{ {
Debug.WriteLine("--Structure not intact--");
Debug.WriteLine("--redoing file--");
//structure not intact //structure not intact
//redo file //redo file
Debug.WriteLine("--Structure not intact--");
Debug.WriteLine("--redoing file--");
File.Delete($"U:\\PolyChat\\Saves\\{ip}.txt"); File.Delete($"U:\\PolyChat\\Saves\\{ip}.txt");
File.WriteAllText($"U:\\PolyChat\\Saves\\{ip}.txt", encrypt($"[ {json} ]")); File.WriteAllText($"U:\\PolyChat\\Saves\\{ip}.txt", encrypt($"[ {json} ]")); //encrypt and write to file
} }
} }
else else
{ {
Debug.WriteLine("--Creating new File--");
//setup file //setup file
Debug.WriteLine("--Creating new File--");
File.WriteAllText($"U:\\PolyChat\\Saves\\{ip}.txt", encrypt($"[ {json} ]")); File.WriteAllText($"U:\\PolyChat\\Saves\\{ip}.txt", encrypt($"[ {json} ]"));
} }
} }
@@ -160,28 +163,35 @@ namespace PolyChat.Models
} }
//--------------------------------------------------------------------------------------------------- //===============================================================================================================================================
//security // Encryption
//--------------------------------------------------------------------------------------------------- //===============================================================================================================================================
private void genKeys()
{
/// <summary>
/// generates keypair [public, privte] (100% secure, trust me)
/// </summary>
/// <returns></returns>
private String[] genKeys()
{
return new String[] {"sehrSichererKey", "nochVielSichererKey"};
} }
/// <summary> /// <summary>
/// does exactly what it says. XD /// does exactly what it says. XD
///
/// encrypts given string and returns unreadable string
/// </summary> /// </summary>
/// <param name="toEncrypt"></param> /// <param name="toEncrypt"></param>
/// <returns></returns> /// <returns></returns>
public static String encrypt(String toEncrypt) private String encrypt(String toEncrypt)
{ {
try try
{ {
string textToEncrypt = toEncrypt; string textToEncrypt = toEncrypt;
string ToReturn = ""; string ToReturn = "";
string publickey = "santhosh"; string publickey = genKeys()[0];
string secretkey = "engineer"; string secretkey = genKeys()[1];
byte[] secretkeyByte = { }; byte[] secretkeyByte = { };
secretkeyByte = System.Text.Encoding.UTF8.GetBytes(secretkey); secretkeyByte = System.Text.Encoding.UTF8.GetBytes(secretkey);
byte[] publickeybyte = { }; byte[] publickeybyte = { };
@@ -203,22 +213,23 @@ namespace PolyChat.Models
{ {
throw new Exception(ex.Message, ex.InnerException); throw new Exception(ex.Message, ex.InnerException);
} }
} }
/// <summary> /// <summary>
/// does exactly what it says. XD /// does exactly what it says. XD
///
/// takes in unreadable string and returns infirmation
/// </summary> /// </summary>
/// <param name="toEncrypt"></param> /// <param name="toEncrypt"></param>
/// <returns></returns> /// <returns></returns>
public static String decrypt(String toDecrypt) private String decrypt(String toDecrypt)
{ {
try try
{ {
string textToDecrypt = toDecrypt; string textToDecrypt = toDecrypt;
string ToReturn = ""; string ToReturn = "";
string publickey = "santhosh"; string publickey = genKeys()[0];
string privatekey = "engineer"; string privatekey = genKeys()[1];
byte[] privatekeyByte = { }; byte[] privatekeyByte = { };
privatekeyByte = System.Text.Encoding.UTF8.GetBytes(privatekey); privatekeyByte = System.Text.Encoding.UTF8.GetBytes(privatekey);
byte[] publickeybyte = { }; byte[] publickeybyte = { };
@@ -244,10 +255,4 @@ namespace PolyChat.Models
} }
} }
} }
} }

View File

@@ -34,6 +34,7 @@ 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;
RequestedTheme = MainPage.GetTheme();
} }
private void setType(string type, string message) private void setType(string type, string message)

View File

@@ -22,6 +22,7 @@ namespace PolyChat.Views
if (initialValue == null || initialValue.Length == 0) IsSecondaryButtonEnabled = false; if (initialValue == null || initialValue.Length == 0) IsSecondaryButtonEnabled = false;
else input.Text = initialValue; else input.Text = initialValue;
validate(); validate();
RequestedTheme = MainPage.GetTheme();
} }
public string getValue() public string getValue()

View File

@@ -20,6 +20,7 @@ namespace PolyChat.Views
{ {
this.InitializeComponent(); this.InitializeComponent();
IsPrimaryButtonEnabled = false; IsPrimaryButtonEnabled = false;
RequestedTheme = MainPage.GetTheme();
} }
public string getValue() public string getValue()