1
0

feat: port namespace store to pinia

This commit is contained in:
Dominik Pschenitschni
2022-09-02 11:15:29 +02:00
parent 9474240cb9
commit 093ab766d4
21 changed files with 214 additions and 166 deletions

View File

@ -22,35 +22,36 @@ export default { name: 'namespace-setting-archive' }
</script>
<script setup lang="ts">
import {watch, ref, computed, shallowReactive} from 'vue'
import {watch, ref, computed, shallowReactive, type PropType} from 'vue'
import {useRouter} from 'vue-router'
import {useStore} from '@/store'
import {useI18n} from 'vue-i18n'
import {success} from '@/message'
import {useTitle} from '@/composables/useTitle'
import {useNamespaceStore} from '@/stores/namespaces'
import NamespaceService from '@/services/namespace'
import NamespaceModel from '@/models/namespace'
import type {INamespace} from '@/modelTypes/INamespace'
const props = defineProps({
namespaceId: {
type: Number,
type: Number as PropType<INamespace['id']>,
required: true,
},
})
const store = useStore()
const router = useRouter()
const {t} = useI18n({useScope: 'global'})
const namespaceStore = useNamespaceStore()
const namespaceService = shallowReactive(new NamespaceService())
const namespace = ref(new NamespaceModel())
const namespace = ref<INamespace>(new NamespaceModel())
watch(
() => props.namespaceId,
async () => {
namespace.value = store.getters['namespaces/getNamespaceById'](props.namespaceId)
namespace.value = namespaceStore.getNamespaceById(props.namespaceId) || new NamespaceModel()
// FIXME: ressouce should be loaded in store
namespace.value = await namespaceService.get({id: props.namespaceId})
@ -75,7 +76,7 @@ async function archiveNamespace() {
...namespace.value,
isArchived,
})
store.commit('namespaces/setNamespaceById', archivedNamespace)
namespaceStore.setNamespaceById(archivedNamespace)
success({
message: isArchived
? t('namespace.archive.success')

View File

@ -12,7 +12,7 @@
</modal>
</template>
<script lang="ts">
<script lang="ts">
export default { name: 'namespace-setting-delete' }
</script>
@ -21,11 +21,12 @@ import {ref, computed, watch, shallowReactive} from 'vue'
import {useI18n} from 'vue-i18n'
import {useRouter} from 'vue-router'
import {useStore} from '@/store'
import {useTitle} from '@/composables/useTitle'
import {success} from '@/message'
import {useNamespaceStore} from '@/stores/namespaces'
import NamespaceModel from '@/models/namespace'
import NamespaceService from '@/services/namespace'
import type { INamespace } from '@/modelTypes/INamespace'
const props = defineProps({
namespaceId: {
@ -34,17 +35,17 @@ const props = defineProps({
},
})
const store = useStore()
const router = useRouter()
const {t} = useI18n({useScope: 'global'})
const router = useRouter()
const namespaceStore = useNamespaceStore()
const namespaceService = shallowReactive(new NamespaceService())
const namespace = ref(new NamespaceModel())
const namespace = ref<INamespace>(new NamespaceModel())
watch(
() => props.namespaceId,
async () => {
namespace.value = store.getters['namespaces/getNamespaceById'](props.namespaceId)
namespace.value = namespaceStore.getNamespaceById(props.namespaceId) || new NamespaceModel()
// FIXME: ressouce should be loaded in store
namespace.value = await namespaceService.get({id: props.namespaceId})
@ -61,7 +62,7 @@ const title = computed(() => {
useTitle(title)
async function deleteNamespace() {
await store.dispatch('namespaces/deleteNamespace', namespace.value)
await namespaceStore.deleteNamespace(namespace.value)
success({message: t('namespace.delete.success')})
router.push({name: 'home'})
}

View File

@ -57,7 +57,6 @@
<script lang="ts" setup>
import {nextTick, ref, watch} from 'vue'
import {useStore} from '@/store'
import {success} from '@/message'
import router from '@/router'
@ -70,9 +69,10 @@ import NamespaceService from '@/services/namespace'
import NamespaceModel from '@/models/namespace'
import {useI18n} from 'vue-i18n'
import {useTitle} from '@/composables/useTitle'
import {useNamespaceStore} from '@/stores/namespaces'
const {t} = useI18n({useScope: 'global'})
const store = useStore()
const namespaceStore = useNamespaceStore()
const namespaceService = ref(new NamespaceService())
const namespace = ref(new NamespaceModel())
@ -111,7 +111,7 @@ async function loadNamespace() {
async function save() {
const updatedNamespace = await namespaceService.value.update(namespace.value)
// Update the namespace in the parent
store.commit('namespaces/setNamespaceById', updatedNamespace)
namespaceStore.setNamespaceById(updatedNamespace)
success({message: t('namespace.edit.success')})
router.back()
}