overleaf/services/chat/test/acceptance/js/helpers/ChatClient.js
Thomas 4cc888ce2f Merge pull request #6996 from overleaf/tm-expired-project-chat
Add endpoints to chat for deleting expired project chat data

GitOrigin-RevId: e4eb7c7a79472bb116b2095a76c870e204590288
2022-03-17 09:03:41 +00:00

114 lines
2.3 KiB
JavaScript

const request = require('request').defaults({
baseUrl: 'http://localhost:3010',
})
async function asyncRequest(options) {
return new Promise((resolve, reject) => {
request(options, (err, response, body) => {
if (err) {
reject(err)
} else {
resolve({ response, body })
}
})
})
}
async function sendGlobalMessage(projectId, userId, content) {
return asyncRequest({
method: 'post',
url: `/project/${projectId}/messages`,
json: {
user_id: userId,
content,
},
})
}
async function getGlobalMessages(projectId) {
return asyncRequest({
method: 'get',
url: `/project/${projectId}/messages`,
json: true,
})
}
async function sendMessage(projectId, threadId, userId, content) {
return asyncRequest({
method: 'post',
url: `/project/${projectId}/thread/${threadId}/messages`,
json: {
user_id: userId,
content,
},
})
}
async function getThreads(projectId) {
return asyncRequest({
method: 'get',
url: `/project/${projectId}/threads`,
json: true,
})
}
async function resolveThread(projectId, threadId, userId) {
return asyncRequest({
method: 'post',
url: `/project/${projectId}/thread/${threadId}/resolve`,
json: {
user_id: userId,
},
})
}
async function reopenThread(projectId, threadId) {
return asyncRequest({
method: 'post',
url: `/project/${projectId}/thread/${threadId}/reopen`,
})
}
async function deleteThread(projectId, threadId) {
return asyncRequest({
method: 'delete',
url: `/project/${projectId}/thread/${threadId}`,
})
}
async function editMessage(projectId, threadId, messageId, content) {
return asyncRequest({
method: 'post',
url: `/project/${projectId}/thread/${threadId}/messages/${messageId}/edit`,
json: {
content,
},
})
}
async function deleteMessage(projectId, threadId, messageId) {
return asyncRequest({
method: 'delete',
url: `/project/${projectId}/thread/${threadId}/messages/${messageId}`,
})
}
async function destroyProject(projectId) {
return asyncRequest({
method: 'delete',
url: `/project/${projectId}`,
})
}
module.exports = {
sendGlobalMessage,
getGlobalMessages,
sendMessage,
getThreads,
resolveThread,
reopenThread,
deleteThread,
editMessage,
deleteMessage,
destroyProject,
}