Cancel user search requests to avoid duplicate results being added
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
6c8cd720b8
commit
d2e63cd31a
|
@ -63,8 +63,8 @@ export default {
|
|||
requireAdmin() {
|
||||
return confirmPassword()
|
||||
},
|
||||
get(url) {
|
||||
return axios.get(sanitize(url))
|
||||
get(url, options) {
|
||||
return axios.get(sanitize(url), options)
|
||||
},
|
||||
post(url, data) {
|
||||
return axios.post(sanitize(url), data)
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
import api from './api'
|
||||
import axios from '@nextcloud/axios'
|
||||
import { generateOcsUrl } from '@nextcloud/router'
|
||||
|
||||
const orderGroups = function(groups, orderBy) {
|
||||
|
@ -189,6 +190,9 @@ const getters = {
|
|||
},
|
||||
}
|
||||
|
||||
const CancelToken = axios.CancelToken
|
||||
let searchRequestCancelSource = null
|
||||
|
||||
const actions = {
|
||||
|
||||
/**
|
||||
|
@ -203,10 +207,16 @@ const actions = {
|
|||
* @returns {Promise}
|
||||
*/
|
||||
getUsers(context, { offset, limit, search, group }) {
|
||||
if (searchRequestCancelSource) {
|
||||
searchRequestCancelSource.cancel('Operation canceled by another search request.')
|
||||
}
|
||||
searchRequestCancelSource = CancelToken.source()
|
||||
search = typeof search === 'string' ? search : ''
|
||||
group = typeof group === 'string' ? group : ''
|
||||
if (group !== '') {
|
||||
return api.get(generateOcsUrl(`cloud/groups/${encodeURIComponent(encodeURIComponent(group))}/users/details?offset=${offset}&limit=${limit}&search=${search}`, 2))
|
||||
return api.get(generateOcsUrl(`cloud/groups/${encodeURIComponent(encodeURIComponent(group))}/users/details?offset=${offset}&limit=${limit}&search=${search}`, 2), {
|
||||
cancelToken: searchRequestCancelSource.token,
|
||||
})
|
||||
.then((response) => {
|
||||
if (Object.keys(response.data.ocs.data.users).length > 0) {
|
||||
context.commit('appendUsers', response.data.ocs.data.users)
|
||||
|
@ -214,10 +224,16 @@ const actions = {
|
|||
}
|
||||
return false
|
||||
})
|
||||
.catch((error) => context.commit('API_FAILURE', error))
|
||||
.catch((error) => {
|
||||
if (!axios.isCancel(error)) {
|
||||
context.commit('API_FAILURE', error)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return api.get(generateOcsUrl(`cloud/users/details?offset=${offset}&limit=${limit}&search=${search}`, 2))
|
||||
return api.get(generateOcsUrl(`cloud/users/details?offset=${offset}&limit=${limit}&search=${search}`, 2), {
|
||||
cancelToken: searchRequestCancelSource.token,
|
||||
})
|
||||
.then((response) => {
|
||||
if (Object.keys(response.data.ocs.data.users).length > 0) {
|
||||
context.commit('appendUsers', response.data.ocs.data.users)
|
||||
|
@ -225,7 +241,11 @@ const actions = {
|
|||
}
|
||||
return false
|
||||
})
|
||||
.catch((error) => context.commit('API_FAILURE', error))
|
||||
.catch((error) => {
|
||||
if (!axios.isCancel(error)) {
|
||||
context.commit('API_FAILURE', error)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
getGroups(context, { offset, limit, search }) {
|
||||
|
|
Loading…
Reference in New Issue