docbrown/app/javascript/githubRepos/githubRepos.jsx
dependabot[bot] 62e150f5af
Bump eslint-config-preact from 1.1.3 to 1.1.4 (#13516)
* Bump eslint-config-preact from 1.1.3 to 1.1.4

Bumps [eslint-config-preact](https://github.com/preactjs/eslint-config-preact) from 1.1.3 to 1.1.4.
- [Release notes](https://github.com/preactjs/eslint-config-preact/releases)
- [Commits](https://github.com/preactjs/eslint-config-preact/compare/v1.1.3...v1.1.4)

Signed-off-by: dependabot[bot] <support@github.com>

* Add missing key prop for elements in iterators where necessary

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
2021-04-27 18:54:43 +02:00

67 lines
1.5 KiB
JavaScript

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 (
<div className="github-repos github-repos-errored" role="alert">
An error occurred: {errorMessage}
</div>
);
}
const allRepos = repos.map((repo) => (
<SingleRepo
key={repo.github_id_code}
githubIdCode={repo.github_id_code}
name={repo.name}
fork={repo.fork}
featured={repo.featured}
/>
));
if (allRepos.length > 0) {
return (
<div className="github-repos" data-testid="github-repos-list">
{allRepos}
</div>
);
}
return (
<div
title="Loading GitHub repositories"
className="github-repos loading-repos"
/>
);
}
}
GithubRepos.displayName = 'GitHub Repositories Wrapper';