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

github.com/nextcloud/groupfolders.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2021-06-16 15:58:48 +0300
committerJulius Härtl <jus@bitgrid.net>2021-06-16 15:58:48 +0300
commitbd7a5cb6be9cc8b12321d9ecbcc059836f6eb28c (patch)
tree4c7970ee4c91415fdf301518ffd57cc9bbea9243 /src
parent88c01e3bec82a534d9894fc35544e0fd7204e96a (diff)
Cancel ACL user/group search requests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'src')
-rw-r--r--src/components/SharingSidebarView.vue21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/components/SharingSidebarView.vue b/src/components/SharingSidebarView.vue
index 50026de2..901e7250 100644
--- a/src/components/SharingSidebarView.vue
+++ b/src/components/SharingSidebarView.vue
@@ -105,6 +105,7 @@
<multiselect v-if="isAdmin && !loading" v-show="showAclCreate" ref="select"
v-model="value" :options="options" @select="createAcl" :reset-after="true"
@search-change="searchMappings"
+ :loading="isSearching"
:internal-search="false"
:placeholder="t('groupfolders', 'Select a user or group')"
track-by="unique">
@@ -122,13 +123,15 @@
<script>
import Vue from 'vue'
- import axios from 'nextcloud-axios';
+ import axios from '@nextcloud/axios';
import {Avatar, Multiselect} from 'nextcloud-vue';
import AclStateButton from './AclStateButton'
import Rule from './../model/Rule'
import BinaryTools from './../BinaryTools'
import client from './../client'
+ let searchRequestCancelSource = null
+
export default {
name: 'SharingSidebarView',
props: ['fileInfo'],
@@ -152,6 +155,7 @@
showAclCreate: false,
groupFolderId: null,
loading: false,
+ isSearching: false,
options: [],
value: null,
model: null,
@@ -182,6 +186,7 @@
},
methods: {
loadAcls() {
+ this.options = [];
this.loading = true;
this.model = JSON.parse(JSON.stringify(this.fileInfo));
client.propFind(this.model).then((data) => {
@@ -204,7 +209,15 @@
return displayName
},
searchMappings (query) {
- axios.get(OC.generateUrl(`apps/groupfolders/folders/${this.groupFolderId}/search`) + '?format=json&search=' + query).then((result) => {
+ if (searchRequestCancelSource) {
+ searchRequestCancelSource.cancel('Operation canceled by another search request.')
+ }
+ searchRequestCancelSource = axios.CancelToken.source()
+ this.isSearching = true
+ axios.get(OC.generateUrl(`apps/groupfolders/folders/${this.groupFolderId}/search`) + '?format=json&search=' + query, {
+ cancelToken: searchRequestCancelSource.token,
+ }).then((result) => {
+ this.isSearching = false
let groups = Object.values(result.data.ocs.data.groups).map((group) => {
return {
unique: 'group:' + group.gid,
@@ -225,6 +238,10 @@
// filter out existing acl rules
return !this.list.find((existingAcl) => entry.unique === existingAcl.getUniqueMappingIdentifier());
});
+ }).catch((error) => {
+ if (!axios.isCancel(error)) {
+ console.error('Failed to l search results for groupfolder ACL')
+ }
})
},
toggleAclCreate () {