Click to copy link

This commit is contained in:
Ben Grant 2021-04-12 13:06:18 +10:00
parent ad9863f2de
commit 1b40a5919b
3 changed files with 21 additions and 2 deletions

View file

@ -23,7 +23,7 @@ const App = () => {
useEffect(() => { useEffect(() => {
setIsDark(colortheme === 'System' ? darkQuery.matches : colortheme === 'Dark'); setIsDark(colortheme === 'System' ? darkQuery.matches : colortheme === 'Dark');
}, [colortheme]); }, [colortheme, darkQuery.matches]);
return ( return (
<BrowserRouter> <BrowserRouter>

View file

@ -65,6 +65,8 @@ const Event = (props) => {
const [min, setMin] = useState(0); const [min, setMin] = useState(0);
const [max, setMax] = useState(0); const [max, setMax] = useState(0);
const [copied, setCopied] = useState(null);
useEffect(() => { useEffect(() => {
const fetchEvent = async () => { const fetchEvent = async () => {
try { try {
@ -272,7 +274,16 @@ const Event = (props) => {
{(!!event || isLoading) ? ( {(!!event || isLoading) ? (
<> <>
<EventName isLoading={isLoading}>{event?.name}</EventName> <EventName isLoading={isLoading}>{event?.name}</EventName>
<ShareInfo>https://crab.fit/{id}</ShareInfo> <ShareInfo
onClick={() => navigator.clipboard?.writeText(`https://crab.fit/${id}`)
.then(() => {
setCopied('Copied!');
setTimeout(() => setCopied(null), 1000);
})
.catch((e) => console.error('Failed to copy', e))
}
title={!!navigator.clipboard ? 'Click to copy' : ''}
>{copied ?? `https://crab.fit/${id}`}</ShareInfo>
<ShareInfo isLoading={isLoading}> <ShareInfo isLoading={isLoading}>
{!!event?.name && {!!event?.name &&
<>Copy the link to this page, or share via <a href={`mailto:?subject=${encodeURIComponent(`Scheduling ${event?.name}`)}&body=${encodeURIComponent(`Visit this link to enter your availabilities: https://crab.fit/${id}`)}`}>email</a>.</> <>Copy the link to this page, or share via <a href={`mailto:?subject=${encodeURIComponent(`Scheduling ${event?.name}`)}&body=${encodeURIComponent(`Visit this link to enter your availabilities: https://crab.fit/${id}`)}`}>email</a>.</>

View file

@ -89,6 +89,14 @@ export const ShareInfo = styled.p`
border-radius: 3px; border-radius: 3px;
} }
`} `}
${props => props.onClick && `
cursor: pointer;
&:hover {
color: ${props.theme.primaryDark};
}
`}
`; `;
export const Tabs = styled.div` export const Tabs = styled.div`