Fix loading error catch
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
parent
2000e2faa5
commit
2672f5da59
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/**
|
||||||
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||||
*
|
*
|
||||||
* @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
* @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/**
|
||||||
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||||
*
|
*
|
||||||
* @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
* @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/**
|
||||||
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||||
*
|
*
|
||||||
* @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
* @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/**
|
||||||
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||||
*
|
*
|
||||||
* @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
* @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/**
|
||||||
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||||
*
|
*
|
||||||
* @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
* @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||||
|
|
|
@ -19,8 +19,9 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { getRequestToken } from '@nextcloud/auth'
|
|
||||||
import { generateFilePath } from '@nextcloud/router'
|
import { generateFilePath } from '@nextcloud/router'
|
||||||
|
import { getLoggerBuilder } from '@nextcloud/logger'
|
||||||
|
import { getRequestToken } from '@nextcloud/auth'
|
||||||
import { translate as t, translatePlural as n } from '@nextcloud/l10n'
|
import { translate as t, translatePlural as n } from '@nextcloud/l10n'
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
|
|
||||||
|
@ -32,7 +33,17 @@ __webpack_nonce__ = btoa(getRequestToken())
|
||||||
// eslint-disable-next-line camelcase
|
// eslint-disable-next-line camelcase
|
||||||
__webpack_public_path__ = generateFilePath('core', '', 'js/')
|
__webpack_public_path__ = generateFilePath('core', '', 'js/')
|
||||||
|
|
||||||
|
const logger = getLoggerBuilder()
|
||||||
|
.setApp('unified-search')
|
||||||
|
.detectUser()
|
||||||
|
.build()
|
||||||
|
|
||||||
Vue.mixin({
|
Vue.mixin({
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
logger,
|
||||||
|
}
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
t,
|
t,
|
||||||
n,
|
n,
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
<!-- Loading placeholders -->
|
<!-- Loading placeholders -->
|
||||||
<SearchResultPlaceholders v-if="isLoading" />
|
<SearchResultPlaceholders v-if="isLoading" />
|
||||||
|
|
||||||
<EmptyContent v-else-if="isValidQuery && isDoneSearching" icon="icon-search">
|
<EmptyContent v-else-if="isValidQuery" icon="icon-search">
|
||||||
{{ t('core', 'No results for {query}', {query}) }}
|
{{ t('core', 'No results for {query}', {query}) }}
|
||||||
</EmptyContent>
|
</EmptyContent>
|
||||||
|
|
||||||
|
@ -116,6 +116,7 @@ import Magnify from 'vue-material-design-icons/Magnify'
|
||||||
import HeaderMenu from '../components/HeaderMenu'
|
import HeaderMenu from '../components/HeaderMenu'
|
||||||
import SearchResult from '../components/UnifiedSearch/SearchResult'
|
import SearchResult from '../components/UnifiedSearch/SearchResult'
|
||||||
import SearchResultPlaceholders from '../components/UnifiedSearch/SearchResultPlaceholders'
|
import SearchResultPlaceholders from '../components/UnifiedSearch/SearchResultPlaceholders'
|
||||||
|
import { showError } from '@nextcloud/dialogs'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'UnifiedSearch',
|
name: 'UnifiedSearch',
|
||||||
|
@ -255,7 +256,7 @@ export default {
|
||||||
|
|
||||||
async created() {
|
async created() {
|
||||||
this.types = await getTypes()
|
this.types = await getTypes()
|
||||||
console.debug('Unified Search initialized with the following providers', this.types)
|
this.logger.debug('Unified Search initialized with the following providers', this.types)
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -372,42 +373,49 @@ export default {
|
||||||
// Remove any filters from the query
|
// Remove any filters from the query
|
||||||
query = query.replace(regexFilterIn, '').replace(regexFilterNot, '')
|
query = query.replace(regexFilterIn, '').replace(regexFilterNot, '')
|
||||||
|
|
||||||
console.debug('Searching', query, 'in', types)
|
this.logger.debug(`Searching ${query} in`, types)
|
||||||
|
|
||||||
// Reset search if the query changed
|
// Reset search if the query changed
|
||||||
this.resetState()
|
this.resetState()
|
||||||
|
|
||||||
types.forEach(async type => {
|
types.forEach(async type => {
|
||||||
this.$set(this.loading, type, true)
|
try {
|
||||||
const request = await search(type, query)
|
this.$set(this.loading, type, true)
|
||||||
|
const request = await search(type, query)
|
||||||
|
|
||||||
|
// Process results
|
||||||
|
if (request.data.ocs.data.entries.length > 0) {
|
||||||
|
this.$set(this.results, type, request.data.ocs.data.entries)
|
||||||
|
} else {
|
||||||
|
this.$delete(this.results, type)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save cursor if any
|
||||||
|
if (request.data.ocs.data.cursor) {
|
||||||
|
this.$set(this.cursors, type, request.data.ocs.data.cursor)
|
||||||
|
} else if (!request.data.ocs.data.isPaginated) {
|
||||||
|
// If no cursor and no pagination, we save the default amount
|
||||||
|
// provided by server's initial state `defaultLimit`
|
||||||
|
this.$set(this.limits, type, this.defaultLimit)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if we reached end of pagination
|
||||||
|
if (request.data.ocs.data.entries.length < this.defaultLimit) {
|
||||||
|
this.$set(this.reached, type, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// If none already focused, focus the first rendered result
|
||||||
|
if (this.focused === null) {
|
||||||
|
this.focused = 0
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
this.logger.error(`Error searching for ${this.typesMap[type]}`, error)
|
||||||
|
showError(this.t('core', 'An error occurred while looking for {type}', { type: this.typesMap[type] }))
|
||||||
|
|
||||||
// Process results
|
|
||||||
if (request.data.ocs.data.entries.length > 0) {
|
|
||||||
this.$set(this.results, type, request.data.ocs.data.entries)
|
|
||||||
} else {
|
|
||||||
this.$delete(this.results, type)
|
this.$delete(this.results, type)
|
||||||
|
} finally {
|
||||||
|
this.$set(this.loading, type, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save cursor if any
|
|
||||||
if (request.data.ocs.data.cursor) {
|
|
||||||
this.$set(this.cursors, type, request.data.ocs.data.cursor)
|
|
||||||
} else if (!request.data.ocs.data.isPaginated) {
|
|
||||||
// If no cursor and no pagination, we save the default amount
|
|
||||||
// provided by server's initial state `defaultLimit`
|
|
||||||
this.$set(this.limits, type, this.defaultLimit)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if we reached end of pagination
|
|
||||||
if (request.data.ocs.data.entries.length < this.defaultLimit) {
|
|
||||||
this.$set(this.reached, type, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
// If none already focused, focus the first rendered result
|
|
||||||
if (this.focused === null) {
|
|
||||||
this.focused = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$set(this.loading, type, false)
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
onInputDebounced: debounce(function(e) {
|
onInputDebounced: debounce(function(e) {
|
||||||
|
|
Loading…
Reference in New Issue