-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProjectToken.tsx
60 lines (54 loc) · 1.54 KB
/
ProjectToken.tsx
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
import React, { useEffect, useState } from 'react';
import { Input, Button, Box, Loader } from '@wix/design-system';
import * as Icons from '@wix/wix-ui-icons-common';
import { useEmbeds } from '../hooks/wix-embeds.js';
type MixpanelEmbeds = {
projectToken: string;
};
export default function ProjectToken() {
const { embedScript, getEmbeddedScript } = useEmbeds<MixpanelEmbeds>();
const [projectToken, setProjectToken] = useState<string>('');
useEffect(() => {
setProjectToken(getEmbeddedScript.data?.projectToken || '');
}, [getEmbeddedScript.data]);
const ButtonContent = () => {
if (embedScript.isLoading) {
return <Loader size="tiny" />;
}
if (!getEmbeddedScript.data?.projectToken) {
return (
<Box gap={1}>
Activate
<Icons.GetStarted />
</Box>
);
} else {
return <>Update</>;
}
};
return (
<Box gap={3} marginTop={3}>
{getEmbeddedScript.isLoading ? (
<Loader size="small" />
) : (
<>
<Input
disabled={embedScript.isLoading}
placeholder={'project-token'}
value={projectToken}
onChange={(e) => setProjectToken(e.currentTarget.value)}
/>
<Button
disabled={
getEmbeddedScript.data?.projectToken === projectToken ||
projectToken.length !== 32
}
onClick={() => embedScript.mutate({ projectToken })}
>
<ButtonContent />
</Button>
</>
)}
</Box>
);
}