commit: c6831a381033fa160fba95fa88b1179d3c670d9d
parent 8fe4355a6b84ae81b54228e6749a4ab82966ff2e
Author: Henry Jameson <me@hjkos.com>
Date: Fri, 18 Jun 2021 21:42:46 +0300
fix not escaping some stuff
Diffstat:
2 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/src/components/rich_content/rich_content.jsx b/src/components/rich_content/rich_content.jsx
@@ -121,14 +121,13 @@ export default Vue.component('RichContent', {
if (emptyText) {
return encounteredText ? item : item.trim()
}
- let unescapedItem = unescape(item)
if (!encounteredText) {
- unescapedItem = unescapedItem.trimStart()
+ item = item.trimStart()
encounteredText = true
}
if (item.includes(':')) {
- unescapedItem = ['', processTextForEmoji(
- unescapedItem,
+ item = ['', processTextForEmoji(
+ item,
this.emoji,
({ shortcode, url }) => {
return <StillImage
@@ -140,7 +139,7 @@ export default Vue.component('RichContent', {
}
)]
}
- return unescapedItem
+ return item
}
// Handle tag nodes
@@ -189,7 +188,7 @@ export default Vue.component('RichContent', {
const emptyText = item.trim() === ''
if (emptyText) return item
if (!encounteredTextReverse) encounteredTextReverse = true
- return item
+ return unescape(item)
} else if (Array.isArray(item)) {
// Handle tag nodes
const [opener, children] = item
@@ -203,9 +202,7 @@ export default Vue.component('RichContent', {
return renderHashtag(attrs, children, encounteredTextReverse)
} else {
attrs.target = '_blank'
- html.includes('freenode') && console.log('PASS1', children)
const newChildren = [...children].reverse().map(processItemReverse).reverse()
- html.includes('freenode') && console.log('PASS1b', newChildren)
return <a {...{ attrs }}>
{ newChildren }
diff --git a/test/unit/specs/components/rich_content.spec.js b/test/unit/specs/components/rich_content.spec.js
@@ -27,6 +27,29 @@ describe('RichContent', () => {
expect(wrapper.html()).to.eql(compwrap(html))
})
+ it('unescapes everything as needed', () => {
+ const html = [
+ p('Testing 'em all'),
+ 'Testing 'em all'
+ ].join('')
+ const expected = [
+ p('Testing \'em all'),
+ 'Testing \'em all'
+ ].join('')
+ const wrapper = shallowMount(RichContent, {
+ localVue,
+ propsData: {
+ hideMentions: true,
+ handleLinks: true,
+ greentext: true,
+ emoji: [],
+ html
+ }
+ })
+
+ expect(wrapper.html()).to.eql(compwrap(expected))
+ })
+
it('removes mentions from the beginning of post', () => {
const html = p(
makeMention('John'),