From 20cecbcfa2dae26bf4de8ed5ecf079b621ac149e Mon Sep 17 00:00:00 2001 From: yflory Date: Tue, 1 Dec 2020 18:18:16 +0100 Subject: [PATCH] Fix cached mediatags in pads --- www/common/media-tag.js | 2 +- www/common/outer/cache-store.js | 2 ++ www/pad/inner.js | 11 ++++++++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/www/common/media-tag.js b/www/common/media-tag.js index c855df328..8f7276446 100644 --- a/www/common/media-tag.js +++ b/www/common/media-tag.js @@ -188,7 +188,7 @@ var factory = function () { cfg.download.textDl + ' (' + size + 'MB)'; btn.addEventListener('click', function () { makeProgressBar(cfg, mediaObject); - var a = document.querySelectorAll('media-tag[src="'+mediaObject.tag.getAttribute('src')+'"] button[data-dl]'); + var a = (cfg.body || document).querySelectorAll('media-tag[src="'+mediaObject.tag.getAttribute('src')+'"] button[data-dl]'); for(var i = 0; i < a.length; i++) { if (a[i] !== btn) { a[i].click(); } } diff --git a/www/common/outer/cache-store.js b/www/common/outer/cache-store.js index 6b6c8604e..cd88de6f6 100644 --- a/www/common/outer/cache-store.js +++ b/www/common/outer/cache-store.js @@ -87,5 +87,7 @@ define([ cache.clear(cb); }; + self.CryptPad_clearIndexedDB = S.clear; + return S; }); diff --git a/www/pad/inner.js b/www/pad/inner.js index 8a99b6101..f9b5dffb9 100644 --- a/www/pad/inner.js +++ b/www/pad/inner.js @@ -463,7 +463,9 @@ define([ setTimeout(function() { // Just in case var tags = dom.querySelectorAll('media-tag:empty'); Array.prototype.slice.call(tags).forEach(function(el) { - var mediaObject = MediaTag(el); + var mediaObject = MediaTag(el, { + body: dom + }); $(el).on('keydown', function(e) { if ([8, 46].indexOf(e.which) !== -1) { $(el).remove(); @@ -473,14 +475,17 @@ define([ var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.type === 'childList') { - var list_values = [].slice.call(el.children); - mediaTagMap[el.getAttribute('src')] = list_values; + var list_values = slice(el.children) + .map(function (el) { return el.outerHTML; }) + .join(''); + mediaMap[el.getAttribute('src')] = list_values; if (mediaObject.complete) { observer.disconnect(); } } }); }); observer.observe(el, { attributes: false, + subtree: true, childList: true, characterData: false });