fix not escaping some stuff

This commit is contained in:
Henry Jameson 2021-06-18 21:42:46 +03:00 committed by Sam Therapy
parent 06fa61e148
commit c139c8110c
Signed by: sam
GPG key ID: 4D8B07C18F31ACBD
2 changed files with 28 additions and 8 deletions

View file

@ -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 }

View file

@ -27,6 +27,29 @@ describe('RichContent', () => {
expect(wrapper.html()).to.eql(compwrap(html))
})
it('unescapes everything as needed', () => {
const html = [
p('Testing &#39;em all'),
'Testing &#39;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'),