-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathindex.tsx
More file actions
88 lines (82 loc) · 2.52 KB
/
index.tsx
File metadata and controls
88 lines (82 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import {
Button,
Input,
InputWrapper,
Spacer,
Text,
} from "@python-italia/pycon-styleguide";
import posthog from "posthog-js";
import { FormattedMessage } from "react-intl";
import { useCurrentUser } from "~/helpers/use-current-user";
import { useTranslatedMessage } from "~/helpers/use-translated-message";
import { Modal } from "../modal";
import { useLoginState } from "../profile/hooks";
type Props = {
onClose: () => void;
};
export const AddScheduleToCalendarModal = ({ onClose }: Props) => {
const [isLoggedIn] = useLoginState();
const { user } = useCurrentUser({
skip: !isLoggedIn,
});
const link = user?.userScheduleFavouritesCalendarUrl;
let prettyCalendarUrl = "";
if (link) {
const pattern = new URL(link);
const pathname = pattern.pathname;
const data = pathname.replace(
"/schedule/user-schedule-favourites-calendar/",
"",
);
const cacheBuster = Math.random().toString(36).slice(-5);
prettyCalendarUrl = `${location.origin}/schedule/ical/${data}${pattern.search}&v=c${cacheBuster}`;
}
const autoSelectInput = (e: React.MouseEvent<HTMLInputElement>) => {
(e.target as HTMLInputElement).select();
document.execCommand("copy");
posthog.capture("copy-calendar-url");
};
const pleaseWaitMessage = useTranslatedMessage("login.loading");
return (
<Modal
title={<FormattedMessage id="addScheduleToCalendarModal.title" />}
onClose={onClose}
show={true}
actions={
<div className="flex flex-col-reverse md:flex-row gap-6 justify-end items-center">
<Button variant="secondary" onClick={onClose}>
<FormattedMessage id="global.accordion.close" />
</Button>
</div>
}
>
{!isLoggedIn && (
<div>
<Text size={2}>
<FormattedMessage id="addScheduleToCalendarModal.loginRequired" />
</Text>
</div>
)}
{isLoggedIn && (
<div>
<Text size={2}>
<FormattedMessage id="addScheduleToCalendarModal.steps" />
</Text>
<Spacer size="medium" />
<InputWrapper>
<Input
onClick={autoSelectInput}
readOnly={true}
value={user ? prettyCalendarUrl : ""}
placeholder={user ? "" : pleaseWaitMessage}
/>
</InputWrapper>
<Spacer size="thin" />
<Text size={3}>
<FormattedMessage id="addScheduleToCalendarModal.info" />
</Text>
</div>
)}
</Modal>
);
};