Files
remark42/web/app/common/api.js
T

170 lines
3.6 KiB
JavaScript

import { siteId, url } from './settings';
import fetcher from './fetcher';
// TODO: rename actions
/* common */
export const logOut = () => fetcher.get({ url: `/auth/logout`, overriddenApiBase: '' });
export const getConfig = () => fetcher.get(`/config`);
// TODO: looks like we can get url from settings here and below
export const getPostComments = ({ sort, url }) => fetcher.get(`/find?url=${url}&sort=${sort}&format=tree`);
export const getLastComments = ({ siteId, max }) => fetcher.get(`/last/${max}?site=${siteId}`);
export const getCommentsCount = ({ urls, siteId }) =>
fetcher.post({
url: `/counts?site=${siteId}`,
body: urls,
});
export const getComment = ({ id }) => fetcher.get(`/id/${id}?url=${url}`);
export const getUserComments = ({ user, limit }) => fetcher.get(`/comments?user=${user}&limit=${limit}`);
export const putCommentVote = ({ id, url, value }) =>
fetcher.put({
url: `/vote/${id}?url=${url}&vote=${value}`,
withCredentials: true,
});
export const addComment = ({ text, pid }) =>
fetcher.post({
url: '/comment',
body: {
text,
locator: {
site: siteId,
url,
},
...(pid ? { pid } : {}),
},
withCredentials: true,
});
export const updateComment = ({ text, id }) =>
fetcher.put({
url: `/comment/${id}?url=${url}`,
body: {
text,
},
withCredentials: true,
});
export const getPreview = ({ text }) =>
fetcher.post({
url: '/preview',
body: {
text,
},
withCredentials: true,
});
export const getUser = () =>
fetcher.get({
url: '/user',
withCredentials: true,
});
/* GDPR */
export const deleteMe = () =>
fetcher.post({
url: `/deleteme?site=${siteId}`,
});
export const approveDeleteMe = token =>
fetcher.get({
url: `/admin/deleteme?token=${token}`,
});
/* admin */
export const pinComment = ({ id, url }) =>
fetcher.put({
url: `/admin/pin/${id}?url=${url}&pin=1`,
withCredentials: true,
});
export const unpinComment = ({ id, url }) =>
fetcher.put({
url: `/admin/pin/${id}?url=${url}&pin=0`,
withCredentials: true,
});
export const setVerifyStatus = ({ id }) =>
fetcher.put({
url: `/admin/verify/${id}?verified=1`,
withCredentials: true,
});
export const removeVerifyStatus = ({ id }) =>
fetcher.put({
url: `/admin/verify/${id}?verified=0`,
withCredentials: true,
});
export const removeComment = ({ id }) =>
fetcher.delete({
url: `/admin/comment/${id}?url=${url}`,
withCredentials: true,
});
export const blockUser = ({ id, ttl }) =>
fetcher.put({
url: ttl === 'permanently' ? `/admin/user/${id}?block=1` : `/admin/user/${id}?block=1&ttl=${ttl}`,
withCredentials: true,
});
export const unblockUser = ({ id }) =>
fetcher.put({
url: `/admin/user/${id}?block=0`,
withCredentials: true,
});
export const getBlocked = () =>
fetcher.get({
url: '/admin/blocked',
withCredentials: true,
});
export const disableComments = () =>
fetcher.put({
url: `/admin/readonly?site=${siteId}&url=${url}&ro=1`,
withCredentials: true,
});
export const enableComments = () =>
fetcher.put({
url: `/admin/readonly?site=${siteId}&url=${url}&ro=0`,
withCredentials: true,
});
export default {
logOut,
getConfig,
getPostComments,
getLastComments,
getCommentsCount,
getComment,
getUserComments,
putCommentVote,
addComment,
updateComment,
getUser,
getPreview,
pinComment,
unpinComment,
setVerifyStatus,
removeVerifyStatus,
removeComment,
blockUser,
unblockUser,
getBlocked,
disableComments,
enableComments,
};