add project members to project show page

This commit is contained in:
Gregor Vostrak
2024-04-10 03:06:48 +02:00
parent 5293bc7a05
commit b94c159af0
19 changed files with 731 additions and 46 deletions

View File

@@ -0,0 +1,71 @@
import { defineStore } from 'pinia';
import { api } from '../../../openapi.json.client';
import { computed, ref } from 'vue';
import type {
CreateProjectMemberBody,
ProjectMember,
ProjectMemberResponse,
} from '@/utils/api';
import { getCurrentOrganizationId } from '@/utils/useUser';
export const useProjectMembersStore = defineStore('project-members', () => {
const projectMemberResponse = ref<ProjectMemberResponse | null>(null);
async function fetchProjectMembers(projectId: string) {
const organization = getCurrentOrganizationId();
if (organization) {
projectMemberResponse.value = await api.getProjectMembers({
params: {
organization: organization,
project: projectId,
},
});
}
}
async function createProjectMember(
projectId: string,
projectMemberBody: CreateProjectMemberBody
) {
const organization = getCurrentOrganizationId();
if (organization) {
await api.createProjectMember(projectMemberBody, {
params: {
organization: organization,
project: projectId,
},
});
await fetchProjectMembers(projectId);
}
}
async function deleteProjectMember(
projectId: string,
projectMemberId: string
) {
const organizationId = getCurrentOrganizationId();
if (organizationId) {
await api.deleteProjectMember(
{},
{
params: {
organization: organizationId,
projectMember: projectMemberId,
},
}
);
await fetchProjectMembers(projectId);
}
}
const projectMembers = computed<ProjectMember[]>(
() => projectMemberResponse.value?.data || []
);
return {
projectMembers,
fetchProjectMembers,
createProjectMember,
deleteProjectMember,
};
});