Use proper debounce on the sharing input
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
@@ -73,6 +73,7 @@ import { CollectionList } from 'nextcloud-vue-collections'
|
|||||||
import { mapGetters, mapState } from 'vuex'
|
import { mapGetters, mapState } from 'vuex'
|
||||||
import { getCurrentUser } from '@nextcloud/auth'
|
import { getCurrentUser } from '@nextcloud/auth'
|
||||||
import { showError } from '@nextcloud/dialogs'
|
import { showError } from '@nextcloud/dialogs'
|
||||||
|
import { debounce } from 'lodash'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SharingTabSidebar',
|
name: 'SharingTabSidebar',
|
||||||
@@ -148,18 +149,13 @@ export default {
|
|||||||
this.asyncFind('')
|
this.asyncFind('')
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
debouncedFind: debounce(async function(query) {
|
||||||
|
this.isSearching = true
|
||||||
|
await this.$store.dispatch('loadSharees', query)
|
||||||
|
this.isSearching = false
|
||||||
|
}, 300),
|
||||||
async asyncFind(query) {
|
async asyncFind(query) {
|
||||||
// manual debounce to handle async searching more easily and have more control over the loading state
|
await this.debouncedFind(query)
|
||||||
const timestamp = (new Date()).getTime()
|
|
||||||
if (!this.isSearching || timestamp > this.isSearching + 300) {
|
|
||||||
this.isSearching = timestamp
|
|
||||||
await this.$store.dispatch('loadSharees', query)
|
|
||||||
|
|
||||||
// only reset searching flag if the most recent search finished
|
|
||||||
if (this.isSearching === timestamp) {
|
|
||||||
this.isSearching = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
async clickAddAcl() {
|
async clickAddAcl() {
|
||||||
this.addAclForAPI = {
|
this.addAclForAPI = {
|
||||||
|
|||||||
Reference in New Issue
Block a user