Web: Client: InvitePanel: Fixed disabling external links and generating new ones when external links enabled

This commit is contained in:
Ilya Oleshko 2023-02-01 23:00:32 +03:00
parent f7823f4269
commit 1501d0f537

View File

@ -1,6 +1,6 @@
import MediaDownloadReactSvgUrl from "PUBLIC_DIR/images/media.download.react.svg?url"; import MediaDownloadReactSvgUrl from "PUBLIC_DIR/images/media.download.react.svg?url";
import CopyReactSvgUrl from "PUBLIC_DIR/images/copy.react.svg?url"; import CopyReactSvgUrl from "PUBLIC_DIR/images/copy.react.svg?url";
import React, { useState, useEffect, useRef, memo, useCallback } from "react"; import React, { useState, useEffect, useRef, useCallback } from "react";
import { inject, observer } from "mobx-react"; import { inject, observer } from "mobx-react";
import copy from "copy-to-clipboard"; import copy from "copy-to-clipboard";
@ -30,6 +30,7 @@ const ExternalLinks = ({
shareLinks, shareLinks,
setInvitationLinks, setInvitationLinks,
isOwner, isOwner,
getInfo,
}) => { }) => {
const [linksVisible, setLinksVisible] = useState(false); const [linksVisible, setLinksVisible] = useState(false);
const [actionLinksVisible, setActionLinksVisible] = useState(false); const [actionLinksVisible, setActionLinksVisible] = useState(false);
@ -37,18 +38,22 @@ const ExternalLinks = ({
const inputsRef = useRef(); const inputsRef = useRef();
useEffect(() => {
if (shareLinks[0]?.expirationDate) toggleLinks();
}, [shareLinks]);
const toggleLinks = (e) => { const toggleLinks = (e) => {
let link = null; let link = null;
if (!shareLinks.length) return;
if (roomId === -1) { if (roomId === -1) {
link = shareLinks.find((l) => l.access === +defaultAccess); link = shareLinks.find((l) => l.access === +defaultAccess);
setActiveLink(link); setActiveLink(link);
} else { } else {
setInvitationLinks(roomId, shareLinks[0].id, "Invite", +defaultAccess);
link = shareLinks[0]; link = shareLinks[0];
setActiveLink(shareLinks[0]); !linksVisible ? editLink() : disableLink();
} }
setLinksVisible(!linksVisible); setLinksVisible(!linksVisible);
@ -56,6 +61,23 @@ const ExternalLinks = ({
if (!linksVisible) copyLink(link?.shareLink); if (!linksVisible) copyLink(link?.shareLink);
}; };
const disableLink = () => {
setInvitationLinks(roomId, shareLinks[0].id, "Invite", 0);
setTimeout(() => getInfo(), 100);
};
const editLink = () => {
if (!shareLinks[0].expirationDate) {
setInvitationLinks(
roomId,
shareLinks[0].id,
"Invite",
shareLinks[0].access
);
}
setActiveLink(shareLinks[0]);
};
const onSelectAccess = (access) => { const onSelectAccess = (access) => {
let link = null; let link = null;
if (roomId === -1) { if (roomId === -1) {
@ -84,6 +106,8 @@ const ExternalLinks = ({
} }
}; };
const onCopyLink = () => copyLink(activeLink.shareLink);
const toggleActionLinks = () => { const toggleActionLinks = () => {
setActionLinksVisible(!actionLinksVisible); setActionLinksVisible(!actionLinksVisible);
}; };
@ -151,11 +175,11 @@ const ExternalLinks = ({
> >
<DropDownItem <DropDownItem
label={`${t("SharingPanel:ShareVia")} e-mail`} label={`${t("SharingPanel:ShareVia")} e-mail`}
onClick={() => shareEmail(links[0])} onClick={() => shareEmail(activeLink[0])}
/> />
<DropDownItem <DropDownItem
label={`${t("SharingPanel:ShareVia")} Twitter`} label={`${t("SharingPanel:ShareVia")} Twitter`}
onClick={() => shareTwitter(links[0])} onClick={() => shareTwitter(activeLink[0])}
/> />
</DropDown> </DropDown>
</div> </div>
@ -171,7 +195,7 @@ const ExternalLinks = ({
value={activeLink.shareLink} value={activeLink.shareLink}
isReadOnly isReadOnly
iconName={CopyReactSvgUrl} iconName={CopyReactSvgUrl}
onIconClick={() => copyLink(activeLink.shareLink)} onIconClick={onCopyLink}
hoverColor="#333333" hoverColor="#333333"
iconColor="#A3A9AE" iconColor="#A3A9AE"
/> />