import { h, Component } from 'preact'; import { SingleRepo } from './singleRepo'; import { request } from '@utilities/http'; export class GithubRepos extends Component { state = { repos: [], error: false, errorMessage: '', }; componentDidMount() { this.getGithubRepos(); } async getGithubRepos() { try { const response = await request('/github_repos'); if (response.ok) { const repositories = await response.json(); this.setState({ repos: repositories }); } else { throw new Error(response.statusText); } } catch (error) { Honeybadger.notify(error); this.setState({ error: true, errorMessage: error.toString() }); } } render() { const { repos, error, errorMessage } = this.state; if (error) { return (
An error occurred: {errorMessage}
); } const allRepos = repos.map((repo) => ( )); if (allRepos.length > 0) { return (
{allRepos}
); } return (
); } } GithubRepos.displayName = 'GitHub Repositories Wrapper';