Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix HTML entities not decoded in comment just added
The XML data received from the comments endpoint has an inconsistent
encoding; some entities are encoded once and others are encoded twice.
When the comment list is loaded the comments are fetched using
GetComments, which handles all that, and therefore shows the messages
and author names as expected.

However, when a new comment is posted the list is not got again; instead
the new comment is loaded from the comment data returned after posting
it. This is done in NewComment, which did not decode the messages nor
the author names, and therefore showed, for example, "&" instead of
"&".

To solve that now the same decoding logic used in GetComments is applied
too in NewComment.

Signed-off-by: Daniel Calviño Sánchez <[email protected]>
  • Loading branch information
danxuliu committed Nov 10, 2022
commit 5442f8efd6c9cb2b75ccc077bee9a619084194c7
8 changes: 8 additions & 0 deletions apps/comments/src/services/NewComment.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import { getCurrentUser } from '@nextcloud/auth'
import { getRootPath } from '../utils/davUtils'
import { decodeHtmlEntities } from '../utils/decodeHtmlEntities'
import axios from '@nextcloud/axios'
import client from './DavClient'

Expand Down Expand Up @@ -55,5 +56,12 @@ export default async function(commentsType, ressourceId, message) {
details: true,
})

const props = comment.data.props
// Decode twice to handle potentially double-encoded entities
// FIXME Remove this once https://github.com/nextcloud/server/issues/29306
// is resolved
props.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)
props.message = decodeHtmlEntities(props.message, 2)

return comment.data
}