X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/59100a72caedbc8f3c9872de1153bf3d4129122a..394ebdfd13fe40a7096f484c46a353d2537f4c9a:/src/common/xml.ts diff --git a/src/common/xml.ts b/src/common/xml.ts index 098f2781..e7db3aca 100644 --- a/src/common/xml.ts +++ b/src/common/xml.ts @@ -2,7 +2,28 @@ // // SPDX-License-Identifier: AGPL-3.0 -export const getTagValue = (document: Document | Element, tagName: string, defaultValue: string) => { +import { customDecodeURI } from "./url"; + +export const getTagValue = (document: Document | Element, tagName: string, defaultValue: string, skipDecoding: boolean = false) => { const [el] = Array.from(document.getElementsByTagName(tagName)); - return decodeURI(el ? el.innerHTML : defaultValue); + const URI = el ? htmlDecode(el.innerHTML) : defaultValue; + + if (!skipDecoding) { + try { + return customDecodeURI(URI); + } catch(e) {} + } + + return URI; +}; + +const htmlDecode = (input: string) => { + const out = input.split(' ').map((i) => { + const doc = new DOMParser().parseFromString(i, "text/html"); + if (doc.documentElement !== null) { + return doc.documentElement.textContent || ''; + } + return ''; + }); + return out.join(' '); };