Edit namespace now uses service/model
All checks were successful
the build was successful

This commit is contained in:
konrad 2019-02-24 12:34:47 +01:00
parent f77570bc84
commit a8c1a22449
Signed by: konrad
GPG Key ID: F40E70337AB24C9B

View File

@ -41,9 +41,8 @@
</div>
</div>
<manageusers :id="namespace.id" type="namespace" :userIsAdmin="userIsAdmin" />
<manageteams :id="namespace.id" type="namespace" :userIsAdmin="userIsAdmin" />
<component :is="manageUsersComponent" :id="namespace.id" type="namespace" :userIsAdmin="userIsAdmin"></component>
<component :is="manageTeamsComponent" :id="namespace.id" type="namespace" :userIsAdmin="userIsAdmin"></component>
<modal
v-if="showDeleteModal"
@ -59,21 +58,26 @@
<script>
import auth from '../../auth'
import router from '../../router'
import {HTTP} from '../../http-common'
import message from '../../message'
import manageusers from '../sharing/user'
import manageteams from '../sharing/team'
import NamespaceService from '../../services/namespace'
import NamespaceModel from '../../models/namespace'
export default {
name: "EditNamespace",
data() {
return {
namespace: {title: '', description:''},
namespaceService: NamespaceService,
namespace: NamespaceModel,
error: '',
loading: false,
showDeleteModal: false,
user: auth.user,
userIsAdmin: false,
manageUsersComponent: '',
manageTeamsComponent: '',
}
},
components: {
@ -89,6 +93,7 @@
this.namespace.id = this.$route.params.id
},
created() {
this.namespaceService = new NamespaceService()
this.loadNamespace()
},
watch: {
@ -97,66 +102,47 @@
},
methods: {
loadNamespace() {
const cancel = message.setLoading(this)
HTTP.get(`namespaces/` + this.$route.params.id, {headers: {'Authorization': 'Bearer ' + localStorage.getItem('token')}})
.then(response => {
this.$set(this, 'namespace', response.data)
if (response.data.owner.id === this.user.infos.id) {
let namespace = new NamespaceModel({id: this.$route.params.id})
this.namespaceService.get(namespace)
.then(r => {
this.$set(this, 'namespace', r)
if (r.owner.id === this.user.infos.id) {
this.userIsAdmin = true
}
cancel()
// This will trigger the dynamic loading of components once we actually have all the data to pass to them
this.manageTeamsComponent = 'manageteams'
this.manageUsersComponent = 'manageusers'
})
.catch(e => {
cancel()
this.handleError(e)
message.error(e, this)
})
},
submit() {
const cancel = message.setLoading(this)
HTTP.post(`namespaces/` + this.$route.params.id, this.namespace, {headers: {'Authorization': 'Bearer ' + localStorage.getItem('token')}})
.then(response => {
this.namespaceService.update(this.namespace)
.then(r => {
// Update the namespace in the parent
for (const n in this.$parent.namespaces) {
if (this.$parent.namespaces[n].id === response.data.id) {
response.data.lists = this.$parent.namespaces[n].lists
this.$set(this.$parent.namespaces, n, response.data)
if (this.$parent.namespaces[n].id === r.id) {
r.lists = this.$parent.namespaces[n].lists
this.$set(this.$parent.namespaces, n, r)
}
}
this.handleSuccess({message: 'The namespace was successfully updated.'})
cancel()
})
message.success({message: 'The namespace was successfully updated.'}, this)
})
.catch(e => {
cancel()
this.handleError(e)
message.error(e, this)
})
},
deleteNamespace() {
const cancel = message.setLoading(this)
HTTP.delete(`namespaces/` + this.$route.params.id, {headers: {'Authorization': 'Bearer ' + localStorage.getItem('token')}})
.then(() => {
this.handleSuccess({message: 'The namespace was successfully deleted.'})
cancel()
this.namespaceService.delete(this.namespace)
.then(() => {
message.success({message: 'The namespace was successfully deleted.'}, this)
router.push({name: 'home'})
})
.catch(e => {
cancel()
this.handleError(e)
message.error(e, this)
})
},
handleError(e) {
message.error(e, this)
},
handleSuccess(e) {
message.success(e, this)
}
}
}
}
</script>
<style scoped>
.bigbuttons{
margin-top: 0.5rem;
}
</style>
</script>