capturePhoto: function()

in src/windows/CaptureProxy.js [232:294]


        capturePhoto: function (successCallback, errorCallback) {
            try {
                createCameraUI();
                startCameraPreview(
                    // Callback for Take button - captures intermediate image file.
                    function () {
                        const encodingProperties = Windows.Media.MediaProperties.ImageEncodingProperties.createJpeg();
                        const overwriteCollisionOption = Windows.Storage.CreationCollisionOption.replaceExisting;
                        const tempFolder = Windows.Storage.ApplicationData.current.temporaryFolder;

                        tempFolder.createFileAsync('cameraCaptureImage.jpg', overwriteCollisionOption).done(
                            function (capturedFile) {
                                capture.capturePhotoToStorageFileAsync(encodingProperties, capturedFile).done(
                                    function () {
                                        // store intermediate result in object's global variable
                                        capturedPictureFile = capturedFile;
                                        // show pre-captured image and toggle visibility of all buttons
                                        previewContainer.style.backgroundImage = 'url("' + 'ms-appdata:///temp/' + capturedFile.name + '")';
                                        toggleElements('capturePreview', 'takePicture', 'cancelCapture', 'selectPicture', 'retakePicture');
                                    },
                                    function (err) {
                                        destroyCameraPreview();
                                        errorCallback(CaptureError.CAPTURE_INTERNAL_ERR, err);
                                    }
                                );
                            },
                            function (err) {
                                destroyCameraPreview();
                                errorCallback(CaptureError.CAPTURE_INTERNAL_ERR, err);
                            }
                        );
                    },
                    // error + cancel callback
                    function (err) {
                        destroyCameraPreview();
                        errorCallback(err);
                    },
                    // Callback for Select button - copies intermediate file into persistent application's storage
                    function () {
                        const generateUniqueCollisionOption = Windows.Storage.CreationCollisionOption.generateUniqueName;
                        const localFolder = Windows.Storage.ApplicationData.current.localFolder;

                        capturedPictureFile.copyAsync(localFolder, capturedPictureFile.name, generateUniqueCollisionOption).done(
                            function (copiedFile) {
                                destroyCameraPreview();
                                successCallback(copiedFile);
                            },
                            function (err) {
                                destroyCameraPreview();
                                errorCallback(err);
                            }
                        );
                    },
                    // Callback for retake button - just toggles visibility of necessary elements
                    function () {
                        toggleElements('capturePreview', 'takePicture', 'cancelCapture', 'selectPicture', 'retakePicture');
                    }
                );
            } catch (ex) {
                destroyCameraPreview();
                errorCallback(CaptureError.CAPTURE_INTERNAL_ERR, ex);
            }
        }