From 40b99e7bbfbfd175a39c5714a861c32eb1f70ad3 Mon Sep 17 00:00:00 2001 From: yflory Date: Mon, 22 May 2017 15:30:59 +0200 Subject: [PATCH] Get the file name before downloading the entire file --- www/file/file.css | 1 + www/file/file.less | 1 + www/file/inner.html | 2 +- www/file/main.js | 83 +++++++++++++++++++++++++-------------------- 4 files changed, 50 insertions(+), 37 deletions(-) diff --git a/www/file/file.css b/www/file/file.css index d4248fa80..f1e78d72a 100644 --- a/www/file/file.css +++ b/www/file/file.css @@ -1,6 +1,7 @@ html, body { margin: 0px; + height: 100%; } .cryptpad-toolbar { margin-bottom: 1px; diff --git a/www/file/file.less b/www/file/file.less index ebf800584..04407f8e5 100644 --- a/www/file/file.less +++ b/www/file/file.less @@ -5,6 +5,7 @@ html, body { margin: 0px; + height: 100%; } .cryptpad-toolbar { margin-bottom: 1px; diff --git a/www/file/inner.html b/www/file/inner.html index c56aa80bf..f5946c099 100644 --- a/www/file/inner.html +++ b/www/file/inner.html @@ -19,7 +19,7 @@ -   + diff --git a/www/file/main.js b/www/file/main.js index 0e8a39294..ff0d52ec4 100644 --- a/www/file/main.js +++ b/www/file/main.js @@ -26,6 +26,9 @@ define([ var $table = $iframe.find('#status'); var $progress = $iframe.find('#progress'); + $iframe.find('body').on('dragover', function (e) { e.preventDefault(); }); + $iframe.find('body').on('drop', function (e) { e.preventDefault(); }); + Cryptpad.addLoadingScreen(); var Title; @@ -211,13 +214,10 @@ define([ }; var exportFile = function () { - var suggestion = document.title; - Cryptpad.prompt(Messages.exportPrompt, - Cryptpad.fixFileName(suggestion), function (filename) { - if (!(typeof(filename) === 'string' && filename)) { return; } - var blob = new Blob([myFile], {type: myDataType}); - saveAs(blob, filename); - }); + var filename = Cryptpad.fixFileName(document.title); + if (!(typeof(filename) === 'string' && filename)) { return; } + var blob = new Blob([myFile], {type: myDataType}); + saveAs(blob, filename); }; Title = Cryptpad.createTitle({}, function(){}, Cryptpad); @@ -250,40 +250,50 @@ define([ if (!uploadMode) { $dlform.show(); - Cryptpad.removeLoadingScreen(); - $dlform.find('#dl').click(function () { - if (myFile) { return void exportFile(); } + var src = Cryptpad.getBlobPathFromHex(hexFileName); + var cryptKey = secret.keys && secret.keys.fileKeyStr; + var key = Nacl.util.decodeBase64(cryptKey); - var src = Cryptpad.getBlobPathFromHex(hexFileName); - var cryptKey = secret.keys && secret.keys.fileKeyStr; - var key = Nacl.util.decodeBase64(cryptKey); + FileCrypto.fetchDecryptedMetadata(src, key, function (e, metadata) { + if (e) { return void console.error(e); } + var title = document.title = metadata.name; + Title.updateTitle(title || Title.defaultTitle); -/* return FileCrypto.fetchDecryptedMetadata(src, key, function (e, metadata) { - if (e) { return console.error(e); } - console.log(metadata); - });*/ - return Cryptpad.fetch(src, function (e, u8) { - if (e) { return void Cryptpad.alert(e); } - - // now decrypt the u8 - if (!u8 || !u8.length) { - return void Cryptpad.errorLoadingScreen(e); - } + Cryptpad.removeLoadingScreen(); + var decrypting = false; + $dlform.find('#dl, #progress').click(function () { + if (decrypting) { return; } + if (myFile) { return void exportFile(); } + decrypting = true; - FileCrypto.decrypt(u8, key, function (e, data) { + return Cryptpad.fetch(src, function (e, u8) { if (e) { - return console.error(e); + decrypting = false; + return void Cryptpad.alert(e); + } + + // now decrypt the u8 + if (!u8 || !u8.length) { + return void Cryptpad.errorLoadingScreen(e); } - console.log(data); - var title = document.title = data.metadata.name; - myFile = data.content; - myDataType = data.metadata.type; - Title.updateTitle(title || Title.defaultTitle); - exportFile(); - }, function (progress) { - var p = progress * 100 +'%'; - $progress.width(p); - console.error(progress); + + FileCrypto.decrypt(u8, key, function (e, data) { + if (e) { + decrypting = false; + return console.error(e); + } + console.log(data); + var title = document.title = data.metadata.name; + myFile = data.content; + myDataType = data.metadata.type; + Title.updateTitle(title || Title.defaultTitle); + exportFile(); + decrypting = false; + }, function (progress) { + var p = progress * 100 +'%'; + $progress.width(p); + console.error(progress); + }); }); }); }); @@ -341,6 +351,7 @@ define([ e.stopPropagation(); }) .on('drop', function (e) { + e.stopPropagation(); var dropped = e.originalEvent.dataTransfer.files; counter = 0; $label.removeClass('hovering');