mirror of
https://github.com/claunia/marechai.git
synced 2025-12-16 19:14:25 +00:00
77 lines
2.4 KiB
C#
77 lines
2.4 KiB
C#
|
|
#nullable enable
|
||
|
|
|
||
|
|
using System;
|
||
|
|
using Windows.System;
|
||
|
|
using Marechai.App.Presentation.Models;
|
||
|
|
using Marechai.App.Presentation.ViewModels;
|
||
|
|
using Microsoft.UI.Xaml;
|
||
|
|
using Microsoft.UI.Xaml.Controls;
|
||
|
|
using Microsoft.UI.Xaml.Navigation;
|
||
|
|
|
||
|
|
namespace Marechai.App.Presentation.Views;
|
||
|
|
|
||
|
|
public sealed partial class CompanyDetailPage : Page
|
||
|
|
{
|
||
|
|
private object? _navigationSource;
|
||
|
|
private int? _pendingCompanyId;
|
||
|
|
|
||
|
|
public CompanyDetailPage()
|
||
|
|
{
|
||
|
|
InitializeComponent();
|
||
|
|
DataContextChanged += CompanyDetailPage_DataContextChanged;
|
||
|
|
}
|
||
|
|
|
||
|
|
protected override void OnNavigatedTo(NavigationEventArgs e)
|
||
|
|
{
|
||
|
|
base.OnNavigatedTo(e);
|
||
|
|
|
||
|
|
int? companyId = null;
|
||
|
|
|
||
|
|
// Handle both int and CompanyDetailNavigationParameter
|
||
|
|
if(e.Parameter is int intId)
|
||
|
|
companyId = intId;
|
||
|
|
else if(e.Parameter is CompanyDetailNavigationParameter navParam)
|
||
|
|
{
|
||
|
|
companyId = navParam.CompanyId;
|
||
|
|
_navigationSource = navParam.NavigationSource;
|
||
|
|
}
|
||
|
|
|
||
|
|
if(companyId.HasValue)
|
||
|
|
{
|
||
|
|
_pendingCompanyId = companyId;
|
||
|
|
|
||
|
|
if(DataContext is CompanyDetailViewModel viewModel)
|
||
|
|
{
|
||
|
|
viewModel.CompanyId = companyId.Value;
|
||
|
|
_ = viewModel.LoadData.ExecuteAsync(null);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private void CompanyDetailPage_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
|
||
|
|
{
|
||
|
|
if(DataContext is CompanyDetailViewModel viewModel && _pendingCompanyId.HasValue)
|
||
|
|
{
|
||
|
|
viewModel.CompanyId = _pendingCompanyId.Value;
|
||
|
|
_ = viewModel.LoadData.ExecuteAsync(null);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private async void OnTwitterClick(object sender, RoutedEventArgs e)
|
||
|
|
{
|
||
|
|
if(DataContext is CompanyDetailViewModel viewModel && viewModel.Company?.Twitter is not null)
|
||
|
|
{
|
||
|
|
var uri = new Uri($"https://www.twitter.com/{viewModel.Company.Twitter}");
|
||
|
|
await Launcher.LaunchUriAsync(uri);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private async void OnFacebookClick(object sender, RoutedEventArgs e)
|
||
|
|
{
|
||
|
|
if(DataContext is CompanyDetailViewModel viewModel && viewModel.Company?.Facebook is not null)
|
||
|
|
{
|
||
|
|
var uri = new Uri($"https://www.facebook.com/{viewModel.Company.Facebook}");
|
||
|
|
await Launcher.LaunchUriAsync(uri);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|