Skip to content
Snippets Groups Projects

Resolve "subscription ended on submit"

Merged Dominik Seeger requested to merge 139-subscription-ended-on-submit into master
3 files
+ 27
12
Compare changes
  • Side-by-side
  • Inline
Files
3
@@ -6,7 +6,7 @@
@@ -6,7 +6,7 @@
Tasks
Tasks
</v-toolbar-title>
</v-toolbar-title>
<v-spacer/>
<v-spacer/>
<v-btn icon @click="getSubscriptions">
<v-btn icon @click="getSubscriptions(false)">
<v-icon v-if="!updating">refresh</v-icon>
<v-icon v-if="!updating">refresh</v-icon>
<v-progress-circular
<v-progress-circular
v-else
v-else
@@ -27,54 +27,65 @@
@@ -27,54 +27,65 @@
</v-card>
</v-card>
</template>
</template>
<script>
<script lang="ts">
 
import Vue from 'vue'
 
import Component from 'vue-class-component'
 
import { Prop } from 'vue-property-decorator'
import { mapGetters, mapActions, mapState } from 'vuex'
import { mapGetters, mapActions, mapState } from 'vuex'
import { UI } from '@/store/modules/ui'
import { UI } from '@/store/modules/ui'
import { actions } from '@/store/actions'
import { actions } from '@/store/actions'
import SubscriptionCreation from '@/components/subscriptions/SubscriptionCreation'
import SubscriptionCreation from '@/components/subscriptions/SubscriptionCreation.vue'
import SubscriptionForList from '@/components/subscriptions/SubscriptionForList'
import SubscriptionForList from '@/components/subscriptions/SubscriptionForList.vue'
import SubscriptionsForStage from '@/components/subscriptions/SubscriptionsForStage'
import SubscriptionsForStage from '@/components/subscriptions/SubscriptionsForStage.vue'
import { Subscriptions } from '@/store/modules/subscriptions'
import { Subscriptions } from '@/store/modules/subscriptions'
export default {
@Component({
 
name: 'subscription-list',
components: {
components: {
SubscriptionsForStage,
SubscriptionsForStage,
SubscriptionForList,
SubscriptionForList,
SubscriptionCreation },
SubscriptionCreation
name: 'subscription-list',
props: {
sidebar: {
type: Boolean,
default: false
}
},
data () {
return {
selectedStage: null,
updating: false
}
},
},
computed: {
})
subscriptions () { return Subscriptions.state.subscriptions },
export default class SubscriptionList extends Vue {
stages () { return Subscriptions.availableStages },
@Prop({type: Boolean, default: false}) sidebar!: boolean
stagesReadable () { return Subscriptions.availableStagesReadable },
showDetail () {
selectedStage = null
return !this.sidebar || (this.sidebar && !UI.state.sideBarCollapsed)
updating = false
}
timer = 0
},
methods: {
get subscriptions () { return Subscriptions.state.subscriptions }
async getSubscriptions () {
get stages () { return Subscriptions.availableStages }
 
get stagesReadable () { return Subscriptions.availableStagesReadable }
 
get showDetail () {
 
return !this.sidebar || (this.sidebar && !UI.state.sideBarCollapsed)
 
}
 
 
async getSubscriptions (silent: boolean) {
 
if (silent === false) {
this.updating = true
this.updating = true
const subscriptions = await Subscriptions.getSubscriptions()
this.updating = false
return subscriptions
}
}
},
const subscriptions = await Subscriptions.getSubscriptions()
created () {
this.updating = false
const typesAndSubscriptions = [actions.updateSubmissionTypes(), Subscriptions.getSubscriptions()]
return subscriptions
Promise.all(typesAndSubscriptions).then(() => {
}
 
 
mounted() {
 
this.timer = setInterval(() => {
 
this.getSubscriptions(true)
 
}, 30 * 1e3)
 
}
 
 
beforeDestroy() {
 
clearInterval(this.timer)
 
}
 
 
created() {
 
const submissionTypes = actions.updateSubmissionTypes()
 
const subscriptions = Subscriptions.getSubscriptions()
 
Promise.all([submissionTypes, subscriptions]).then(() => {
Subscriptions.subscribeToAll()
Subscriptions.subscribeToAll()
Subscriptions.cleanAssignmentsFromSubscriptions()
Subscriptions.cleanAssignmentsFromSubscriptions(true)
})
})
}
}
}
}
Loading