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

github.com/nextcloud/tasks.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRaimund Schlüßler <raimund.schluessler@mailbox.org>2021-08-02 22:20:16 +0300
committerRaimund Schlüßler <raimund.schluessler@mailbox.org>2021-08-02 22:20:16 +0300
commit8de84abda64496b04a64822ffd48c7259f036452 (patch)
tree6b383d8c06e3655455c27e7e30dc7e6ed47c0900 /src
parent34c46559a840c9d4d570837441e3a7af1264533d (diff)
Properly decode share name in share search
Signed-off-by: Raimund Schlüßler <raimund.schluessler@mailbox.org>
Diffstat (limited to 'src')
-rw-r--r--src/components/AppNavigation/CalendarShare.vue31
-rw-r--r--src/utils/url.js31
2 files changed, 52 insertions, 10 deletions
diff --git a/src/components/AppNavigation/CalendarShare.vue b/src/components/AppNavigation/CalendarShare.vue
index 62c674d4..6833c30d 100644
--- a/src/components/AppNavigation/CalendarShare.vue
+++ b/src/components/AppNavigation/CalendarShare.vue
@@ -42,9 +42,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
:user-select="true"
open-direction="bottom"
track-by="user"
- label="user"
+ label="displayName"
@search-change="findSharee"
- @change="shareCalendar" />
+ @change="shareCalendar">
+ <template #noResult>
+ <span>{{ noResult }}</span>
+ </template>
+ </Multiselect>
</li>
<!-- list of user or groups calendar is shared with -->
<CalendarSharee v-for="sharee in calendar.shares"
@@ -58,6 +62,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<script>
import CalendarSharee from './CalendarSharee.vue'
import client from '../../services/cdav.js'
+import { urldecode } from '../../utils/url'
import Axios from '@nextcloud/axios'
import { generateOcsUrl } from '@nextcloud/router'
@@ -110,10 +115,7 @@ export default {
* @param {boolean} data.isCircle is this a circle?
*/
shareCalendar({ user, displayName, uri, isGroup, isCircle }) {
- const calendar = this.calendar
- uri = decodeURI(uri)
- user = decodeURI(user)
- this.$store.dispatch('shareCalendar', { calendar, user, displayName, uri, isGroup, isCircle })
+ this.$store.dispatch('shareCalendar', { calendar: this.calendar, user, displayName, uri, isGroup, isCircle })
},
/**
@@ -170,7 +172,17 @@ export default {
}
return results.reduce((list, result) => {
- if (hiddenPrincipals.includes(decodeURI(result.principalScheme))) {
+ if (['ROOM', 'RESOURCE'].includes(result.calendarUserType)) {
+ return list
+ }
+
+ const isGroup = result.calendarUserType === 'GROUP'
+
+ // TODO: Why do we have to decode those two values?
+ const user = urldecode(result[isGroup ? 'groupId' : 'userId'])
+ const decodedPrincipalScheme = urldecode(result.principalScheme)
+
+ if (hiddenPrincipals.includes(decodedPrincipalScheme)) {
return list
}
if (hiddenUrls.includes(result.url)) {
@@ -182,12 +194,11 @@ export default {
return list
}
- const isGroup = result.calendarUserType === 'GROUP'
list.push({
- user: result[isGroup ? 'groupId' : 'userId'],
+ user,
displayName: result.displayname,
icon: isGroup ? 'icon-group' : 'icon-user',
- uri: result.principalScheme,
+ uri: decodedPrincipalScheme,
isGroup,
isCircle: false,
isNoUser: isGroup,
diff --git a/src/utils/url.js b/src/utils/url.js
new file mode 100644
index 00000000..d0dce26d
--- /dev/null
+++ b/src/utils/url.js
@@ -0,0 +1,31 @@
+/**
+ * Nextcloud - Tasks
+ *
+ * @copyright Copyright (c) 2021 Richard Steinmetz <richard@steinmetz.cloud>
+ * @author Richard Steinmetz <richard@steinmetz.cloud>
+ * @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/>.
+ */
+
+/**
+ * Works like urldecode() from php
+ *
+ * @see https://www.php.net/manual/en/function.urldecode.php
+ * @param {string} url The url to be decoded
+ * @return {string} The decoded url
+ */
+export function urldecode(url) {
+ return decodeURIComponent(url.replace(/\+/g, ' '))
+}