DocSpace-buildtools/packages/asc-web-common/api/portal/index.js

57 lines
1.5 KiB
JavaScript

import { request } from "../client";
export function getShortenedLink(link) {
return request({
method: "put",
url: "/portal/getshortenlink.json",
data: { link },
});
}
const GUEST_INVITE_LINK = "guestInvitationLink";
const USER_INVITE_LINK = "userInvitationLink";
const INVITE_LINK_TTL = "localStorageLinkTtl";
const LINKS_TTL = 6 * 3600 * 1000;
export function getInvitationLink(isGuest) {
const curLinksTtl = localStorage.getItem(INVITE_LINK_TTL);
const now = +new Date();
if (!curLinksTtl) {
localStorage.setItem(INVITE_LINK_TTL, now);
} else if (now - curLinksTtl > LINKS_TTL) {
localStorage.removeItem(GUEST_INVITE_LINK);
localStorage.removeItem(USER_INVITE_LINK);
localStorage.setItem(INVITE_LINK_TTL, now);
}
const link = localStorage.getItem(
isGuest ? GUEST_INVITE_LINK : USER_INVITE_LINK
);
return link
? Promise.resolve(link)
: request({
method: "get",
url: `/portal/users/invite/${isGuest ? 2 : 1}.json`,
}).then((link) => {
localStorage.setItem(
isGuest ? GUEST_INVITE_LINK : USER_INVITE_LINK,
link
);
return Promise.resolve(link);
});
}
export function getInvitationLinks() {
const isGuest = true;
return Promise.all([getInvitationLink(), getInvitationLink(isGuest)]).then(
([userInvitationLinkResp, guestInvitationLinkResp]) => {
return Promise.resolve({
userLink: userInvitationLinkResp,
guestLink: guestInvitationLinkResp,
});
}
);
}