MCPcopy Create free account
hub / github.com/Bitbox-Connect/Bitbox / Contributor

Function Contributor

client/src/component/Contributors.jsx:230–525  ·  view source on GitHub ↗
(props)

Source from the content-addressed store, hash-verified

228
229
230export default function Contributor(props) {
231 const [contributors, setContributors] = useState([]);
232 const [openIssues, setOpenIssues] = useState([]);
233 const [showIssue, setShowIssue] = useState(true); // Determine which section to show
234 const [loading, setLoading] = useState(true);
235 const [currentPage, setCurrentPage] = useState(1);
236 const [repoStats, setRepoStats] = useState({
237 stars: 0,
238 forks: 0,
239 openIssues: 0,
240 });
241 const [searchTerm, setSearchTerm] = useState(''); // State for search term
242
243 const itemsPerPage = 9; // Set the number of items per page (for both contributors and issues)
244
245 useEffect(() => {
246 const fetchData = async () => {
247 try {
248 // Fetch contributors
249 const contributorsResponse = await fetch("https://api.github.com/repos/Bitbox-Connect/Bitbox/contributors?page=1&per_page=100");
250
251 if (!contributorsResponse.ok) {
252 throw new Error("Failed to fetch contributors data");
253 }
254 const contributorsData = await contributorsResponse.json();
255 setContributors(contributorsData);
256
257 // Fetch repo stats
258 const repoResponse = await fetch('https://api.github.com/repos/Bitbox-Connect/Bitbox');
259 const repoData = await repoResponse.json();
260 setRepoStats({
261 stars: repoData.stargazers_count,
262 forks: repoData.forks_count,
263 openIssues: repoData.open_issues_count,
264 });
265
266 // Fetch issues
267 const issueResponse = await fetch('https://api.github.com/repos/Bitbox-Connect/Bitbox/issues');
268 const issueData = await issueResponse.json();
269 setOpenIssues(issueData);
270 } catch (error) {
271 console.error("Error fetching data:", error);
272 } finally {
273 setLoading(false);
274 }
275 };
276
277 fetchData();
278 }, []);
279
280 // Calculate pagination indices
281 const indexOfLastItem = currentPage * itemsPerPage;
282 const indexOfFirstItem = indexOfLastItem - itemsPerPage;
283
284 // Filter contributors or issues based on search term
285 const filteredContributors = contributors.filter(contributor =>
286 contributor.login.toLowerCase().includes(searchTerm.toLowerCase())
287 );

Callers

nothing calls this directly

Calls 2

paginateFunction · 0.85
fetchDataFunction · 0.70

Tested by

no test coverage detected