private async void SetupContext(JiraTimer timerToShow, TimeSpan?exportTime, bool skipJiraCheck) { await Task.Delay(50); modelHelpers.HideFlyout(this); if (timerToShow.TempTimer) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Temp Timer", "You Cannot Export A Temporary Timer!"); modelHelpers.CloseHiddenFlyout(this); return; } DataContext = new ExportModel(timerToShow, exportTime, modelHelpers.Gallifrey.Settings.ExportSettings); if (!skipJiraCheck) { Issue jiraIssue = null; var requireRefresh = !timerToShow.LastJiraTimeCheck.HasValue || timerToShow.LastJiraTimeCheck < DateTime.UtcNow.AddMinutes(-15); var showError = false; try { var jiraDownloadResult = await progressDialogHelper.Do(() => modelHelpers.Gallifrey.JiraConnection.GetJiraIssue(timerToShow.JiraReference, requireRefresh), "Downloading Jira Work Logs To Ensure Accurate Export", true, false); switch (jiraDownloadResult.Status) { case ProgressResult.JiraHelperStatus.Cancelled: modelHelpers.CloseHiddenFlyout(this); return; case ProgressResult.JiraHelperStatus.Errored: showError = true; break; case ProgressResult.JiraHelperStatus.Success: jiraIssue = jiraDownloadResult.RetVal; break; } } catch (Exception) { showError = true; } if (showError) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Unable To Locate Jira", $"Unable To Locate Jira {timerToShow.JiraReference}!\nCannot Export Time\nPlease Verify/Correct Jira Reference"); modelHelpers.CloseHiddenFlyout(this); return; } if (requireRefresh) { modelHelpers.Gallifrey.JiraTimerCollection.RefreshFromJira(timerToShow.UniqueId, jiraIssue, modelHelpers.Gallifrey.JiraConnection.CurrentUser); timerToShow = modelHelpers.Gallifrey.JiraTimerCollection.GetTimer(timerToShow.UniqueId); } DataModel.UpdateTimer(timerToShow, jiraIssue); } if (timerToShow.FullyExported) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Nothing To Export", "There Is No Time To Export"); modelHelpers.CloseHiddenFlyout(this); return; } if (timerToShow.IsRunning) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Timer Is Running", "You Cannot Export A Timer While It Is Running"); modelHelpers.CloseHiddenFlyout(this); return; } await modelHelpers.OpenFlyout(this); }