Catch errors due to "Restricted" selection. #2905

This commit is contained in:
ccd0 2023-02-26 21:20:17 -08:00
parent 19268975ea
commit 2a47dfd8ba

View File

@ -295,35 +295,36 @@ QR =
postRange.selectNode root postRange.selectNode root
text = if post.board.ID is g.BOARD.ID then ">>#{post}\n" else ">>>/#{post.board}/#{post}\n" text = if post.board.ID is g.BOARD.ID then ">>#{post}\n" else ">>>/#{post.board}/#{post}\n"
for i in [0...sel.rangeCount] for i in [0...sel.rangeCount]
range = sel.getRangeAt i try
# Trim range to be fully inside post range = sel.getRangeAt i
if range.compareBoundaryPoints(Range.START_TO_START, postRange) < 0 # Trim range to be fully inside post
range.setStartBefore root if range.compareBoundaryPoints(Range.START_TO_START, postRange) < 0
if range.compareBoundaryPoints(Range.END_TO_END, postRange) > 0 range.setStartBefore root
range.setEndAfter 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() frag = range.cloneContents()
ancestor = range.commonAncestorContainer ancestor = range.commonAncestorContainer
# Quoting the insides of a spoiler/code tag. # Quoting the insides of a spoiler/code tag.
if $.x 'ancestor-or-self::*[self::s or contains(@class,"removed-spoiler")]', ancestor if $.x 'ancestor-or-self::*[self::s or contains(@class,"removed-spoiler")]', ancestor
$.prepend frag, $.tn '[spoiler]' $.prepend frag, $.tn '[spoiler]'
$.add frag, $.tn '[/spoiler]' $.add frag, $.tn '[/spoiler]'
if insideCode = $.x 'ancestor-or-self::pre[contains(@class,"prettyprint")]', ancestor if insideCode = $.x 'ancestor-or-self::pre[contains(@class,"prettyprint")]', ancestor
$.prepend frag, $.tn '[code]' $.prepend frag, $.tn '[code]'
$.add frag, $.tn '[/code]' $.add frag, $.tn '[/code]'
for node in $$ (if insideCode then 'br' else '.prettyprint br'), frag for node in $$ (if insideCode then 'br' else '.prettyprint br'), frag
$.replace node, $.tn '\n' $.replace node, $.tn '\n'
for node in $$ 'br', frag for node in $$ 'br', frag
$.replace node, $.tn '\n>' unless node is frag.lastChild $.replace node, $.tn '\n>' unless node is frag.lastChild
g.SITE.insertTags?(frag) g.SITE.insertTags?(frag)
for node in $$ '.linkify[data-original]', frag for node in $$ '.linkify[data-original]', frag
$.replace node, $.tn node.dataset.original $.replace node, $.tn node.dataset.original
for node in $$ '.embedder', frag for node in $$ '.embedder', frag
$.rm node.previousSibling if node.previousSibling?.nodeValue is ' ' $.rm node.previousSibling if node.previousSibling?.nodeValue is ' '
$.rm node $.rm node
text += ">#{frag.textContent.trim()}\n" text += ">#{frag.textContent.trim()}\n"
QR.openPost() QR.openPost()
{com, thread} = QR.nodes {com, thread} = QR.nodes