/// <summary> /// Loads the image /// </summary> public async Task LoadImage() { try { var fileStream = await SourceFile.OpenAsync(FileAccessMode.Read); if (Rotation != BitmapRotation.None) { var rotatedStream = await BitmapTools.Rotate(fileStream, Rotation); await _cropControl.LoadImage(rotatedStream); } else { await _cropControl.LoadImage(fileStream); } } catch (Exception exception) { _telemetryClient.TrackException(exception); await _dialogService.ShowNotification("InvalidImage_Message", "InvalidImage_Title"); _navigationFacade.GoBack(); } }
/// <summary> /// Loads the state. /// </summary> /// <param name="args">The view model arguments.</param> public async Task LoadState(UploadViewModelArgs args) { await base.LoadState(); _editingMode = EditingMode.New; Category = args.Category?.ToCategory(); try { // The user needs to be signed-in await _authEnforcementHandler.CheckUserAuthentication(); // When navigating directly from the main window, the user has not // selected a category yet, so we need to do this now. if (Category == null) { Category = await _navigationFacade.ShowCategoryChooserDialog(); } // Here is some synchronization issue going on, // when we first set the Photo which propagates to the UI // via data binding, and immediately open a ContentDialog via ShowCategoryChooserDialog. // We would get random component initialization exceptions from XAML // without any further details. This however is only noticeable when // the app is launched as share target. // As a solution, we assign the selected photo after the chooser dialog // has been awaited. WriteableBitmap = args.Image; } catch (SignInRequiredException) { await _dialogService.ShowNotification("AuthenticationRequired_Message", "AuthenticationRequired_Title"); _navigationFacade.GoBack(); } }