diff --git a/www/common/make-backup.js b/www/common/make-backup.js index 7394be98a..fd9330178 100644 --- a/www/common/make-backup.js +++ b/www/common/make-backup.js @@ -10,12 +10,13 @@ define([ '/common/common-interface.js', '/common/hyperscript.js', '/common/common-feedback.js', + '/common/userObject.js', '/common/inner/cache.js', '/customize/messages.js', '/components/nthen/index.js', '/components/saferphore/index.js', '/components/jszip/dist/jszip.min.js', -], function ($, FileCrypto, Hash, Util, UI, h, Feedback, +], function ($, FileCrypto, Hash, Util, UI, h, Feedback, UO, Cache, Messages, nThen, Saferphore, JsZip) { var saveAs = window.saveAs; @@ -170,7 +171,7 @@ define([ }); } - var href = (fData.href && fData.href.indexOf('#') !== -1) ? fData.href : fData.roHref; + let href = UO.getHref(fData, ctx.currentCryptor); var parsed = Hash.parsePadUrl(href); if (['pad', 'file'].indexOf(parsed.hashData.type) === -1) { return; } @@ -294,9 +295,17 @@ define([ if (typeof el === "object" && el.metadata !== true) { // if folder var fName = getUnique(sanitize(k), '', existingNames); existingNames.push(fName.toLowerCase()); + ctx.currentCryptor = undefined; return void makeFolder(ctx, el, zip.folder(fName), fd); } if (ctx.data.sharedFolders[el]) { // if shared folder + let obj = ctx.data.sharedFolders[el]; + let parsed = Hash.parsePadUrl(obj.href || obj.roHref); + var secret = Hash.getSecrets('drive', parsed.hash, obj.password); + let cryptor = secret.keys?.secondaryKey ? UO.createCryptor(secret.keys?.secondaryKey) + : undefined; + ctx.currentCryptor = cryptor; + var sfData = ctx.sf[el].metadata; var sfName = getUnique(sanitize((sfData && sfData.title) || 'Folder'), '', existingNames); existingNames.push(sfName.toLowerCase()); diff --git a/www/common/userObject.js b/www/common/userObject.js index aeb446487..c83cbbaa6 100644 --- a/www/common/userObject.js +++ b/www/common/userObject.js @@ -72,7 +72,7 @@ define([ // Href exists and is not encrypted: return href return pad.href; } - if (pad.href) { + if (pad.href && cryptor) { // Href exists and is encrypted var d = cryptor.decrypt(pad.href); // If we can decrypt, return the decrypted value, otherwise continue and return roHref