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 | |
| parent | 57e1a9e33597f30da0870a9af4d3e9167a7b3367 (diff) | |
feat: add new repository
| -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> | 
