import { Fragment, useContext } from "react";
import { ga, languageColor, skeleton } from "../helpers/utils";
import { AiOutlineStar, AiOutlineFork } from 'react-icons/ai';
import config from "../config";
import PropTypes from 'prop-types';
import { LoadingContext } from "../contexts/LoadingContext";
const Project = (props) => {
const [loading] = useContext(LoadingContext);
const renderSkeleton = () => {
let array = [];
for (let index = 0; index < config.github.limit; index++) {
array.push((
{skeleton({ width: 'w-32', height: 'h-8' })}
{skeleton({ width: 'w-full', height: 'h-4', className: 'mb-2' })}
{skeleton({ width: 'w-full', height: 'h-4' })}
{skeleton({ width: 'w-12', height: 'h-4' })}
{skeleton({ width: 'w-12', height: 'h-4' })}
{skeleton({ width: 'w-12', height: 'h-4' })}
))
}
return array;
}
const renderProjects = () => {
return props.repo.map((item, index) => (
{
try {
if (config.googleAnalytics?.id) {
ga.event({
action: "Click project",
params: {
project: item.name
}
});
}
} catch (error) {
console.error(error);
}
window.open(item.html_url, '_blank')
}}
>
{item.stargazers_count}
{item.forks_count}
));
}
return (
-
{
loading ? skeleton({ width: 'w-28', height: 'h-8' }) : (
My Projects
)
}
{
loading ? skeleton({ width: 'w-10', height: 'h-5' }) : (
See All
)
}
{(loading || !props.repo) ? renderSkeleton() : renderProjects()}
)
}
Project.propTypes = {
repo: PropTypes.array
}
export default Project;