Use same lock values as mobile clients
[ProtonMail-WebClient.git] / packages / shared / lib / api / docs.ts
blob8acefb2996cd35740370707eba88b3541049e7f0
1 export enum DocsApiErrorCode {
2     CommitIdOutOfSync = 250_000,
5 export const getDocumentMeta = (volumeId: string, linkId: string) => ({
6     method: 'get',
7     url: `docs/volumes/${volumeId}/documents/${linkId}/meta`,
8 });
10 export const getCommitData = (volumeId: string, linkId: string, commitId: string) => ({
11     method: 'get',
12     url: `docs/volumes/${volumeId}/documents/${linkId}/commits/${commitId}`,
13     output: 'raw',
14 });
16 export const seedInitialCommit = (volumeId: string, linkId: string, data: Uint8Array) => ({
17     method: 'post',
18     url: `docs/volumes/${volumeId}/documents/${linkId}/seed-initial-commit`,
19     input: 'protobuf',
20     data,
21 });
23 export const lockDocument = (volumeId: string, linkId: string, fetchCommitId?: string) => ({
24     method: 'post',
25     url: `docs/volumes/${volumeId}/documents/${linkId}/lock`,
26     data: {
27         FetchCommitID: fetchCommitId,
28     },
29     output: 'raw',
30     silence: true,
31 });
33 export const squashCommit = (volumeId: string, linkId: string, commitId: string, data: Uint8Array) => ({
34     method: 'put',
35     url: `docs/volumes/${volumeId}/documents/${linkId}/commits/${commitId}/squash`,
36     input: 'protobuf',
37     data,
38 });
40 export const createDocument = (volumeId: string, linkId: string) => ({
41     method: 'post',
42     url: `docs/volumes/${volumeId}/documents/${linkId}`,
43     data: {},
44 });
46 export const getAllCommentThreadsInDocument = (volumeId: string, linkId: string) => ({
47     method: 'get',
48     url: `docs/volumes/${volumeId}/documents/${linkId}/threads`,
49 });
51 export const getCommentThreadInDocument = (volumeId: string, linkId: string, threadId: string) => ({
52     method: 'get',
53     url: `docs/volumes/${volumeId}/documents/${linkId}/threads/${threadId}`,
54 });
56 type CommonCommentData = {
57     Content: string;
58     AuthorEmail: string;
61 export const createThreadInDocument = (
62     volumeId: string,
63     linkId: string,
64     data: { Mark: string; Comment: CommonCommentData }
65 ) => ({
66     method: 'post',
67     url: `docs/volumes/${volumeId}/documents/${linkId}/threads`,
68     data,
69 });
71 export const deleteThreadInDocument = (volumeId: string, linkId: string, threadId: string) => ({
72     method: 'delete',
73     url: `docs/volumes/${volumeId}/documents/${linkId}/threads/${threadId}`,
74 });
76 export const resolveThreadInDocument = (volumeId: string, linkId: string, threadId: string) => ({
77     method: 'put',
78     url: `docs/volumes/${volumeId}/documents/${linkId}/threads/${threadId}/resolve`,
79 });
81 export const unresolveThreadInDocument = (volumeId: string, linkId: string, threadId: string) => ({
82     method: 'put',
83     url: `docs/volumes/${volumeId}/documents/${linkId}/threads/${threadId}/unresolve`,
84 });
86 export const addCommentToThreadInDocument = (
87     volumeId: string,
88     linkId: string,
89     threadId: string,
90     data: CommonCommentData & { ParentCommentId: string | null }
91 ) => ({
92     method: 'post',
93     url: `docs/volumes/${volumeId}/documents/${linkId}/threads/${threadId}`,
94     data: data,
95 });
97 export const editCommentInThreadInDocument = (
98     volumeId: string,
99     linkId: string,
100     threadId: string,
101     commentId: string,
102     data: CommonCommentData
103 ) => ({
104     method: 'put',
105     url: `docs/volumes/${volumeId}/documents/${linkId}/threads/${threadId}/comments/${commentId}`,
106     data: data,
109 export const deleteCommentInThreadInDocument = (
110     volumeId: string,
111     linkId: string,
112     threadId: string,
113     commentId: string
114 ) => ({
115     method: 'delete',
116     url: `docs/volumes/${volumeId}/documents/${linkId}/threads/${threadId}/comments/${commentId}`,
119 export const createRealtimeValetToken = (volumeId: string, linkId: string, commitId?: string) => ({
120     method: 'post',
121     url: `docs/volumes/${volumeId}/documents/${linkId}/tokens`,
122     silence: true,
123     data: {
124         LastCommitID: commitId ?? null,
125     },