mirror of
https://github.com/oceanprotocol/docs.git
synced 2024-11-26 19:49:26 +01:00
Merge pull request #50 from oceanprotocol/feature/46
Fetching repo numbers on client side
This commit is contained in:
commit
553ce86936
@ -23,6 +23,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@oceanprotocol/art": "^1.0.2",
|
"@oceanprotocol/art": "^1.0.2",
|
||||||
|
"axios": "^0.18.0",
|
||||||
"classnames": "^2.2.6",
|
"classnames": "^2.2.6",
|
||||||
"gatsby": "^2.0.52",
|
"gatsby": "^2.0.52",
|
||||||
"gatsby-image": "^2.0.20",
|
"gatsby-image": "^2.0.20",
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import React from 'react'
|
import React, { PureComponent } from 'react'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
import { StaticQuery, graphql } from 'gatsby'
|
import { StaticQuery, graphql } from 'gatsby'
|
||||||
import remark from 'remark'
|
import remark from 'remark'
|
||||||
import remarkReact from 'remark-react'
|
import remarkReact from 'remark-react'
|
||||||
|
import axios from 'axios'
|
||||||
import { ReactComponent as Star } from '../../images/star.svg'
|
import { ReactComponent as Star } from '../../images/star.svg'
|
||||||
import { ReactComponent as Forks } from '../../images/forks.svg'
|
import { ReactComponent as Forks } from '../../images/forks.svg'
|
||||||
import styles from './Repository.module.scss'
|
import styles from './Repository.module.scss'
|
||||||
@ -101,23 +102,76 @@ Links.propTypes = {
|
|||||||
url: PropTypes.string.isRequired
|
url: PropTypes.string.isRequired
|
||||||
}
|
}
|
||||||
|
|
||||||
const Numbers = ({ stargazers, forkCount, url }) => (
|
class Numbers extends PureComponent {
|
||||||
|
static propTypes = {
|
||||||
|
stargazers: PropTypes.object.isRequired,
|
||||||
|
forkCount: PropTypes.number.isRequired,
|
||||||
|
url: PropTypes.string.isRequired,
|
||||||
|
name: PropTypes.string.isRequired
|
||||||
|
}
|
||||||
|
|
||||||
|
state = {
|
||||||
|
forks: this.props.forkCount,
|
||||||
|
stars: this.props.stargazers.totalCount
|
||||||
|
}
|
||||||
|
|
||||||
|
url = 'https://oceanprotocol-github.now.sh'
|
||||||
|
|
||||||
|
fetchNumbers = async () => {
|
||||||
|
try {
|
||||||
|
const response = await axios({
|
||||||
|
method: 'get',
|
||||||
|
url: this.url,
|
||||||
|
timeout: 10000, // 10 sec.
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const repo = response.data
|
||||||
|
.map(item => {
|
||||||
|
if (item.name === this.props.name) {
|
||||||
|
return item
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.filter(n => n)
|
||||||
|
|
||||||
|
const { forks, stars } = repo
|
||||||
|
|
||||||
|
// update state only when numbers have changed
|
||||||
|
if (forks && forks !== this.props.forkCount) {
|
||||||
|
this.setState({ forks })
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stars && stars !== this.props.stargazers.totalCount) {
|
||||||
|
this.setState({ stars })
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error) // eslint-disable-line no-console
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
this.fetchNumbers()
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { url } = this.props
|
||||||
|
const { forks, stars } = this.state
|
||||||
|
|
||||||
|
return (
|
||||||
<aside className={styles.repositorynumbers}>
|
<aside className={styles.repositorynumbers}>
|
||||||
<a href={`${url}/stargazers`} title="Show Stargazers">
|
<a href={`${url}/stargazers`} title="Show Stargazers">
|
||||||
<Star /> <span>{stargazers.totalCount}</span>
|
<Star /> <span>{stars}</span>
|
||||||
</a>
|
</a>
|
||||||
{forkCount > 0 && (
|
{forks > 0 && (
|
||||||
<a href={`${url}/network`} title="Show Forks">
|
<a href={`${url}/network`} title="Show Forks">
|
||||||
<Forks /> <span>{forkCount}</span>
|
<Forks /> <span>{forks}</span>
|
||||||
</a>
|
</a>
|
||||||
)}
|
)}
|
||||||
</aside>
|
</aside>
|
||||||
)
|
)
|
||||||
|
}
|
||||||
Numbers.propTypes = {
|
|
||||||
stargazers: PropTypes.object.isRequired,
|
|
||||||
forkCount: PropTypes.number.isRequired,
|
|
||||||
url: PropTypes.string.isRequired
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const Readme = ({ object }) => {
|
const Readme = ({ object }) => {
|
||||||
@ -194,6 +248,7 @@ const Repository = ({ name, links, readme }) => (
|
|||||||
stargazers={stargazers}
|
stargazers={stargazers}
|
||||||
forkCount={forkCount}
|
forkCount={forkCount}
|
||||||
url={url}
|
url={url}
|
||||||
|
name={name}
|
||||||
/>
|
/>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user