summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2021-03-24 21:26:51 +0100
committerSanto Cariotti <santo@dcariotti.me>2021-03-24 21:26:51 +0100
commitc2ab16d3a89df2075f2e0047766168e8b711fe86 (patch)
treeb512ea64746c20eb0e1863c8eeb04398a2781e24 /src
parent57e1a9e33597f30da0870a9af4d3e9167a7b3367 (diff)
feat: add new repository
Diffstat (limited to 'src')
-rw-r--r--src/store.js15
-rw-r--r--src/views/Repository.vue53
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>