Newer
Older
import { executeApiDelete, executeApiGet, executeApiPost, executeApiPut } from './util';
import { User } from './user';
import { ReducedProject } from './project';
import { Work } from './work';
export interface Team {
id: string;
name: string;
role?: string;
}
export interface TeamRole {
id: string;
name: string;
}
export interface TeamMember extends User {
role: TeamRole;
}
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
export function getTeams(): Promise<Team[]> {
return executeApiGet(`team`, ({ teams }) => teams, "Failed to get teams");
}
export function getTeam(uuid: string): Promise<Team> {
return executeApiGet(`team/${uuid}`, ({ team }) => team, "Failed to get team");
}
export function getTeamMembers(uuid: string): Promise<TeamMember[]> {
return executeApiGet(`team/${uuid}/members`, ({ members }) => members, "Failed to get team members");
}
export function getTeamRoles(uuid: string): Promise<TeamRole[]> {
return executeApiGet(`team/${uuid}/roles`, ({ roles }) => roles, "Failed to get team roles");
}
export function getTeamProjects(uuid: string): Promise<ReducedProject[]> {
return executeApiGet(`team/${uuid}/projects`, ({ projects }) => projects.map((project: any) => ({
...project,
deadline: new Date(project.deadline),
})), "Failed to get team projects");
}
export function getTeamWork(uuid: string): Promise<Work[]> {
return executeApiGet(`team/${uuid}/work`, ({ work }) => work.map((work: any) => ({
...work,
started: new Date(work.started),
finished: work.finished ? new Date(work.finished) : undefined,
})), "Failed to get team work");
}
export function createTeam(name: string): Promise<string> {
return executeApiPost(`team`, { name: name }, ({ id }) => id, "Failed to create team");
}
export function updateTeam(uuid: string, name: string) {
return executeApiPut(`team/${uuid}`, { name: name }, () => {}, "Failed to update team");
}
export function removeTeamMember(team: string, user: string) {
return executeApiDelete(`team/${team}/members/${user}`, () => {}, "Failed to remove team member");
}
export function createTeamRole(team: string, name: string): Promise<TeamRole> {
return executeApiPost(`team/${team}/roles`, { name: name }, ({ role }) => role, "Failed to create team role");
}
export function deleteTeamRole(team: string, role: string) {
return executeApiDelete(`team/${team}/roles/${role}`, () => {}, "Failed to delete team role");
}
export function addTeamMember(team: string, member: { user: string, role: string }) {
return executeApiPost(`team/${team}/members`, member, () => {}, "Failed to add team member");
}
export function updateTeamMember(team: string, member: { user: string, role: string }) {
return executeApiPut(`team/${team}/members`, member, () => {}, "Failed to update team member");
}
export function leaveTeam(team: string) {
return executeApiDelete(`team/${team}`, () => {}, "Failed to leave team");