gitscope
https://dev.kronoz.win/r/marzneshin.git
app/dashboard/src/components/online-badge/index.tsx · v0.2.1
Source
1 bf7c131 Mardin 2y ago import {FC} from 'react';
2 a47eb4c Dawsh 2y ago
3 a47eb4c Dawsh 2y ago type UserStatusProps = {
4 a47eb4c Dawsh 2y ago lastOnline?: string | null;
5 a47eb4c Dawsh 2y ago };
6 a47eb4c Dawsh 2y ago
7 a47eb4c Dawsh 2y ago const convertDateFormat = (lastOnline: string | null | undefined): number | null => {
8 bf7c131 Mardin 2y ago if (!lastOnline) {
9 bf7c131 Mardin 2y ago return null;
10 bf7c131 Mardin 2y ago }
11 a47eb4c Dawsh 2y ago
12 bf7c131 Mardin 2y ago const date = new Date(lastOnline + 'Z');
13 bf7c131 Mardin 2y ago return Math.floor(date.getTime() / 1000);
14 a47eb4c Dawsh 2y ago };
15 a47eb4c Dawsh 2y ago
16 a47eb4c Dawsh 2y ago export const OnlineBadge: FC<UserStatusProps> = ({lastOnline}) => {
17 bf7c131 Mardin 2y ago const currentTimeInSeconds = Math.floor(Date.now() / 1000);
18 bf7c131 Mardin 2y ago const unixTime = convertDateFormat(lastOnline);
19 a47eb4c Dawsh 2y ago
20 bf7c131 Mardin 2y ago if (typeof lastOnline === 'undefined' || lastOnline === null) {
21 bf7c131 Mardin 2y ago return <div className="circle pulse orange"></div>;
22 bf7c131 Mardin 2y ago }
23 a47eb4c Dawsh 2y ago
24 bf7c131 Mardin 2y ago const timeDifferenceInSeconds = unixTime ? currentTimeInSeconds - unixTime : Infinity;
25 a47eb4c Dawsh 2y ago
26 bf7c131 Mardin 2y ago if (timeDifferenceInSeconds > 0 && timeDifferenceInSeconds <= 60) {
27 bf7c131 Mardin 2y ago return <div className="circle pulse green"></div>;
28 bf7c131 Mardin 2y ago }
29 a47eb4c Dawsh 2y ago
30 bf7c131 Mardin 2y ago return <div className="circle pulse red"></div>;
31 a47eb4c Dawsh 2y ago };