import urljoin from 'url-join'; import { SubscriptionStatusType } from '~/interfaces/subscription'; import { toastError } from '../util/apiNotification'; import { apiv3Post, apiv3Put } from '../util/apiv3-client'; export const toggleSubscribe = async(pageId: string, currentStatus: SubscriptionStatusType | undefined): Promise => { try { const newStatus = currentStatus === SubscriptionStatusType.SUBSCRIBE ? SubscriptionStatusType.UNSUBSCRIBE : SubscriptionStatusType.SUBSCRIBE; await apiv3Put('/page/subscribe', { pageId, status: newStatus }); } catch (err) { toastError(err); } }; export const toggleLike = async(pageId: string, currentValue?: boolean): Promise => { try { await apiv3Put('/page/likes', { pageId, bool: !currentValue }); } catch (err) { toastError(err); } }; export const toggleBookmark = async(pageId: string, currentValue?: boolean): Promise => { try { await apiv3Put('/bookmarks', { pageId, bool: !currentValue }); } catch (err) { toastError(err); } }; export const bookmark = async(pageId: string): Promise => { try { await apiv3Put('/bookmarks', { pageId, bool: true }); } catch (err) { toastError(err); } }; export const unbookmark = async(pageId: string): Promise => { try { await apiv3Put('/bookmarks', { pageId, bool: false }); } catch (err) { toastError(err); } }; export const exportAsMarkdown = (pageId: string, revisionId: string, format: string): void => { const url = new URL(urljoin(window.location.origin, '_api/v3/page/export', pageId)); url.searchParams.append('format', format); url.searchParams.append('revisionId', revisionId); window.location.href = url.href; }; /** * send request to fix broken paths caused by unexpected events such as server shutdown while renaming page paths */ export const resumeRenameOperation = async(pageId: string): Promise => { await apiv3Post('/pages/resume-rename', { pageId }); };