Merge pull request #18144 from nextcloud/enh/gs/always_search_lookup

Sharee API GS fixes
This commit is contained in:
Roeland Jago Douma 2019-12-05 09:47:01 +01:00 committed by GitHub
commit 6f540fc09d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 33 additions and 8 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -112,6 +112,11 @@ class Capabilities implements ICapability {
'expire_date' => ['enabled' => true]
];
// Sharee searches
$res['sharee'] = [
'query_lookup_default' => $this->config->getSystemValueBool('gs.enabled', false)
];
return [
'files_sharing' => $res,
];

View File

@ -207,6 +207,14 @@ class ShareesAPIController extends OCSController {
$this->limit = (int) $perPage;
$this->offset = $perPage * ($page - 1);
// In global scale mode we always search the loogup server
if ($this->config->getSystemValueBool('gs.enabled', false)) {
$lookup = true;
$this->result['lookupEnabled'] = true;
} else {
$this->result['lookupEnabled'] = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'yes') === 'yes';
}
list($result, $hasMoreResults) = $this->collaboratorSearch->search($search, $shareTypes, $lookup, $this->limit, $this->offset);
// extra treatment for 'exact' subarray, with a single merge expected keys might be lost
@ -214,7 +222,6 @@ class ShareesAPIController extends OCSController {
$result['exact'] = array_merge($this->result['exact'], $result['exact']);
}
$this->result = array_merge($this->result, $result);
$this->result['lookupEnabled'] = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'yes') === 'yes';
$response = new DataResponse($this->result);
if ($hasMoreResults) {

View File

@ -23,6 +23,7 @@
<template>
<Multiselect ref="multiselect"
class="sharing-input"
:clear-on-select="false"
:disabled="!canReshare"
:hide-selected="true"
:internal-search="false"
@ -176,10 +177,12 @@ export default {
* @param {string} search the search query
* @param {boolean} [lookup=false] search on lookup server
*/
async getSuggestions(search, lookup) {
async getSuggestions(search, lookup = false) {
this.loading = true
lookup = lookup || false
console.info(search, lookup)
if (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {
lookup = true
}
const request = await axios.get(generateOcsUrl('apps/files_sharing/api/v1') + 'sharees', {
params: {
@ -215,8 +218,9 @@ export default {
.sort((a, b) => a.shareType - b.shareType)
// lookup clickable entry
// show if enabled and not already requested
const lookupEntry = []
if (data.lookupEnabled) {
if (data.lookupEnabled && !lookup) {
lookupEntry.push({
isNoUser: true,
displayName: t('files_sharing', 'Search globally'),
@ -388,9 +392,18 @@ export default {
*/
async addShare(value) {
if (value.lookup) {
return this.getSuggestions(this.query, true)
await this.getSuggestions(this.query, true)
// focus the input again
this.$nextTick(() => {
this.$refs.multiselect.$el.querySelector('.multiselect__input').focus()
})
return true
}
// TODO: reset the search string when done
// https://github.com/shentao/vue-multiselect/issues/633
// handle externalResults from OCA.Sharing.ShareSearch
if (value.handler) {
const share = await value.handler(this)