From 2a47dfd8ba724b17f5bc5f9214bea8ce8b469398 Mon Sep 17 00:00:00 2001 From: ccd0 Date: Sun, 26 Feb 2023 21:20:17 -0800 Subject: [PATCH] Catch errors due to "Restricted" selection. #2905 --- src/Posting/QR.coffee | 55 ++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/src/Posting/QR.coffee b/src/Posting/QR.coffee index 083383d48..b2cd5c158 100644 --- a/src/Posting/QR.coffee +++ b/src/Posting/QR.coffee @@ -295,35 +295,36 @@ QR = postRange.selectNode root text = if post.board.ID is g.BOARD.ID then ">>#{post}\n" else ">>>/#{post.board}/#{post}\n" for i in [0...sel.rangeCount] - range = sel.getRangeAt i - # Trim range to be fully inside post - if range.compareBoundaryPoints(Range.START_TO_START, postRange) < 0 - range.setStartBefore root - if range.compareBoundaryPoints(Range.END_TO_END, postRange) > 0 - range.setEndAfter root + try + range = sel.getRangeAt i + # Trim range to be fully inside post + if range.compareBoundaryPoints(Range.START_TO_START, postRange) < 0 + range.setStartBefore root + if range.compareBoundaryPoints(Range.END_TO_END, postRange) > 0 + range.setEndAfter root - continue unless range.toString().trim() + continue unless range.toString().trim() - frag = range.cloneContents() - ancestor = range.commonAncestorContainer - # Quoting the insides of a spoiler/code tag. - if $.x 'ancestor-or-self::*[self::s or contains(@class,"removed-spoiler")]', ancestor - $.prepend frag, $.tn '[spoiler]' - $.add frag, $.tn '[/spoiler]' - if insideCode = $.x 'ancestor-or-self::pre[contains(@class,"prettyprint")]', ancestor - $.prepend frag, $.tn '[code]' - $.add frag, $.tn '[/code]' - for node in $$ (if insideCode then 'br' else '.prettyprint br'), frag - $.replace node, $.tn '\n' - for node in $$ 'br', frag - $.replace node, $.tn '\n>' unless node is frag.lastChild - g.SITE.insertTags?(frag) - for node in $$ '.linkify[data-original]', frag - $.replace node, $.tn node.dataset.original - for node in $$ '.embedder', frag - $.rm node.previousSibling if node.previousSibling?.nodeValue is ' ' - $.rm node - text += ">#{frag.textContent.trim()}\n" + frag = range.cloneContents() + ancestor = range.commonAncestorContainer + # Quoting the insides of a spoiler/code tag. + if $.x 'ancestor-or-self::*[self::s or contains(@class,"removed-spoiler")]', ancestor + $.prepend frag, $.tn '[spoiler]' + $.add frag, $.tn '[/spoiler]' + if insideCode = $.x 'ancestor-or-self::pre[contains(@class,"prettyprint")]', ancestor + $.prepend frag, $.tn '[code]' + $.add frag, $.tn '[/code]' + for node in $$ (if insideCode then 'br' else '.prettyprint br'), frag + $.replace node, $.tn '\n' + for node in $$ 'br', frag + $.replace node, $.tn '\n>' unless node is frag.lastChild + g.SITE.insertTags?(frag) + for node in $$ '.linkify[data-original]', frag + $.replace node, $.tn node.dataset.original + for node in $$ '.embedder', frag + $.rm node.previousSibling if node.previousSibling?.nodeValue is ' ' + $.rm node + text += ">#{frag.textContent.trim()}\n" QR.openPost() {com, thread} = QR.nodes