--- import VideoButton from './VideoButton.astro'; import ClipboardCopy from './ClipboardCopy.astro'; import { getEntry } from 'astro:content'; const { lang } = Astro.props; const { author, challengeNumber, title, blogLink, videoLink, command } = Astro.props.entry.data; const { data } = await getEntry('i18n', lang); const authorLink = `https://github.com/tomalaforge/angular-challenges/pulls?q=label%3A${challengeNumber}+label%3A"answer+author"`; const communityLink = `https://github.com/tomalaforge/angular-challenges/pulls?q=label%3A${challengeNumber}+label%3Aanswer+sort%3Areactions-%2B1-desc`; const npxCommand = `npx nx serve ${command}`; let items = []; let page = 1; let error = false; try { while (true) { const response = await fetch(`https://api.github.com/search/issues?q=repo:tomalaforge/angular-challenges+is:pr+label:%22${challengeNumber}%22+label:%22answer%22&per_page=100&page=${page}`); if (!response.ok) { throw new Error('Network response was not ok'); } const { items: new_items, total_count } = await response.json(); if (!new_items || new_items.length === 0) break; items.push(...new_items); if(total_count < page * 100) break; page++; } } catch (e) { error = true; } ---
{command && }
❖ {items.length > 0 ? items.length : ''} {data['challenge.footer.communityAnswers']}* ▶︎ {data['challenge.footer.authorAnswer']} {blogLink && {data['challenge.footer.blogPost']} } {videoLink && }
{error ? null :
Answered by
{(items ?? []).map((item) => ( ))}
}