kahuna/public/js/upload/controller.js (59 lines of code) (raw):

import angular from 'angular'; import './controller.css'; import './prompt/prompt'; import './recent/recent-uploads'; import '../services/scroll-position'; var upload = angular.module('kahuna.upload.controller', [ 'kahuna.upload.prompt', 'kahuna.upload.recent', 'kahuna.services.scroll-position', 'util.storage' ]); upload.controller('UploadCtrl', ['uploadManager', 'mediaApi', 'scrollPosition', '$scope', 'storage', function (uploadManager, mediaApi, scrollPosition, $scope, storage) { var ctrl = this; const isOngoingUploadJobs = () => { const flattenUploadsArray = [].concat.apply([], Array.from(uploadManager.getCompletedJobs())); const isOngoingUploads = flattenUploadsArray.some(jobItem => jobItem.status !== "uploaded"); return isOngoingUploads; }; $scope.$on("$locationChangeStart", function(event, _, current) { // handle route changes if (current.indexOf("/upload") > -1) { ctrl.displayWarning(event); } }); window.onbeforeunload = function () { if (uploadManager.getJobs().size > 0 || isOngoingUploadJobs()) { return ""; } }; ctrl.supportEmailLink = window._clientConfig.supportEmail; ctrl.systemName = window._clientConfig.systemName; mediaApi.canUserUpload().then(canUpload => { ctrl.canUpload = canUpload; }); // TODO: Show multiple jobs? ctrl.latestJob = uploadManager.getLatestRunningJob(); ctrl.displayWarning = (e) => { if (uploadManager.getJobs().size > 0 || isOngoingUploadJobs()) { if (confirm("You have uploads in progress. Are you sure you want to leave this page?") === false) { e.preventDefault(); } return ""; } }; ctrl.onLogoClick = () => { mediaApi.getSession().then(session => { const showPaid = session.user.permissions.showPaid ? session.user.permissions.showPaid : undefined; const defaultNonFreeFilter = { isDefault: true, isNonFree: showPaid ? showPaid : false }; storage.setJs("defaultNonFreeFilter", defaultNonFreeFilter, true); window.dispatchEvent(new CustomEvent("logoClick", { detail: {showPaid: defaultNonFreeFilter.isNonFree}, bubbles: true })); scrollPosition.resetToTop(); }); }; }]);