Files
Phonebook/MainPage.xaml.cs
2026-04-09 13:10:02 +03:00

61 lines
1.7 KiB
C#

using Phonebook.Services;
using Contact = Phonebook.Models.Contact;
using Communication = Microsoft.Maui.ApplicationModel.Communication;
using Android.Content;
namespace Phonebook;
public partial class MainPage : ContentPage
{
private ContactService _contactService;
private DatabaseService _databaseService;
public MainPage()
{
InitializeComponent();
_contactService = IPlatformApplication.Current!.Services.GetService<ContactService>()!;
_databaseService = IPlatformApplication.Current!.Services.GetService<DatabaseService>()!;
}
private async void OnContactsUpdated()
{
await UpdateList();
}
protected override async void OnAppearing()
{
base.OnAppearing();
await UpdateList();
_contactService.OnContactsUpdated += OnContactsUpdated;
}
protected override void OnDisappearing()
{
base.OnDisappearing();
_contactService.OnContactsUpdated -= OnContactsUpdated;
}
private async void OnContactSelected(object sender, SelectionChangedEventArgs e)
{
if (e.CurrentSelection.FirstOrDefault() is not Contact selectedContact)
return;
await Navigation.PushAsync(new ContactDetailPage(selectedContact));
contactsList.SelectedItem = null;
}
private async void OnSearchTextChanged(object sender, TextChangedEventArgs e)
{
await UpdateList();
}
private async Task UpdateList()
{
contactsList.ItemsSource = await _databaseService.SearchContactsAsync(searchBar.Text);
}
private async void OnAddContactClicked(object sender, EventArgs e)
{
await Navigation.PushAsync(new ContactDetailPage(new Contact()));
}
}