Skip to content

Commit bbb8a98

Browse files
authored
Fetch stars count from repo (#2214)
* Fetch stars count from repo * Use BrowserOnly to allow using localStorage * bump verison
1 parent 9866eae commit bbb8a98

File tree

3 files changed

+28
-9
lines changed

3 files changed

+28
-9
lines changed

docuilib/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "uilib-docs",
3-
"version": "2.1.0",
3+
"version": "2.2.1",
44
"scripts": {
55
"docusaurus": "docusaurus",
66
"start": "docusaurus start",

docuilib/src/components/MainSection.tsx

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,31 @@
1-
import React from 'react';
1+
import React, {useEffect, useState} from 'react';
22
import Link from '@docusaurus/Link';
33
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
44

55
import styles from './MainSection.module.scss';
66
import mainCover from '@site/static/img/mainCover.jpg';
77
import GoldStarSvg from '@site/static/img/goldStar.svg';
88

9+
const STARS_COUNT_KEY = 'starsCount';
10+
911
export default () => {
1012
const {siteConfig} = useDocusaurusContext();
1113
const {expoSnackLink, docsMainEntry} = siteConfig.customFields;
14+
const [starsCount, setStarsCount] = useState(localStorage.getItem(STARS_COUNT_KEY) ?? siteConfig.customFields.stars);
15+
16+
useEffect(() => {
17+
fetchStarsCount();
18+
}, []);
19+
20+
const fetchStarsCount = async () => {
21+
const response = await fetch('https://api.github.com/repos/wix/react-native-ui-lib');
22+
const data = await response.json();
23+
const _starsCount = (data.stargazers_count / 1000).toFixed(1);
24+
25+
26+
localStorage.setItem(STARS_COUNT_KEY, _starsCount.toString());
27+
setStarsCount(_starsCount);
28+
};
1229

1330
return (
1431
<div className={styles.main}>
@@ -19,7 +36,7 @@ export default () => {
1936
</p>
2037
<div className={styles.gitStars}>
2138
<GoldStarSvg width={16} height={16} style={{margin: 4}}/>
22-
<span>{siteConfig.customFields.stars}k</span>
39+
<span>{starsCount}k</span>
2340
</div>
2441

2542
<div className={styles.buttons}>

docuilib/src/pages/index.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react';
22
import Layout from '@theme/Layout';
3+
import BrowserOnly from '@docusaurus/BrowserOnly';
34
// import clsx from 'clsx';
45
// import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
56
// import HomepageFeatures from '../components/HomepageFeatures';
@@ -15,16 +16,17 @@ export default function Home(): JSX.Element {
1516
// const {siteConfig} = useDocusaurusContext();
1617
return (
1718
<>
18-
<StandWithUkraine />
19+
<StandWithUkraine/>
1920
<Layout
2021
/* title={`Hello from ${siteConfig.title}`} */ description="Description will go into a meta tag in <head />"
2122
>
2223
<main>
23-
<MainSection />
24-
<ComponentsSection />
25-
<FeaturesSection />
26-
<CodeSection />
27-
<LibrariesSection />
24+
{/* Note: BrowserOnly allows using `localStorage` in MainSection, otherwise docusaurus build fail */}
25+
<BrowserOnly>{() => <MainSection/>}</BrowserOnly>
26+
<ComponentsSection/>
27+
<FeaturesSection/>
28+
<CodeSection/>
29+
<LibrariesSection/>
2830
</main>
2931
</Layout>
3032
</>

0 commit comments

Comments
 (0)