Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax <max@nextcloud.com>2022-04-21 13:03:13 +0300
committerMax <max@nextcloud.com>2022-06-07 20:41:59 +0300
commit4f958dee9bcdf3d5db27161833de49d5fd3b711f (patch)
tree2cde8d8a6d6fb6393cb6797ee882fc54238f8604
parent05a9190c5021682e29ececf6305b1683019df647 (diff)
fix: image rendering via public previews
Public Preview only has one route - it does not make use of the fileId. Signed-off-by: Max <max@nextcloud.com>
-rw-r--r--src/services/ImageResolver.js16
-rw-r--r--src/tests/services/ImageResolver.spec.js15
2 files changed, 22 insertions, 9 deletions
diff --git a/src/services/ImageResolver.js b/src/services/ImageResolver.js
index 9a2874390..eec02ea7c 100644
--- a/src/services/ImageResolver.js
+++ b/src/services/ImageResolver.js
@@ -106,15 +106,19 @@ export default class ImageResolver {
#previewUrl(src) {
const imageFileId = getQueryVariable(src, 'fileId')
const path = this.#filePath(src)
- const fileQuery = (imageFileId)
- ? `?fileId=${imageFileId}&file=${encodeURIComponent(path)}`
- : `?file=${encodeURIComponent(path)}`
+ const fileQuery = `file=${encodeURIComponent(path)}`
const query = fileQuery + '&x=1024&y=1024&a=true'
+ if (this.#user && imageFileId) {
+ return generateUrl(`/core/preview?fileId=${imageFileId}&${query}`)
+ }
if (this.#user) {
- return generateUrl('/core/preview') + query
- } else {
- return generateUrl(`/apps/files_sharing/publicpreview/${this.#shareToken}${query}`)
+ return generateUrl(`/core/preview.png?${query}`)
+ }
+ if (this.#shareToken) {
+ return generateUrl(`/apps/files_sharing/publicpreview/${this.#shareToken}?${query}`)
}
+ console.error('No way to authenticate image retrival - need to be logged in or provide a token')
+ return src
}
#davUrl(src) {
diff --git a/src/tests/services/ImageResolver.spec.js b/src/tests/services/ImageResolver.spec.js
index 9e02213d0..55837a8f2 100644
--- a/src/tests/services/ImageResolver.spec.js
+++ b/src/tests/services/ImageResolver.spec.js
@@ -86,11 +86,20 @@ describe('Image resolver', () => {
expect(url).toContain('/core/preview?fileId=7')
})
- it('uses fileId for public preview', () => {
+ it('uses .png endpoint if no fileId is given', () => {
+ const src = '/Media/photo.jpeg?mimetype=image%2Fjpeg&hasPreview=true'
+ const resolver = new ImageResolver({ user })
+ const [url] = resolver.resolve(src)
+ expect(url).toBe('/nc-webroot/core/preview.png?file=%2FMedia%2Fphoto.jpeg&x=1024&y=1024&a=true')
+ })
+
+ it('retrieves public preview by path', () => {
const src = '/Media/photo.jpeg?fileId=7#mimetype=image%2Fjpeg&hasPreview=true'
- const resolver = new ImageResolver({ shareToken: 'SHARE_TOKEN' })
+ const resolver = new ImageResolver({
+ shareToken: 'SHARE_TOKEN'
+ })
const [url] = resolver.resolve(src)
- expect(url).toContain('/apps/files_sharing/publicpreview/SHARE_TOKEN?fileId=7')
+ expect(url).toBe('/nc-webroot/apps/files_sharing/publicpreview/SHARE_TOKEN?file=%2FMedia%2Fphoto.jpeg&x=1024&y=1024&a=true')
})
it('handles old .attachments urls via webdav with text API fallback', () => {