diff options
Diffstat (limited to 'polygerrit-ui/app/elements/plugins/gr-repo-api/gr-repo-api.js')
-rw-r--r-- | polygerrit-ui/app/elements/plugins/gr-repo-api/gr-repo-api.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/polygerrit-ui/app/elements/plugins/gr-repo-api/gr-repo-api.js b/polygerrit-ui/app/elements/plugins/gr-repo-api/gr-repo-api.js new file mode 100644 index 0000000000..45f106d040 --- /dev/null +++ b/polygerrit-ui/app/elements/plugins/gr-repo-api/gr-repo-api.js @@ -0,0 +1,63 @@ +/** + * @license + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +(function(window) { + 'use strict'; + + // Prevent redefinition. + if (window.GrRepoApi) { return; } + + function GrRepoApi(plugin) { + this._hook = null; + this.plugin = plugin; + } + + GrRepoApi.prototype._createHook = function(title) { + this._hook = this.plugin.hook('repo-command').onAttached(element => { + const pluginCommand = + document.createElement('gr-plugin-repo-command'); + pluginCommand.title = title; + element.appendChild(pluginCommand); + }); + }; + + GrRepoApi.prototype.createCommand = function(title, callback) { + if (this._hook) { + console.warn('Already set up.'); + return this._hook; + } + this._createHook(title); + this._hook.onAttached(element => { + if (callback(element.repoName, element.config) === false) { + element.hidden = true; + } + }); + return this; + }; + + GrRepoApi.prototype.onTap = function(callback) { + if (!this._hook) { + console.warn('Call createCommand first.'); + return this; + } + this._hook.onAttached(element => { + this.plugin.eventHelper(element).on('command-tap', callback); + }); + return this; + }; + + window.GrRepoApi = GrRepoApi; +})(window); |