diff --git a/Wino.Mail.WinUI/Selectors/NavigationMenuTemplateSelector.cs b/Wino.Mail.WinUI/Selectors/NavigationMenuTemplateSelector.cs
index 3542317a..339fd155 100644
--- a/Wino.Mail.WinUI/Selectors/NavigationMenuTemplateSelector.cs
+++ b/Wino.Mail.WinUI/Selectors/NavigationMenuTemplateSelector.cs
@@ -24,7 +24,6 @@ public partial class NavigationMenuTemplateSelector : DataTemplateSelector
public DataTemplate CreateNewFolderTemplate { get; set; } = null!;
public DataTemplate SeperatorTemplate { get; set; } = null!;
public DataTemplate NewMailTemplate { get; set; } = null!;
- public DataTemplate NewContactTemplate { get; set; } = null!;
public DataTemplate CalendarNewEventTemplate { get; set; } = null!;
public DataTemplate CategoryItemsTemplate { get; set; } = null!;
public DataTemplate FixAuthenticationIssueTemplate { get; set; } = null!;
@@ -34,8 +33,6 @@ public partial class NavigationMenuTemplateSelector : DataTemplateSelector
{
if (item is NewCalendarEventMenuItem)
return CalendarNewEventTemplate;
- else if (item is NewContactMenuItem)
- return NewContactTemplate;
else if (item is NewMailMenuItem)
return NewMailTemplate;
else if (item is ContactsMenuItem)
diff --git a/Wino.Mail.WinUI/ViewModels/ContactsShellClient.cs b/Wino.Mail.WinUI/ViewModels/ContactsShellClient.cs
index fe530331..6143d5c2 100644
--- a/Wino.Mail.WinUI/ViewModels/ContactsShellClient.cs
+++ b/Wino.Mail.WinUI/ViewModels/ContactsShellClient.cs
@@ -1,5 +1,4 @@
using System.Threading.Tasks;
-using CommunityToolkit.Mvvm.Messaging;
using Wino.Core.Domain;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
@@ -7,14 +6,11 @@ using Wino.Core.Domain.MenuItems;
using Wino.Core.Domain.Models;
using Wino.Core.Domain.Models.Navigation;
using Wino.Core.ViewModels;
-using Wino.Messaging.Client.Contacts;
namespace Wino.Mail.WinUI.ViewModels;
public sealed class ContactsShellClient(INavigationService navigationService) : CoreBaseViewModel, IShellClient
{
- private readonly NewContactMenuItem _newContactMenuItem = new();
-
public WinoApplicationMode Mode => WinoApplicationMode.Contacts;
public MenuItemCollection? MenuItems { get; private set; }
public object? SelectedMenuItem { get; set; }
@@ -24,22 +20,12 @@ public sealed class ContactsShellClient(INavigationService navigationService) :
{
base.OnDispatcherAssigned();
MenuItems ??= new MenuItemCollection(Dispatcher);
-
- if (MenuItems.Count == 0)
- {
- MenuItems.Add(_newContactMenuItem);
- }
}
public void Activate(ShellModeActivationContext activationContext)
{
OnNavigatedTo(NavigationMode.New, activationContext);
- if (MenuItems?.Count == 0)
- {
- MenuItems.Add(_newContactMenuItem);
- }
-
navigationService.Navigate(WinoPage.ContactsPage, null, NavigationReferenceFrame.InnerShellFrame);
}
@@ -51,22 +37,10 @@ public sealed class ContactsShellClient(INavigationService navigationService) :
public void PrepareForShellShutdown()
{
SelectedMenuItem = null;
- if (MenuItems != null)
- {
- MenuItems.Clear();
- MenuItems.Add(_newContactMenuItem);
- }
+ MenuItems?.Clear();
}
- public Task HandleNavigationItemInvokedAsync(IMenuItem? menuItem)
- {
- if (menuItem is NewContactMenuItem)
- {
- WeakReferenceMessenger.Default.Send(new NewContactRequested());
- }
-
- return Task.CompletedTask;
- }
+ public Task HandleNavigationItemInvokedAsync(IMenuItem? menuItem) => Task.CompletedTask;
public Task HandleNavigationSelectionChangedAsync(IMenuItem? menuItem) => Task.CompletedTask;
}
diff --git a/Wino.Mail.WinUI/Views/WinoAppShell.xaml b/Wino.Mail.WinUI/Views/WinoAppShell.xaml
index 80be8260..a6c759be 100644
--- a/Wino.Mail.WinUI/Views/WinoAppShell.xaml
+++ b/Wino.Mail.WinUI/Views/WinoAppShell.xaml
@@ -391,23 +391,6 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
ViewModel.CalendarClient.HandleNavigationItemInvokedAsync(new NewCalendarEventMenuItem());
+ private void NewContactNavigationItemTapped(object sender, TappedRoutedEventArgs e)
+ {
+ e.Handled = true;
+ InvokeNewContact();
+ }
+
+ private void NewContactNavigationItemKeyDown(object sender, KeyRoutedEventArgs e)
+ {
+ if (e.Key is not (VirtualKey.Enter or VirtualKey.Space))
+ return;
+
+ e.Handled = true;
+ InvokeNewContact();
+ }
+
+ private static void InvokeNewContact()
+ => WeakReferenceMessenger.Default.Send(new NewContactRequested());
+
private async void SynchronizeCalendarsNavigationItemTapped(object sender, TappedRoutedEventArgs e)
{
e.Handled = true;