Declare OCA.Search directly, not via a monkey patch

Apps could use OCA.Search very early on a page load without a problem
prior to Nextcloud 20 (current master). Since the unified search work
moved some code around, it now was added later, resulting in `TypeError:
OCA.Search is not a constructor` errors if the apps did not wrap their
calls in a `DOMLoaded` event handler.

To ensure existing code continues to work without modification, this
patch moves the declaration of the `OCA.Search` API to where we defined
`OCA`, instead of monkey-patching it later on.

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
This commit is contained in:
Christoph Wurst 2020-08-31 10:31:12 +02:00
parent 8c9f3a5f5e
commit e2d209536f
No known key found for this signature in database
GPG Key ID: CC42AC2A7F0E56D8
9 changed files with 48 additions and 19 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -19,8 +19,15 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import Search from './search'
/**
* Namespace for apps
* @namespace OCA
*/
export default {}
export default {
/**
* @deprecated 20.0.0, will be removed in Nextcloud 22
*/
Search,
}

34
core/src/OCA/search.js Normal file
View File

@ -0,0 +1,34 @@
/*
* @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @deprecated 20.0.0, will be removed in Nextcloud 22
*/
export default class Search {
/**
* @deprecated 20.0.0, will be removed in Nextcloud 22
*/
constructor() {
console.warn('OCA.Search is deprecated. Please use the unified search API instead')
}
}

View File

@ -32,18 +32,6 @@ __webpack_nonce__ = btoa(getRequestToken())
// eslint-disable-next-line camelcase
__webpack_public_path__ = generateFilePath('core', '', 'js/')
// TODO: remove with nc22
if (!OCA.Search) {
class Search {
constructor() {
console.warn('OCA.Search is deprecated. Please use the unified search API instead')
}
}
OCA.Search = Search
}
Vue.mixin({
methods: {
t,