diff options
Diffstat (limited to 'app/assets/javascripts/design_management_new/mixins/all_versions.js')
-rw-r--r-- | app/assets/javascripts/design_management_new/mixins/all_versions.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/app/assets/javascripts/design_management_new/mixins/all_versions.js b/app/assets/javascripts/design_management_new/mixins/all_versions.js new file mode 100644 index 00000000000..99e2ee9561c --- /dev/null +++ b/app/assets/javascripts/design_management_new/mixins/all_versions.js @@ -0,0 +1,59 @@ +import getDesignListQuery from '../graphql/queries/get_design_list.query.graphql'; +import { findVersionId } from '../utils/design_management_utils'; + +export default { + apollo: { + allVersions: { + query: getDesignListQuery, + variables() { + return { + fullPath: this.projectPath, + iid: this.issueIid, + atVersion: null, + }; + }, + update: data => data.project.issue.designCollection.versions.edges, + }, + }, + inject: { + projectPath: { + default: '', + }, + issueIid: { + default: '', + }, + }, + computed: { + hasValidVersion() { + return ( + this.$route.query.version && + this.allVersions && + this.allVersions.some(version => version.node.id.endsWith(this.$route.query.version)) + ); + }, + designsVersion() { + return this.hasValidVersion + ? `gid://gitlab/DesignManagement::Version/${this.$route.query.version}` + : null; + }, + latestVersionId() { + const latestVersion = this.allVersions[0]; + return latestVersion && findVersionId(latestVersion.node.id); + }, + isLatestVersion() { + if (this.allVersions.length > 0) { + return ( + !this.$route.query.version || + !this.latestVersionId || + this.$route.query.version === this.latestVersionId + ); + } + return true; + }, + }, + data() { + return { + allVersions: [], + }; + }, +}; |