api.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { Tag } from '../../../../../app/src/Features/Tags/types'
  2. import {
  3. GetProjectsResponseBody,
  4. Sort,
  5. } from '../../../../../types/project/dashboard/api'
  6. import { deleteJSON, postJSON } from '../../../infrastructure/fetch-json'
  7. export function getProjects(sortBy: Sort): Promise<GetProjectsResponseBody> {
  8. return postJSON('/api/project', { body: { sort: sortBy } })
  9. }
  10. export function createTag(tagName: string): Promise<Tag> {
  11. return postJSON(`/tag`, {
  12. body: { name: tagName },
  13. })
  14. }
  15. export function renameTag(tagId: string, newTagName: string) {
  16. return postJSON(`/tag/${tagId}/rename`, {
  17. body: { name: newTagName },
  18. })
  19. }
  20. export function deleteTag(tagId: string) {
  21. return deleteJSON(`/tag/${tagId}`)
  22. }
  23. export function addProjectsToTag(tagId: string, projectIds: string[]) {
  24. return postJSON(`/tag/${tagId}/projects`, {
  25. body: {
  26. projectIds,
  27. },
  28. })
  29. }
  30. export function removeProjectFromTag(tagId: string, projectId: string) {
  31. return deleteJSON(`/tag/${tagId}/project/${projectId}`)
  32. }
  33. export function removeProjectsFromTag(tagId: string, projectIds: string[]) {
  34. return deleteJSON(`/tag/${tagId}/projects`, {
  35. body: {
  36. projectIds,
  37. },
  38. })
  39. }
  40. export function archiveProject(projectId: string) {
  41. return postJSON(`/project/${projectId}/archive`)
  42. }
  43. export function deleteProject(projectId: string) {
  44. return deleteJSON(`/project/${projectId}`)
  45. }
  46. export function leaveProject(projectId: string) {
  47. return postJSON(`/project/${projectId}/leave`)
  48. }
  49. export function renameProject(projectId: string, newName: string) {
  50. return postJSON(`/project/${projectId}/rename`, {
  51. body: {
  52. newProjectName: newName,
  53. },
  54. })
  55. }
  56. export function trashProject(projectId: string) {
  57. return postJSON(`/project/${projectId}/trash`)
  58. }
  59. export function unarchiveProject(projectId: string) {
  60. return deleteJSON(`/project/${projectId}/archive`)
  61. }
  62. export function untrashProject(projectId: string) {
  63. return deleteJSON(`/project/${projectId}/trash`)
  64. }