diff --git a/AMessanger/AMessanger.csproj b/AMessanger/AMessanger.csproj index b8df6dd..aadd243 100644 --- a/AMessanger/AMessanger.csproj +++ b/AMessanger/AMessanger.csproj @@ -7,7 +7,6 @@ - PreserveNewest diff --git a/AMessanger/Models/Message.cs b/AMessanger/Models/Message.cs new file mode 100644 index 0000000..d154793 --- /dev/null +++ b/AMessanger/Models/Message.cs @@ -0,0 +1,8 @@ +namespace AMessanger.Models +{ + public class Message(string userName, string content) + { + public string UserName { get; set; } = userName; + public string Content { get; set; } = content; + } +} diff --git a/AMessanger/Services/ChatService.cs b/AMessanger/Services/ChatService.cs index 91b5f61..e8fcc39 100644 --- a/AMessanger/Services/ChatService.cs +++ b/AMessanger/Services/ChatService.cs @@ -1,6 +1,7 @@ using System; using System.Threading; using System.Threading.Tasks; +using AMessanger.Models; using Microsoft.AspNetCore.SignalR.Client; namespace AMessanger.Services; @@ -9,7 +10,7 @@ public class ChatService { private readonly HubConnection _connection; - public event Action? OnMessageRecieved; + public event Action? OnMessageRecieved; public bool IsConnected { get; private set; } = false; @@ -20,8 +21,8 @@ public class ChatService .WithAutomaticReconnect() .Build(); - _connection.On("ReceiveMessage", (user, message) => - OnMessageRecieved?.Invoke(user, message)); + _connection.On("ReceiveMessage", m => + OnMessageRecieved?.Invoke(m)); } public Task ConnectAsync(CancellationToken cancellationToken = default) @@ -42,8 +43,8 @@ public class ChatService return _connection.StopAsync(cancellationToken); } - public Task SendMessageAsync(string user, string message, CancellationToken cancellationToken = default) + public Task SendMessageAsync(Message message, CancellationToken cancellationToken = default) { - return _connection.InvokeAsync("SendMessage", user, message, cancellationToken); + return _connection.InvokeAsync("SendMessage", message, cancellationToken); } } \ No newline at end of file diff --git a/AMessanger/ViewModels/MainViewModel.cs b/AMessanger/ViewModels/MainViewModel.cs index 1f698ce..d60e7f2 100644 --- a/AMessanger/ViewModels/MainViewModel.cs +++ b/AMessanger/ViewModels/MainViewModel.cs @@ -1,17 +1,17 @@ -using System.Collections.ObjectModel; +using AMessanger.Models; using AMessanger.Services; -using CommunityToolkit.Mvvm.ComponentModel; using Avalonia.Threading; -using System.Windows.Input; +using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; -using System.Diagnostics; +using System.Collections.ObjectModel; +using System.Windows.Input; namespace AMessanger.ViewModels; public partial class MainViewModel : ViewModelBase { [ObservableProperty] - public partial ObservableCollection Messages { get; private set; } = new(); + public partial ObservableCollection Messages { get; private set; } = new(); [ObservableProperty] public partial string Message { get; set; } = string.Empty; @@ -31,10 +31,9 @@ public partial class MainViewModel : ViewModelBase SendButtonCommand = new RelayCommand(SendMessage); } - private void OnMessageRecived(string user, string message) + private void OnMessageRecived(Message message) { - Dispatcher.UIThread.Post(() => Messages.Add($"{user}: {message}")); - Debug.WriteLine($"{user}: {message}"); + Dispatcher.UIThread.Post(() => Messages.Add(message)); } private void SendMessage() @@ -42,7 +41,7 @@ public partial class MainViewModel : ViewModelBase if (string.IsNullOrWhiteSpace(Message)) return; - _chat.SendMessageAsync(UserName, Message.Trim()); + _chat.SendMessageAsync(new Message(UserName, Message.Trim())); Message = string.Empty; } } diff --git a/AMessanger/Views/MainWindow.axaml b/AMessanger/Views/MainWindow.axaml index 5570552..12bd49e 100644 --- a/AMessanger/Views/MainWindow.axaml +++ b/AMessanger/Views/MainWindow.axaml @@ -21,8 +21,16 @@ - + + + + + + + + + +