diff options
Diffstat (limited to 'app/assets/javascripts/issue_show/utils/parse_data.js')
-rw-r--r-- | app/assets/javascripts/issue_show/utils/parse_data.js | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/app/assets/javascripts/issue_show/utils/parse_data.js b/app/assets/javascripts/issue_show/utils/parse_data.js index 8cd1c1b0e56..a62a5167961 100644 --- a/app/assets/javascripts/issue_show/utils/parse_data.js +++ b/app/assets/javascripts/issue_show/utils/parse_data.js @@ -1,10 +1,22 @@ import { sanitize } from 'dompurify'; +// We currently load + parse the data from the issue app and related merge request +let cachedParsedData; + export const parseIssuableData = () => { try { + if (cachedParsedData) return cachedParsedData; + const initialDataEl = document.getElementById('js-issuable-app-initial-data'); - return JSON.parse(sanitize(initialDataEl.textContent).replace(/"/g, '"')); + const parsedData = JSON.parse(initialDataEl.textContent.replace(/"/g, '"')); + + parsedData.initialTitleHtml = sanitize(parsedData.initialTitleHtml); + parsedData.initialDescriptionHtml = sanitize(parsedData.initialDescriptionHtml); + + cachedParsedData = parsedData; + + return parsedData; } catch (e) { console.error(e); // eslint-disable-line no-console |