import { parseXML, prepareFileFromProps } from 'webdav/dist/node/tools/dav' | import { parseXML, prepareFileFromProps } from 'webdav/dist/node/tools/dav' | ||||
import { processResponsePayload } from 'webdav/dist/node/response' | import { processResponsePayload } from 'webdav/dist/node/response' | ||||
import { decodeHtmlEntities } from '../utils/decodeHtmlEntities' | |||||
import client from './DavClient' | import client from './DavClient' | ||||
export const DEFAULT_LIMIT = 20 | export const DEFAULT_LIMIT = 20 | ||||
return prepareFileFromProps(decodedProps, decodedProps.id.toString(), isDetailed) | return prepareFileFromProps(decodedProps, decodedProps.id.toString(), isDetailed) | ||||
}) | }) | ||||
} | } | ||||
/** | |||||
* @param {any} value - | |||||
* @param {any} passes - | |||||
*/ | |||||
function decodeHtmlEntities(value, passes = 1) { | |||||
const parser = new DOMParser() | |||||
let decoded = value | |||||
for (let i = 0; i < passes; i++) { | |||||
decoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent | |||||
} | |||||
return decoded | |||||
} |
import { getCurrentUser } from '@nextcloud/auth' | import { getCurrentUser } from '@nextcloud/auth' | ||||
import { getRootPath } from '../utils/davUtils' | import { getRootPath } from '../utils/davUtils' | ||||
import { decodeHtmlEntities } from '../utils/decodeHtmlEntities' | |||||
import axios from '@nextcloud/axios' | import axios from '@nextcloud/axios' | ||||
import client from './DavClient' | import client from './DavClient' | ||||
details: true, | 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 | return comment.data | ||||
} | } |
/** | |||||
* @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com> | |||||
* | |||||
* @author Christopher Ng <chrng8@gmail.com> | |||||
* | |||||
* @license AGPL-3.0-or-later | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU Affero General Public License as | |||||
* published by the Free Software Foundation, either version 3 of the | |||||
* License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU Affero General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Affero General Public License | |||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||||
* | |||||
*/ | |||||
/** | |||||
* @param {any} value - | |||||
* @param {any} passes - | |||||
*/ | |||||
export function decodeHtmlEntities(value, passes = 1) { | |||||
const parser = new DOMParser() | |||||
let decoded = value | |||||
for (let i = 0; i < passes; i++) { | |||||
decoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent | |||||
} | |||||
return decoded | |||||
} |
* | * | ||||
*/ | */ | ||||
/** | |||||
* @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com> | |||||
* | |||||
* @author Christopher Ng <chrng8@gmail.com> | |||||
* | |||||
* @license AGPL-3.0-or-later | |||||
* | |||||
* This program is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU Affero General Public License as | |||||
* published by the Free Software Foundation, either version 3 of the | |||||
* License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU Affero General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Affero General Public License | |||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||||
* | |||||
*/ | |||||
/** | /** | ||||
* @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com> | * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com> | ||||
* | * |