Skip to content

Commit 8a388e7

Browse files
committed
handle unsupported github tag
1 parent 8f87265 commit 8a388e7

2 files changed

Lines changed: 27 additions & 11 deletions

File tree

src/components/List/ListComponent.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export function ListComponent(props: ListComponentPropsType) {
77
const { items, isLoading, error, renderItem, withAds, placeholder = <Placeholder /> } = props
88

99
if (error) {
10-
return <p className="errorMsg">{error.message}</p>
10+
return <p className="errorMsg">{error?.message || error}</p>
1111
}
1212

1313
const renderItems = () => {

src/features/githubCard/components/GithubCard.tsx

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export function GithubCard(props: CardPropsType) {
4747
return []
4848
}
4949
if (!selectedTag?.githubValues) {
50-
throw Error(`Github Trending does not support ${selectedTag.label}.`)
50+
return []
5151
}
5252

5353
if (selectedTag.value === MY_LANGUAGES_TAG.githubValues[0]) {
@@ -56,7 +56,13 @@ export function GithubCard(props: CardPropsType) {
5656
return selectedTag.githubValues
5757
}
5858

59-
const results = useGetArticles({ tags: getQueryTags(), dateRange: selectedDateRange.value })
59+
const results = useGetArticles({
60+
tags: getQueryTags(),
61+
dateRange: selectedDateRange.value,
62+
config: {
63+
enabled: !!selectedTag?.githubValues,
64+
},
65+
})
6066

6167
const getIsLoading = () => results.some((result) => result.isLoading)
6268

@@ -97,18 +103,27 @@ export function GithubCard(props: CardPropsType) {
97103
/>
98104
<span> Repos of </span>
99105
<SelectableCard
100-
tagId={DATE_RANGE_MENU_ID}
101-
selectedTag={selectedDateRange}
102-
setSelectedTag={setSelectedDateRange}
103-
fallbackTag={dateRanges[0]}
104-
trackEvent={(tag: DateRangeType) => trackCardDateRangeSelect('Repos', tag.value)}
105-
cardSettings={cardsSettings?.repos?.dateRange}
106-
data={dateRanges}
107-
/>
106+
tagId={DATE_RANGE_MENU_ID}
107+
selectedTag={selectedDateRange}
108+
setSelectedTag={setSelectedDateRange}
109+
fallbackTag={dateRanges[0]}
110+
trackEvent={(tag: DateRangeType) => trackCardDateRangeSelect('Repos', tag.value)}
111+
cardSettings={cardsSettings?.repos?.dateRange}
112+
data={dateRanges}
113+
/>
108114
</div>
109115
)
110116
}
111117

118+
const getError = () => {
119+
if (!selectedTag?.githubValues) {
120+
return `Github Trending does not support ${selectedTag?.label || 'the selected tag'}.`
121+
} else if (results.every((result) => result.isError)) {
122+
return 'Failed to load Github trending repositories'
123+
} else {
124+
return undefined
125+
}
126+
}
112127
return (
113128
<CardComponent
114129
fullBlock={true}
@@ -117,6 +132,7 @@ export function GithubCard(props: CardPropsType) {
117132
title={<HeaderTitle />}>
118133
<ListComponent
119134
items={getData()}
135+
error={getError()}
120136
isLoading={getIsLoading()}
121137
renderItem={renderItem}
122138
withAds={withAds}

0 commit comments

Comments
 (0)