diff options
author | Santo Cariotti <santo@dcariotti.me> | 2021-03-24 21:26:51 +0100 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2021-03-24 21:26:51 +0100 |
commit | c2ab16d3a89df2075f2e0047766168e8b711fe86 (patch) | |
tree | b512ea64746c20eb0e1863c8eeb04398a2781e24 /src | |
parent | 57e1a9e33597f30da0870a9af4d3e9167a7b3367 (diff) |
feat: add new repository
Diffstat (limited to 'src')
-rw-r--r-- | src/store.js | 15 | ||||
-rw-r--r-- | src/views/Repository.vue | 53 |
2 files changed, 67 insertions, 1 deletions
diff --git a/src/store.js b/src/store.js index 1483402..51dfc91 100644 --- a/src/store.js +++ b/src/store.js @@ -134,6 +134,21 @@ export default new Vuex.Store({ async set_committer({commit}, avatar) { commit('load_committer_avatar', avatar); }, + // Add new repository + async add_repo({commit}, payload) { + commit('loading_state', true) + let res + await fetch(`${this.state.api}/repo/`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(payload), + }) + .then(async response => { + res = await response.json() + }) + commit('loading_state', false) + return res + }, // Set loading state async set_loading({commit}, status) { commit('loading_state', status); diff --git a/src/views/Repository.vue b/src/views/Repository.vue index 0b9e2cf..abb40a9 100644 --- a/src/views/Repository.vue +++ b/src/views/Repository.vue @@ -21,6 +21,20 @@ :committer="emails[i.committer_email]" :expand="true" ) + section(v-else) + b-modal#new-repo( + @ok="add_new_repo()" + ok-title="Add" + ok-variant="outline-success" + cancel-variant="outline-dark" + ) + <template #modal-title>Add {{ user }}/{{ name }} on Gico!</template> + b-form-group(label="Insert the branch name") + b-form-input(v-model="form.branch" placeholder="main") + .commit.no-hover + b-button(variant="outline-success" v-b-modal.new-repo) + | Add this repository on Gico + i.fas.fa-plus </template> <script> @@ -36,7 +50,9 @@ export default { }, data() { return { - error404: false + form: { + branch: undefined + } } }, async mounted() { @@ -55,5 +71,40 @@ export default { return this.$store.getters.emails; }, }, + methods: { + add_new_repo() { + this.$store.dispatch('add_repo', { + url: `github.com/${this.user}/${this.name}`, + branch: this.form.branch || "main" + }).then(response => { + if(response.detail) { + this.$bvToast.toast(response.detail, { + title: 'Error!', + autoHideDelay: 5000, + variant: 'danger', + appendToast: true + }) + } else if(response.id) { + this.$bvToast.toast(response.url, { + title: 'Repository created!', + autoHideDelay: 5000, + variant: 'success', + appendToast: true + }) + window.setTimeout(() => { + window.location.href="/repo/"+response.url + }, 1000) + } else { + this.$bvToast.toast("", { + title: 'Error!', + autoHideDelay: 5000, + variant: 'danger', + appendToast: true + }) + } + }) + + } + } } </script> |