Skip to content

Commit 1e2645c

Browse files
committed
aggr my languages repos
1 parent 6e0f025 commit 1e2645c

1 file changed

Lines changed: 33 additions & 2 deletions

File tree

src/cards/ReposCard.js

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,18 +83,20 @@ function ReposCard({ analyticsTag, icon, withAds }) {
8383
}
8484

8585
const globalTag = { value: 'global', label: 'All trending', githubValues: ['global'] }
86+
const myLangsTag = { value: 'myLangs', label: 'My Languages', githubValues: ['myLangs'] }
8687

8788
const preferences = useContext(PreferencesContext)
8889

8990
const { userSelectedTags = [], dispatcher, cardsSettings } = preferences
9091

91-
const getTags = () => [...userSelectedTags, globalTag]
92+
const getTags = () => [...userSelectedTags, globalTag, myLangsTag]
9293

9394
const { show: showMenu } = useContextMenu()
9495

9596
const [selectedTag, setSelectedTag] = useState(getInitialSelectedTag())
9697
const [since, setSince] = useState(getInitialDateRange())
9798
const [refresh, setRefresh] = useState(true)
99+
const [repos, setRepos] = useState({})
98100
const dateRangeMapper = {
99101
daily: 'the day',
100102
weekly: 'the week',
@@ -103,6 +105,7 @@ function ReposCard({ analyticsTag, icon, withAds }) {
103105

104106
useEffect(() => {
105107
setSelectedTag(getInitialSelectedTag())
108+
setRepos({})
106109
setRefresh(!refresh)
107110
}, [userSelectedTags])
108111

@@ -136,7 +139,35 @@ function ReposCard({ analyticsTag, icon, withAds }) {
136139
throw Error(`Github Trending does not support ${selectedTag.label}.`)
137140
}
138141

139-
const data = await githubApi.getTrending(selectedTag.githubValues[0], since)
142+
const tagValue = selectedTag.githubValues[0]
143+
const key = `${tagValue}-${since}`
144+
145+
if (repos[key]) {
146+
return repos[key]
147+
}
148+
149+
if (tagValue == myLangsTag.githubValues[0]) {
150+
const promises = userSelectedTags.map(
151+
t => !t.githubValues ? false : githubApi.getTrending(t.githubValues[0], since)
152+
)
153+
let values = await Promise.all(promises)
154+
const nbrTags = values.length
155+
let minLength = 25
156+
157+
const data = []
158+
for (let index = 0; index < minLength; index++) {
159+
for (let i = 0; i < nbrTags; i++) {
160+
data.push(values[i][index])
161+
}
162+
}
163+
164+
setRepos({ ...repos, [key]: data })
165+
return data
166+
167+
}
168+
169+
const data = await githubApi.getTrending(tagValue, since)
170+
setRepos({ ...repos, [key]: data })
140171
return data
141172
}
142173

0 commit comments

Comments
 (0)