From cd1c82956ee0601bb53ca98061e8343b6cb04827 Mon Sep 17 00:00:00 2001 From: Kushagra Gour Date: Sun, 29 Jul 2018 21:04:57 +0530 Subject: [PATCH] add correct files to zip and test zip download --- src/components/app.jsx | 19 +++++++++++++------ src/utils.js | 11 +++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/components/app.jsx b/src/components/app.jsx index 42d129e..a340bd4 100644 --- a/src/components/app.jsx +++ b/src/components/app.jsx @@ -18,7 +18,8 @@ import { saveAsHtml, handleDownloadsPermission, downloadFile, - getCompleteHtml + getCompleteHtml, + getFilenameFromUrl } from '../utils'; import { itemService } from '../itemService'; import '../db'; @@ -1054,7 +1055,7 @@ export default class App extends Component { .then(data => { return { code: data, - url: 'dsfds' + fileName: getFilenameFromUrl(lib) }; }) ); @@ -1080,17 +1081,17 @@ export default class App extends Component { zip.file('index.html', fileContent); for (let i = 3; i < result.length; i++) { const externalLib = result[i]; - zip.file(externalLib.name, externalLib.code); + zip.file(externalLib.fileName, externalLib.code); } - console.log('ORIGINAL', this.calculateTextSize(fileContent)); + // console.log('ORIGINAL', this.calculateTextSize(fileContent)); var promise = null; if (0 && JSZip.support.uint8array) { promise = zip.generateAsync({ type: 'uint8array' }); } else { promise = zip.generateAsync({ - type: 'string', + type: 'base64', compression: 'DEFLATE', compressionOptions: { level: 9 @@ -1100,10 +1101,14 @@ export default class App extends Component { promise.then(data => { const zipContent = data; - const size = this.calculateTextSize(data); + const size = this.calculateTextSize(atob(data)); this.setState({ codeSize: size }); + const a = document.createElement('a'); + a.setAttribute('download', this.state.currentItem.name); + a.href = 'data:application/zip;base64,' + data; + window.anchor = a; }); }); } @@ -1112,6 +1117,8 @@ export default class App extends Component { this.setState({ isJs13KModalOpen: true }); + document.body.appendChild(window.anchor); + window.anchor.click(); } blankTemplateSelectHandler() { this.createNewItem(); diff --git a/src/utils.js b/src/utils.js index fc4e67a..699ce29 100644 --- a/src/utils.js +++ b/src/utils.js @@ -445,6 +445,17 @@ export function handleDownloadsPermission() { return d.promise; } +/** + * Return the filename from a passed url. + * http://a.com/path/file.png -> file.png + */ +export function getFilenameFromUrl(url) { + if (!url) { + return ''; + } + return url.match(/\/([^/]*)$/)[1]; +} + if (window.IS_EXTENSION) { document.body.classList.add('is-extension'); } else {