/** * @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() { 'use strict'; const GC_MESSAGE = 'Garbage collection completed successfully.'; const CONFIG_BRANCH = 'refs/meta/config'; const CONFIG_PATH = 'project.config'; const EDIT_CONFIG_SUBJECT = 'Edit Repo Config'; const INITIAL_PATCHSET = 1; const CREATE_CHANGE_FAILED_MESSAGE = 'Failed to create change.'; const CREATE_CHANGE_SUCCEEDED_MESSAGE = 'Navigating to change'; Polymer({ is: 'gr-repo-commands', properties: { params: Object, repo: String, _loading: { type: Boolean, value: true, }, /** @type {?} */ _repoConfig: Object, _canCreate: Boolean, }, attached() { this._loadRepo(); this.fire('title-change', {title: 'Repo Commands'}); }, _loadRepo() { if (!this.repo) { return Promise.resolve(); } const errFn = response => { this.fire('page-error', {response}); }; return this.$.restAPI.getProjectConfig(this.repo, errFn) .then(config => { if (!config) { return Promise.resolve(); } this._repoConfig = config; this._loading = false; }); }, _computeLoadingClass(loading) { return loading ? 'loading' : ''; }, _isLoading() { return this._loading || this._loading === undefined; }, _handleRunningGC() { return this.$.restAPI.runRepoGC(this.repo).then(response => { if (response.status === 200) { this.dispatchEvent(new CustomEvent('show-alert', {detail: {message: GC_MESSAGE}, bubbles: true})); } }); }, _createNewChange() { this.$.createChangeOverlay.open(); }, _handleCreateChange() { this.$.createNewChangeModal.handleCreateChange(); this._handleCloseCreateChange(); }, _handleCloseCreateChange() { this.$.createChangeOverlay.close(); }, _handleEditRepoConfig() { return this.$.restAPI.createChange(this.repo, CONFIG_BRANCH, EDIT_CONFIG_SUBJECT, undefined, false, true).then(change => { const message = change ? CREATE_CHANGE_SUCCEEDED_MESSAGE : CREATE_CHANGE_FAILED_MESSAGE; this.dispatchEvent(new CustomEvent('show-alert', {detail: {message}, bubbles: true})); if (!change) { return; } Gerrit.Nav.navigateToRelativeUrl(Gerrit.Nav.getEditUrlForDiff( change, CONFIG_PATH, INITIAL_PATCHSET)); }); }, }); })();