Skip to content

Commit 618940d

Browse files
committed
Updated Contributors Page and API Endpoint With Metadata Support
Signed-off-by: Jerry Laruba Festus <jerrylarubafestus@gmail.com>
1 parent c0b680c commit 618940d

File tree

3 files changed

+28
-10
lines changed

3 files changed

+28
-10
lines changed

src/main/java/com/openelements/issues/ApiEndpoint.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
import org.springframework.web.bind.annotation.PathVariable;
1515
import org.springframework.web.bind.annotation.RestController;
1616

17+
import java.util.Set;
18+
import java.util.stream.Collectors;
19+
1720
@RestController
1821
@CrossOrigin
1922
public class ApiEndpoint {
@@ -22,12 +25,16 @@ public class ApiEndpoint {
2225

2326
private final GitHubCache issueCache;
2427

25-
public ApiEndpoint(@NonNull final GitHubCache issueCache) {
26-
this.issueCache = Objects.requireNonNull(issueCache, "issueCache must not be null");
28+
public ApiEndpoint(final GitHubCache issueCache) {
29+
this.issueCache = issueCache;
2730
}
2831

29-
@Deprecated(forRemoval = true)
30-
private record OldIssueResponse(@NonNull String title, @NonNull String link, @NonNull String org, @NonNull String repo, @NonNull String imageUrl, @NonNull String identifier, boolean isAssigned, boolean isClosed, @NonNull List<String> labels, @NonNull List<String> languageTags) {
32+
@GetMapping("/api/v2/contributors")
33+
public Set<Contributor> getContributors() {
34+
log.info("Getting contributors with additional metadata");
35+
return issueCache.getContributors().stream()
36+
.peek(contributor -> log.debug("Contributor: {}", contributor))
37+
.collect(Collectors.toUnmodifiableSet());
3138
}
3239

3340
/**

src/main/resources/static/contributors.html

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@ <h1 class="text-3xl font-bold mb-6 text-center">Contributors</h1>
2828

2929
async function fetchContributors() {
3030
const response = await fetch('/api/v2/contributors');
31-
const contributors = await response.json();
32-
return contributors;
31+
if (!response.ok) {
32+
throw new Error('Failed to fetch contributors');
33+
}
34+
return response.json();
3335
}
3436

3537
// Function to render issues into the table
@@ -41,9 +43,10 @@ <h1 class="text-3xl font-bold mb-6 text-center">Contributors</h1>
4143
const listItem = document.createElement('li');
4244
listItem.classList.add('flex', 'justify-center');
4345
listItem.innerHTML = `<a target="_blank" href="https://github.com/${contributor.userName}">
44-
<div class="flex flex-col justify-center">
46+
<div class="flex flex-col justify-center items-center">
4547
<img class="rounded-full h-32 w-32 bg-slate-600 p-0.5 grow" src="${contributor.avatarUrl}" alt="Avatar of ${contributor.userName}">
46-
<span class="text-center">${contributor.userName}</span>
48+
<span class="text-center mt-2 font-medium">${contributor.userName}</span>
49+
<span class="text-center text-sm text-gray-500">${contributor.contributions} Contributions</span>
4750
</div>
4851
</a>
4952
`;
@@ -55,14 +58,14 @@ <h1 class="text-3xl font-bold mb-6 text-center">Contributors</h1>
5558
document.addEventListener('DOMContentLoaded', async () => {
5659
const loadingElement = document.getElementById('loading');
5760
const listElement = document.getElementById('contributors-list');
58-
let contributors = [];
5961
try {
60-
contributors = await fetchContributors();
62+
const contributors = await fetchContributors();
6163
renderContributors(contributors);
6264
loadingElement.classList.add('hidden');
6365
listElement.classList.remove('hidden');
6466
} catch (error) {
6567
loadingElement.textContent = 'Failed to load data. Please try again later.';
68+
console.error(error);
6669
}
6770
});
6871
</script>

src/main/resources/static/index.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@
99
<body>
1010

1111
<div class="container mx-auto py-10">
12+
<h1 class="text-4xl font-bold text-center">Welcome to OpenElements</h1>
13+
<p class="text-center mt-4">Explore our contributors and projects.</p>
14+
15+
<div class="mt-10 flex justify-center">
16+
<a href="contributors.html" class="px-6 py-3 bg-blue-500 text-white rounded hover:bg-blue-700">
17+
View Contributors
18+
</a>
19+
</div>
1220
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
1321
<div class="mx-auto max-w-3xl">
1422
<h1 class="text-3xl font-bold mb-6 text-center">Good First Issues</h1>

0 commit comments

Comments
 (0)