bravo68web-portfolio-nextjs/components/skills.jsx

210 lines
8.8 KiB
React
Raw Normal View History

2022-01-18 09:50:39 +00:00
import React, { useEffect, useState } from "react";
import SkillsStyle from "./skills.style";
2022-04-03 15:19:59 +00:00
// import axios from "handlers/axios";
2022-04-01 16:45:30 +00:00
import { APISDK } from "handlers/sdk";
2022-04-03 15:19:59 +00:00
import Box from "@mui/material/Box";
import LinearProgress from "@mui/material/LinearProgress";
// import "mainboard.css";
2022-04-16 11:00:41 +00:00
// import Cursor, { mouseOverEvent, mouseOutEvent } from "./providers/cursor";
2022-04-03 15:19:59 +00:00
// Skill Card templates
2022-04-02 23:42:08 +00:00
import GitHubSkillCard from "./skillComponents/github_user";
import OsuUserSkillCard from "./skillComponents/osu_user";
2022-04-03 15:19:59 +00:00
import TwitterUserSkillCard from "./skillComponents/twitter_user";
2022-04-03 20:26:18 +00:00
import SpotifyTopSkillCard from "./skillComponents/spotify_top_songs";
import WakatimeUserSkillCard from "./skillComponents/wakatime_user";
import HashNodeSkillCard from "./skillComponents/hashnode_inst";
import OsuBestScoresSkillCard from "./skillComponents/osu_bestScores";
import TwitterTweetsSkillCard from "./skillComponents/twitter_tweets";
import WakatimeTopLangSkillCard from "./skillComponents/wakatime_lang";
import LastFMCurrentSkillCard from "./skillComponents/lastfm_current";
2022-04-09 21:05:58 +00:00
import GitHubUserEvtSkillCard from "./skillComponents/github_events";
2022-01-18 09:50:39 +00:00
function Skills() {
2022-03-30 14:37:11 +00:00
const [skills, setSkills] = useState({});
2022-04-01 16:45:30 +00:00
const [loading, setLoading] = useState(true);
2022-04-02 19:52:51 +00:00
async function requestAPIS() {
await APISDK.req();
2022-04-02 23:42:08 +00:00
APISDK.data.logo = {
osu: `https://www.pngkit.com/png/full/345-3451155_osu-logo.png`,
github: `https://www.freepnglogos.com/uploads/512x512-logo/512x512-transparent-logo-github-logo-24.png`,
spotify: `https://www.freepnglogos.com/uploads/spotify-logo-png/spotify-icon-marilyn-scott-0.png`,
hashnode: `https://cdn.hashnode.com/res/hashnode/image/upload/v1611902473383/CDyAuTy75.png?auto=compress`,
discord: `https://www.freepnglogos.com/uploads/discord-logo-png/anthrocon-twitter-quot-discord-user-wanna-21.png`,
2022-04-10 19:01:44 +00:00
wakatime: `/images/brandlogos/WakaTime-logo-vector-01.svg`,
lastfm: "/images/brandlogos/Lastfm-icon-vector-03.svg",
2022-04-03 15:19:59 +00:00
twitter:
"https://www.freepnglogos.com/uploads/twitter-logo-png/twitter-logo-vector-png-clipart-1.png",
2022-04-02 23:42:08 +00:00
};
2022-04-02 19:52:51 +00:00
setSkills(APISDK.data);
setLoading(false);
}
2022-04-01 16:45:30 +00:00
2022-04-02 19:52:51 +00:00
useEffect(() => {
requestAPIS();
2022-04-01 16:45:30 +00:00
}, [loading, APISDK]);
2022-04-03 15:19:59 +00:00
if (loading) {
return (
<SkillsStyle>
<Box sx={{ width: "60%" }}>
<LinearProgress />
2022-04-09 21:05:58 +00:00
Requesting Live API data...
2022-04-03 15:19:59 +00:00
</Box>
2022-04-09 21:05:58 +00:00
<br />
2022-04-03 15:19:59 +00:00
</SkillsStyle>
);
} else {
2023-01-14 22:14:48 +00:00
let lastFMempty = true;
2023-01-16 17:48:47 +00:00
if (skills?.lastfm_current?.recenttracks?.track?.length > 0) {
lastFMempty = false;
}
2022-04-03 15:19:59 +00:00
return (
<div>
2022-04-16 11:00:41 +00:00
{/* <Cursor /> */}
2022-04-03 15:19:59 +00:00
{!loading && (
<SkillsStyle>
<div className="mainboard__container">
<GitHubSkillCard
title={"GitHub Stats"}
url={"https://github.com/Bravo68web"}
2022-04-03 15:19:59 +00:00
image={skills?.logo?.github}
public_repos={skills?.gh_user?.data?.public_repos}
followers={skills?.gh_user?.data?.followers}
following={skills?.gh_user?.data?.following}
public_gists={skills?.gh_user?.data?.public_gists}
created_at={skills?.gh_user?.data?.created_at}
/>
<OsuUserSkillCard
title={"Osu! Player Stats"}
url={"https://osu.ppy.sh/users/bravo68web"}
2022-04-03 15:19:59 +00:00
image={skills?.logo?.osu}
accuracy={
2023-01-16 17:48:47 +00:00
skills?.osu_user?.data?.statistics?.hit_accuracy
}
level={
2023-01-16 17:48:47 +00:00
skills?.osu_user?.data?.statistics?.level?.current
}
2023-01-16 17:48:47 +00:00
pp_raw={skills?.osu_user?.data?.statistics?.pp}
country={skills?.osu_user?.data?.country?.code}
pp_rank={
2023-01-16 17:48:47 +00:00
skills?.osu_user?.data?.statistics?.global_rank
}
2023-01-16 17:48:47 +00:00
countryRank={skills?.osu_user?.data?.statistics?.country_rank}
maximum_combo={
2023-01-16 17:48:47 +00:00
skills?.osu_user?.data?.statistics?.maximum_combo
}
join_date={"2019-09-21 19:33:44"}
total_score={
2023-01-16 17:48:47 +00:00
skills?.osu_user?.data?.statistics?.total_score
}
2022-04-03 15:19:59 +00:00
/>
2023-01-16 17:48:47 +00:00
<TwitterUserSkillCard
2022-04-03 15:19:59 +00:00
title={"Twitter Stats"}
url={"https://twitter.com/Bravo68web"}
2022-04-03 15:19:59 +00:00
image={skills?.logo?.twitter}
2023-01-16 17:48:47 +00:00
followers_count={skills?.twitter_user?.public_metrics?.followers_count}
friends_count={skills?.twitter_user?.public_metrics?.following_count}
statuses_count={skills?.twitter_user?.public_metrics?.tweet_count}
created_at={skills?.twitter_user?.created_at}
/>
< SpotifyTopSkillCard
2022-04-03 20:26:18 +00:00
title={"Spotify Top Songs"}
url={
"https://open.spotify.com/user/31huoajpuynl4w4dzbhp4frktqw4?si=48195baf55a54d7d"
}
2022-04-03 20:26:18 +00:00
image={skills?.logo?.spotify}
topSongs1={skills?.spotify_top_songs?.data?.items[0]}
topSongs2={skills?.spotify_top_songs?.data?.items[1]}
topSongs3={skills?.spotify_top_songs?.data?.items[2]}
topSongs4={skills?.spotify_top_songs?.data?.items[3]}
topSongs5={skills?.spotify_top_songs?.data?.items[4]}
2022-04-03 15:19:59 +00:00
/>
2023-01-16 17:48:47 +00:00
<WakatimeUserSkillCard
title={"Wakatime Stats"}
url={"https://wakatime.com/@bravo68web"}
image={skills?.logo?.wakatime}
2023-01-16 17:48:47 +00:00
total_time={skills?.wakatime_alltime?.data?.text}
average_weekly_time={skills?.wakatime_stats?.data?.human_readable_daily_average_including_other_language}
total_weekly_time={skills?.wakatime_stats?.data?.human_readable_total_including_other_language}
joinedOn={"2020-09-14"}
2023-01-16 17:48:47 +00:00
/>
<HashNodeSkillCard
title={"HashNode Stats"}
url={"https://blog.bravo68web.me/"}
image={skills?.logo?.hashnode}
joinOn={"2021-06-18"}
numPosts={skills?.hn_user?.data?.numPosts}
numFollowers={skills?.hn_user?.data?.numFollowers}
numReactions={skills?.hn_user?.data?.numReactions}
/>
2023-01-16 17:48:47 +00:00
<OsuBestScoresSkillCard
title={"Osu! Best Scores"}
image={skills?.logo?.osu}
url={"https://osu.ppy.sh/users/bravo68web"}
2023-01-16 17:48:47 +00:00
bestScore1={skills?.osu_bestScores?.data?.[0]}
bestScore2={skills?.osu_bestScores?.data?.[1]}
bestScore3={skills?.osu_bestScores?.data?.[2]}
/>
<TwitterTweetsSkillCard
title={"Twitter Tweets"}
url={"https://twitter.com/Bravo68web"}
image={skills?.logo?.twitter}
2023-01-16 17:48:47 +00:00
tweets1={skills?.twitter_tweets?.[0]}
tweets2={skills?.twitter_tweets?.[1]}
tweets3={skills?.twitter_tweets?.[2]}
/>
<WakatimeTopLangSkillCard
title={"Wakatime Top Languages"}
url={"https://wakatime.com/@bravo68web"}
image={skills?.logo?.wakatime}
2023-01-16 17:48:47 +00:00
topLang1={skills?.wakatime_lang?.data?.[0]}
topLang2={skills?.wakatime_lang?.data?.[1]}
topLang3={skills?.wakatime_lang?.data?.[2]}
topLang4={skills?.wakatime_lang?.data?.[3]}
topLang5={skills?.wakatime_lang?.data?.[4]}
/>
<LastFMCurrentSkillCard
title={"LastFM Current Tracks"}
url={"https://last.fm/user/bravo68web"}
image={skills?.logo?.lastfm}
empty={lastFMempty}
artist={
2023-01-16 17:48:47 +00:00
skills?.lastfm_current?.recenttracks?.track?.[0]?.artist[
"#text"
]
}
2023-01-16 17:48:47 +00:00
name={skills?.lastfm_current?.recenttracks?.track?.[0]?.name}
album={
2023-01-16 17:48:47 +00:00
skills?.lastfm_current?.recenttracks?.track?.[0]?.album[
"#text"
]
}
albumImg={
2023-01-16 17:48:47 +00:00
skills?.lastfm_current?.recenttracks?.track?.[0].image[1][
"#text"
]
}
2022-04-09 21:05:58 +00:00
/>
2023-01-16 17:50:23 +00:00
<GitHubUserEvtSkillCard
2022-04-09 21:05:58 +00:00
title={"GitHub User Events"}
url={"https://github.com/bravo68web"}
image={skills?.logo?.github}
2023-01-16 17:50:23 +00:00
evt1={skills?.gh_events?.data?.[0]}
evt2={skills?.gh_events?.data?.[1]}
evt3={skills?.gh_events?.data?.[2]}
evt4={skills?.gh_events?.data?.[3]}
evt5={skills?.gh_events?.data?.[4]}
/>
2022-04-03 15:19:59 +00:00
</div>
</SkillsStyle>
)}
</div>
);
}
2022-01-18 09:50:39 +00:00
}
export default Skills;