From 67d73bce563d5d0ce2e3c2ab1ca9d3c61c8829ec Mon Sep 17 00:00:00 2001 From: Christina Toegl <toegl@tugraz.at> Date: Wed, 6 Apr 2022 15:22:15 +0200 Subject: [PATCH] Add full webdav url to recents requests --- .../src/nextcloud-file-picker.js | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/packages/file-handling/src/nextcloud-file-picker.js b/packages/file-handling/src/nextcloud-file-picker.js index 4be1df78..4b963d06 100644 --- a/packages/file-handling/src/nextcloud-file-picker.js +++ b/packages/file-handling/src/nextcloud-file-picker.js @@ -26,6 +26,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.auth = {}; this.authUrl = ''; this.webDavUrl = ''; + this.fullWebDavUrl = ''; this.nextcloudName = 'Nextcloud'; this.nextcloudFileURL = ''; this.loginWindow = null; @@ -95,6 +96,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { auth: {type: Object}, authUrl: {type: String, attribute: 'auth-url'}, webDavUrl: {type: String, attribute: 'web-dav-url'}, + fullWebDavUrl: {type: String, attribute: false}, nextcloudFileURL: {type: String, attribute: 'nextcloud-file-url'}, nextcloudName: {type: String, attribute: 'nextcloud-name'}, isPickerActive: {type: Boolean, attribute: false}, @@ -492,7 +494,8 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { for (let key of Object.keys(localStorage)) { if ( key.includes('nextcloud-webdav-username-') || - key.includes('nextcloud-webdav-password-') + key.includes('nextcloud-webdav-password-') || + key.includes('nextcloud-webdav-url-') ) { localStorage.removeItem(key); } @@ -507,7 +510,8 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.storeSession && sessionId && localStorage.getItem('nextcloud-webdav-username-' + publicId) && - localStorage.getItem('nextcloud-webdav-password-' + publicId) + localStorage.getItem('nextcloud-webdav-password-' + publicId) && + localStorage.getItem('nextcloud-webdav-url-' + publicId) ) { try { const userName = await decrypt( @@ -518,6 +522,10 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { sessionId, localStorage.getItem('nextcloud-webdav-password-' + publicId) ); + this.fullWebDavUrl = await decrypt( + sessionId, + localStorage.getItem('nextcloud-webdav-url-' + publicId) + ); this.webDavClient = createClient(this.webDavUrl + '/' + userName, { username: userName, password: password, @@ -530,6 +538,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { } catch (e) { localStorage.removeItem('nextcloud-webdav-username-' + publicId); localStorage.removeItem('nextcloud-webdav-password-' + publicId); + localStorage.removeItem('nextcloud-webdav-url-' + publicId) return; } } @@ -603,6 +612,8 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { } ); + this.fullWebDavUrl = data.webdavUrl; + if ( this.storeSession && this.isLoggedIn() && @@ -615,11 +626,13 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { if (sessionId) { const encrytedName = await encrypt(sessionId, data.loginName); const encrytedToken = await encrypt(sessionId, data.token); + const encryptedUrl = await encrypt(sessionId, data.webdavUrl); localStorage.setItem('nextcloud-webdav-username-' + publicId, encrytedName); localStorage.setItem( 'nextcloud-webdav-password-' + publicId, encrytedToken ); + localStorage.setItem('nextcloud-webdav-url-' + publicId, encryptedUrl); } } @@ -947,9 +960,9 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { ' </d:select>' + ' <d:from>' + ' <d:scope>' + - ' <d:href>/files/' + - this.userName + - '/</d:href>' + + ' <d:href>' + + this.fullWebDavUrl + + '</d:href>' + ' <d:depth>infinity</d:depth>' + ' </d:scope>' + ' </d:from>' + @@ -1110,9 +1123,9 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { ' </d:select>' + ' <d:from>' + ' <d:scope>' + - ' <d:href>/files/' + - this.userName + - '/</d:href>' + + ' <d:href>' + + this.fullWebDavUrl + + '</d:href>' + ' <d:depth>infinity</d:depth>' + ' </d:scope>' + ' </d:from>' + @@ -2111,6 +2124,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { const publicId = this.auth['person-id']; localStorage.removeItem('nextcloud-webdav-username' + publicId); localStorage.removeItem('nextcloud-webdav-password' + publicId); + localStorage.removeItem('nextcloud-webdav-url-' + publicId) } } -- GitLab