1
0
2024-06-17 13:41:37 +02:00

79 lines
2.1 KiB
Vue

<template>
<CreateEdit
:title="$t('project.share.header')"
:has-primary-action="false"
>
<template v-if="project">
<userTeam
:id="project.id"
:user-is-admin="userIsAdmin"
share-type="user"
type="project"
/>
<userTeam
:id="project.id"
:user-is-admin="userIsAdmin"
share-type="team"
type="project"
/>
</template>
<LinkSharing
v-if="linkSharingEnabled"
:project-id="projectId"
class="mt-4"
/>
</CreateEdit>
</template>
<script lang="ts">
export default {name: 'ProjectSettingShare'}
</script>
<script lang="ts" setup>
import {ref, computed, watchEffect} from 'vue'
import {useRoute} from 'vue-router'
import {useI18n} from 'vue-i18n'
import {useTitle} from '@vueuse/core'
import ProjectService from '@/services/project'
import ProjectModel from '@/models/project'
import type {IProject} from '@/modelTypes/IProject'
import {RIGHTS} from '@/constants/rights'
import CreateEdit from '@/components/misc/CreateEdit.vue'
import LinkSharing from '@/components/sharing/LinkSharing.vue'
import userTeam from '@/components/sharing/userTeam.vue'
import {useBaseStore} from '@/stores/base'
import {useConfigStore} from '@/stores/config'
const {t} = useI18n({useScope: 'global'})
const project = ref<IProject>()
const title = computed(() => project.value?.title
? t('project.share.title', {project: project.value.title})
: '',
)
useTitle(title)
const configStore = useConfigStore()
const linkSharingEnabled = computed(() => configStore.linkSharingEnabled)
const userIsAdmin = computed(() => project?.value?.maxRight === RIGHTS.ADMIN)
async function loadProject(projectId: number) {
const projectService = new ProjectService()
const newProject = await projectService.get(new ProjectModel({id: projectId}))
await useBaseStore().handleSetCurrentProject({project: newProject})
project.value = newProject
}
const route = useRoute()
const projectId = computed(() => route.params.projectId !== undefined
? parseInt(route.params.projectId as string)
: undefined,
)
watchEffect(() => projectId.value !== undefined && loadProject(projectId.value))
</script>