-
-
Notifications
You must be signed in to change notification settings - Fork 656
/
OutdatedSdksBanner.tsx
80 lines (75 loc) · 2.81 KB
/
OutdatedSdksBanner.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { Banner } from '../Banner/Banner';
import type { IBanner } from 'interfaces/banner';
import { useOutdatedSdks } from 'hooks/api/getters/useOutdatedSdks/useOutdatedSdks';
import { Link } from 'react-router-dom';
import { styled } from '@mui/material';
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
const StyledList = styled('ul')({ margin: 0 });
export const OutdatedSdksBanner = () => {
const {
data: { sdks },
} = useOutdatedSdks();
const { trackEvent } = usePlausibleTracker();
const applicationClickedWithVersion = (sdkVersion: string) => {
trackEvent('sdk-banner', {
props: {
eventType: `banner application clicked`,
sdkVersion: sdkVersion,
},
});
};
const bannerClicked = () => {
trackEvent('sdk-banner', {
props: {
eventType: 'banner clicked',
},
});
};
const outdatedSdksBanner: IBanner = {
message: `We noticed that an outdated SDK version is connected to this Unleash instance.`,
variant: 'warning',
link: 'dialog',
linkText: 'Please update those versions',
linkClicked: bannerClicked,
dialogTitle: 'Outdated SDKs',
dialog: (
<>
{sdks.map((item) => (
<div key={item.sdkVersion}>
<span>{item.sdkVersion}</span>
<StyledList>
{item.applications.map((application) => (
<li
key={application}
onClick={() => {
applicationClickedWithVersion(
item.sdkVersion,
);
}}
onKeyDown={() => {
applicationClickedWithVersion(
item.sdkVersion,
);
}}
>
<Link to={`/applications/${application}`}>
{application}
</Link>
</li>
))}
</StyledList>
</div>
))}
</>
),
};
return (
<>
<ConditionallyRender
condition={sdks.length > 0}
show={<Banner banner={outdatedSdksBanner} />}
/>
</>
);
};