Catch exception when trying to share (#1203)

* Fix crash

* Fix errors
This commit is contained in:
Pepe Rivera 2020-05-05 09:36:09 -07:00 committed by GitHub
parent f9a1ae1a28
commit 9817738307
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 12 deletions

View File

@ -211,11 +211,11 @@ wstringstream GraphingCalculator::FormatTraceValue(double min, double max, float
{
wstringstream traceValueString;
// Extract precision we will round to
// Extract precision we will round to
auto precision = static_cast<int>(floor(log10(max - min)) - 3);
// Determine if we want to show scientific notation instead
if (precision <= -7 || precision >= 7)
if (precision <= -7 || precision >= 7)
{
traceValueString << scientific;
}
@ -282,11 +282,26 @@ void GraphingCalculator::ViewModel::set(GraphingCalculatorViewModel ^ vm)
}
}
void CalculatorApp::GraphingCalculator::OnShareClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e)
void GraphingCalculator::OnShareClick(Object ^ sender, RoutedEventArgs ^ e)
{
// Ask the OS to start a share action.
DataTransferManager::ShowShareUI();
TraceLogger::GetInstance()->LogGraphButtonClicked(GraphButton::Share, GraphButtonValue::None);
try
{
DataTransferManager::ShowShareUI();
TraceLogger::GetInstance()->LogGraphButtonClicked(GraphButton::Share, GraphButtonValue::None);
}
catch (COMException ^ ex)
{
if (ex->HResult == RPC_E_SERVERCALL_RETRYLATER)
{
ShowShareError();
TraceLogger::GetInstance()->LogPlatformException(ViewMode::Graphing, __FUNCTIONW__, ex);
}
else
{
throw;
}
}
}
// When share is invoked (by the user or programmatically) the event handler we registered will be called to populate the data package with the
@ -394,17 +409,21 @@ void GraphingCalculator::OnDataRequested(DataTransferManager ^ sender, DataReque
}
catch (Exception ^ ex)
{
ShowShareError();
TraceLogger::GetInstance()->LogPlatformException(ViewMode::Graphing, __FUNCTIONW__, ex);
// Something went wrong, notify the user.
auto errDialog = ref new ContentDialog();
errDialog->Content = resourceLoader->GetString(L"ShareActionErrorMessage");
errDialog->CloseButtonText = resourceLoader->GetString(L"ShareActionErrorOk");
errDialog->ShowAsync();
}
}
void GraphingCalculator::ShowShareError()
{
// Something went wrong, notify the user.
auto resourceLoader = ResourceLoader::GetForCurrentView();
auto errDialog = ref new ContentDialog();
errDialog->Content = resourceLoader->GetString(L"ShareActionErrorMessage");
errDialog->CloseButtonText = resourceLoader->GetString(L"ShareActionErrorOk");
errDialog->ShowAsync();
}
void GraphingCalculator::GraphingControl_VariablesUpdated(Object ^, Object ^)
{
m_viewModel->UpdateVariables(GraphingControl->Variables);

View File

@ -106,6 +106,7 @@ public ref class GraphingCalculator sealed : public Windows::UI::Xaml::Data::INo
void OnVisualStateChanged(Platform::Object ^ sender, Windows::UI::Xaml::VisualStateChangedEventArgs ^ e);
std::wstringstream FormatTraceValue(double min, double max, float pointValue);
void GraphViewButton_Click(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
void ShowShareError();
};
}