1 import type { CommentThreadType, CommonPublicCommentData, CreatePublicCommentData } from '../Types/Comments'
2 import type { DocsRoute } from './DocsRoute'
3 import { DocsApiRouteBuilder } from './DocsApiRouteBuilder'
5 /** For public token-based routes */
6 export class DocsApiPublicRouteBuilder extends DocsApiRouteBuilder {
7 private headers: { [key: string]: string }
9 constructor(params: { token: string; linkId: string; headers: { [key: string]: string } }) {
10 super(`docs/urls/${params.token}/documents/${params.linkId}`)
11 this.headers = params.headers
17 url: `${this.basePath}/meta`,
19 headers: this.headers,
23 commit(params: { commitId: string }): DocsRoute {
26 url: `${this.basePath}/commits/${params.commitId}`,
29 headers: this.headers,
33 /** Returns the IDs of all threads in the document */
34 getCommentThreads(): DocsRoute {
37 url: `${this.basePath}/threads`,
38 headers: this.headers,
42 createThread(params: {
43 data: { Mark: string; Comment: CreatePublicCommentData; Type: CommentThreadType }
47 url: `${this.basePath}/threads`,
49 headers: this.headers,
55 data: CreatePublicCommentData & { ParentCommentId: string | null }
59 url: `${this.basePath}/threads/${params.threadId}`,
61 headers: this.headers,
65 editComment(params: { threadId: string; commentId: string; data: CommonPublicCommentData }): DocsRoute {
68 url: `${this.basePath}/threads/${params.threadId}/comments/${params.commentId}`,
70 headers: this.headers,
74 getThread(params: { threadId: string }): DocsRoute {
77 url: `${this.basePath}/threads/${params.threadId}`,
78 headers: this.headers,
82 resolveThread(params: { threadId: string }): DocsRoute {
85 url: `${this.basePath}/threads/${params.threadId}/resolve`,
86 headers: this.headers,
90 deleteThread(params: { threadId: string }): DocsRoute {
93 url: `${this.basePath}/threads/${params.threadId}`,
97 unresolveThread(params: { threadId: string }): DocsRoute {
100 url: `${this.basePath}/threads/${params.threadId}/unresolve`,
101 headers: this.headers,
105 changeSuggestionState(params: { threadId: string; action: 'accept' | 'reject' | 'reopen' }): DocsRoute {
108 url: `${this.basePath}/threads/${params.threadId}/suggestion/${params.action}`,
109 headers: this.headers,
113 deleteComment(params: { threadId: string; commentId: string }): DocsRoute {
116 url: `${this.basePath}/threads/${params.threadId}/comments/${params.commentId}`,
117 headers: this.headers,
121 createRealtimeValetToken(params: { commitId?: string }): DocsRoute {
124 url: `${this.basePath}/tokens`,
125 data: { LastCommitID: params.commitId ?? null },
127 headers: this.headers,