api.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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(name: string, color?: string): Promise<Tag> {
  11. return postJSON(`/tag`, {
  12. body: { name, color },
  13. })
  14. }
  15. export function editTag(
  16. tagId: string,
  17. newTagName: string,
  18. newTagColor?: string
  19. ) {
  20. return postJSON(`/tag/${tagId}/edit`, {
  21. body: { name: newTagName, color: newTagColor },
  22. })
  23. }
  24. export function deleteTag(tagId: string) {
  25. return deleteJSON(`/tag/${tagId}`)
  26. }
  27. export function addProjectsToTag(tagId: string, projectIds: string[]) {
  28. return postJSON(`/tag/${tagId}/projects`, {
  29. body: {
  30. projectIds,
  31. },
  32. })
  33. }
  34. export function removeProjectFromTag(tagId: string, projectId: string) {
  35. return deleteJSON(`/tag/${tagId}/project/${projectId}`)
  36. }
  37. export function removeProjectsFromTag(tagId: string, projectIds: string[]) {
  38. return postJSON(`/tag/${tagId}/projects/remove`, {
  39. body: {
  40. projectIds,
  41. },
  42. })
  43. }
  44. export function archiveProject(projectId: string) {
  45. return postJSON(`/project/${projectId}/archive`)
  46. }
  47. export function deleteProject(projectId: string) {
  48. return deleteJSON(`/project/${projectId}`)
  49. }
  50. export function leaveProject(projectId: string) {
  51. return postJSON(`/project/${projectId}/leave`)
  52. }
  53. export function renameProject(projectId: string, newName: string) {
  54. return postJSON(`/project/${projectId}/rename`, {
  55. body: {
  56. newProjectName: newName,
  57. },
  58. })
  59. }
  60. export function trashProject(projectId: string) {
  61. return postJSON(`/project/${projectId}/trash`)
  62. }
  63. export function unarchiveProject(projectId: string) {
  64. return deleteJSON(`/project/${projectId}/archive`)
  65. }
  66. export function untrashProject(projectId: string) {
  67. return deleteJSON(`/project/${projectId}/trash`)
  68. }