]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fix HTML entities not decoded in comment just added
authorDaniel Calviño Sánchez <danxuliu@gmail.com>
Mon, 7 Nov 2022 23:27:15 +0000 (00:27 +0100)
committerDaniel Calviño Sánchez <danxuliu@gmail.com>
Thu, 24 Nov 2022 16:20:03 +0000 (17:20 +0100)
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, "&amp;" 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 <danxuliu@gmail.com>
apps/comments/src/services/NewComment.js

index eaf08cc10b9578c8db92b36500765bb612ba3952..27d227ed656f697d2599b7d6165a8320d4363811 100644 (file)
@@ -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'
 
@@ -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
 }