#pragma once #include #include "MainPage.g.h" #include #include #include "CredentialListViewModel.h" #include #include "Converter/BitwiseFlagToVisibilityConverter.h" #include namespace winrt { using namespace Windows::Foundation; using namespace Windows::Foundation::Collections; using namespace Windows::Storage::Streams; } namespace winrt::PasskeyManager::implementation { struct MainPage : MainPageT { MainPage(); PasskeyManager::CredentialListViewModel CredentialList() { return m_credentialListViewModel; } winrt::IAsyncAction refreshButton_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); winrt::IAsyncAction registerPluginButton_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); winrt::IAsyncAction unregisterPluginButton_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); winrt::IAsyncAction addAllPluginCredentials_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); winrt::IAsyncAction addSelectedCredentials_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& e); winrt::IAsyncAction deleteAllPluginCredentials_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); winrt::IAsyncAction deleteSelectedPluginCredentials_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); winrt::IAsyncAction deleteSelectedPluginCredentialsEverywhere_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); winrt::IAsyncAction clearLogsButton_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); winrt::IAsyncAction deleteAllLocalCredentials_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); winrt::IAsyncAction deleteAllCredentials_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); winrt::fire_and_forget UpdateCredentialList(); winrt::IAsyncAction OnNavigatedTo(Microsoft::UI::Xaml::Navigation::NavigationEventArgs); void UpdatePasskeyOperationStatusText(hstring const& statusText) { textContent().Inlines().InsertAt(0, Microsoft::UI::Xaml::Documents::LineBreak{}); Microsoft::UI::Xaml::Documents::Run statusTextBlock; statusTextBlock.Text(statusText); textContent().Inlines().InsertAt(0, statusTextBlock); } void LogSuccess(const winrt::hstring& input) { UpdatePasskeyOperationStatusText(winrt::hstring{ L"SUCCESS: " + input + L"\U00002705"}); } void LogFailure(const winrt::hstring& input, HRESULT hr) { std::wstring result = L"FAILED: " + std::wstring(input.c_str()) + L": " + winrt::to_hstring(static_cast(hr)).c_str() + L"\U0000274C"; UpdatePasskeyOperationStatusText(winrt::hstring{ result }); } void LogInProgress(const winrt::hstring& input) { UpdatePasskeyOperationStatusText(winrt::hstring{ input + L"\U000023F3"}); } void LogWarning(const winrt::hstring& input, HRESULT hr) { std::wstring result = L"WARNING: " + std::wstring(input.c_str()) + L": " + winrt::to_hstring(static_cast(hr)).c_str() + L"\U000026A0"; UpdatePasskeyOperationStatusText(winrt::hstring{ result }); } void UpdatePluginStateTextBlock(EXPERIMENTAL_PLUGIN_AUTHENTICATOR_STATE state); winrt::IAsyncAction SelectionChanged(IInspectable const& sender, Microsoft::UI::Xaml::Controls::SelectionChangedEventArgs const&); winrt::fire_and_forget UpdatePluginEnableState(); winrt::IAsyncAction vaultLockSwitch_Toggled(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& e); winrt::IAsyncAction silentOperationSwitch_Toggled(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& e); private: PasskeyManager::CredentialListViewModel m_credentialListViewModel{ nullptr }; winrt::IMap m_selectedCredentialsSet = winrt::single_threaded_map(); wil::unique_registry_watcher m_registryWatcher; wil::unique_folder_change_reader_nothrow m_mockCredentialsDBWatcher; }; } namespace winrt::PasskeyManager::factory_implementation { struct MainPage : MainPageT { }; }