bravo68web-portfolio-nextjs/components/discord-activity.jsx

131 lines
3.4 KiB
React
Raw Permalink Normal View History

import React, { useEffect, useState } from "react";
import { DicordActivityStyle } from "./discord-activity.style";
import { useLanyard } from "react-use-lanyard";
2022-06-16 07:20:28 +00:00
import { discord_id } from "config";
2023-06-12 08:03:13 +00:00
import DiscordParser from "../libs/discord-parser";
const customStatus = [
2023-06-12 08:03:13 +00:00
"Searching for Cat Girls",
"Watching Anime",
"Sleeping",
"Studying",
];
export default function DiscordActivity() {
2023-06-12 08:03:13 +00:00
const statusPicker = () => {
return customStatus[Math.floor(Math.random() * customStatus.length)];
};
const { loading, status } = useLanyard({
userId: discord_id,
socket: true,
});
const [pickedStatus] = useState(statusPicker());
2022-03-31 07:50:45 +00:00
2023-06-12 08:03:13 +00:00
const [parsedStatus, setParsedStatus] = useState(null);
2023-06-12 08:03:13 +00:00
useEffect(() => {
if (!loading) {
setParsedStatus(DiscordParser(status));
}
}, [status, loading]);
2023-11-27 14:36:33 +00:00
if (!loading && parsedStatus && status.discord_status !== "offline" && parsedStatus.activity) {
2023-06-12 08:03:13 +00:00
return (
<DicordActivityStyle>
<div className="discord-icons">
<div className="discord-large-icon">
2023-06-13 05:07:09 +00:00
<img
src={parsedStatus.activity.assets.large_image} alt="discord large image"
/>
2023-06-12 08:03:13 +00:00
</div>
<div className="discord-small-icon">
<img
2023-06-13 05:07:09 +00:00
src={parsedStatus.activity.assets.small_image} alt="discord small image"
2023-06-12 08:03:13 +00:00
/>
</div>
</div>
<div className="discord-messageBox">
<div className="discord-message-application">
<b>
2023-11-27 14:36:33 +00:00
{parsedStatus.discord.username}
2023-06-12 08:03:13 +00:00
</b>
</div>
<div className="discord-message-activity">
<b>{parsedStatus.activity.details ?? "-------"}</b>
2023-06-12 08:03:13 +00:00
</div>
<br />
<div className="discord-message-files">
<b>{parsedStatus.activity.state ?? parsedStatus.activity.name}</b>
2023-06-12 08:03:13 +00:00
</div>
</div>
</DicordActivityStyle>
);
2023-11-27 14:36:33 +00:00
} else if (!loading && parsedStatus && status.discord_status !== "offline") {
return (
<DicordActivityStyle>
<div className="discord-icons">
<div className="discord-large-icon">
<img
2024-01-01 06:29:07 +00:00
src={parsedStatus?.discord?.avatar_url} alt="discord large image"
2023-11-27 14:36:33 +00:00
/>
</div>
<div className="discord-small-icon">
<img
2024-01-01 06:29:07 +00:00
src={"/images/" + parsedStatus?.discord?.discord_status + ".png"} alt="discord small image"
2023-11-27 14:36:33 +00:00
/>
</div>
</div>
<div className="discord-messageBox">
<div className="discord-message-application">
<b>
2024-01-01 06:29:07 +00:00
{parsedStatus?.discord?.username}
2023-11-27 14:36:33 +00:00
</b>
</div>
<div className="discord-message-activity">
2024-01-01 06:29:07 +00:00
<b>{parsedStatus?.discord?.discord_status}</b>
2023-11-27 14:36:33 +00:00
</div>
<br />
<div className="discord-message-files">
<b>is Available</b>
</div>
</div>
</DicordActivityStyle>
);
}
else {
2023-06-12 08:03:13 +00:00
let restData = {
2023-11-27 14:36:33 +00:00
username: "bravo68web",
2023-06-12 08:03:13 +00:00
public_flags: 64,
id: "457039372009865226",
2023-11-27 14:36:33 +00:00
avatar: "b9e91dcc8e658eb1ebf24299b7bec733",
2023-06-12 08:03:13 +00:00
};
2022-03-31 07:50:45 +00:00
2023-06-12 08:03:13 +00:00
return (
<DicordActivityStyle>
<div className="discord-icons">
<div className="discord-large-icon">
<img src={"/images/default_game.jpg"} />
</div>
<div className="discord-small-icon">
<img src={"/images/" + "offline" + ".png"} alt="" />
</div>
</div>
<div className="discord-messageBox">
<div className="discord-message-application">
<b>
2023-11-27 14:36:33 +00:00
{restData.username}
2023-06-12 08:03:13 +00:00
</b>
</div>
<div className="discord-message-activity">
<b>is Offline</b>
</div>
<br />
<div className="discord-message-files">
<b>{pickedStatus}</b>
</div>
</div>
</DicordActivityStyle>
);
}
}