2019-06-07 20:47:34 +02:00
|
|
|
import React, { Fragment } from 'react'
|
|
|
|
import { VersionNumbersState as VersionTableProps } from '.'
|
|
|
|
import styles from './VersionTable.module.scss'
|
|
|
|
import slugify from '@sindresorhus/slugify'
|
2019-06-13 16:35:41 +02:00
|
|
|
import Spinner from '../../atoms/Spinner'
|
2019-06-07 20:47:34 +02:00
|
|
|
|
|
|
|
const VersionTableContracts = ({
|
|
|
|
contracts,
|
|
|
|
network
|
|
|
|
}: {
|
|
|
|
contracts: any
|
|
|
|
network: string
|
|
|
|
}) => (
|
|
|
|
<table>
|
|
|
|
<tbody>
|
2019-06-11 20:27:02 +02:00
|
|
|
{contracts &&
|
2019-06-13 16:43:47 +02:00
|
|
|
Object.keys(contracts).map(key => {
|
|
|
|
const submarineLink = `https://submarine${
|
|
|
|
network === 'duero'
|
|
|
|
? '.duero'
|
|
|
|
: network === 'pacific'
|
|
|
|
? '.pacific'
|
|
|
|
: ''
|
|
|
|
}.dev-ocean.com/address/${contracts[key]}`
|
|
|
|
|
|
|
|
return (
|
|
|
|
<tr key={key}>
|
|
|
|
<td>
|
|
|
|
<span className={styles.label}>{key}</span>
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
<a href={submarineLink}>
|
|
|
|
<code>{contracts[key]}</code>
|
|
|
|
</a>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
)
|
|
|
|
})}
|
2019-06-07 20:47:34 +02:00
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
)
|
|
|
|
|
2019-06-14 12:31:29 +02:00
|
|
|
const VersionNumber = ({
|
|
|
|
isLoading,
|
|
|
|
software,
|
|
|
|
version,
|
|
|
|
network
|
|
|
|
}: {
|
|
|
|
isLoading: boolean
|
|
|
|
software: string
|
|
|
|
version: string
|
|
|
|
network: string
|
|
|
|
}) =>
|
|
|
|
isLoading ? (
|
|
|
|
<Spinner small className={styles.spinner} />
|
|
|
|
) : version ? (
|
|
|
|
<>
|
|
|
|
<a
|
|
|
|
href={`https://github.com/oceanprotocol/${slugify(
|
|
|
|
software
|
|
|
|
)}/releases/tag/v${version}`}
|
|
|
|
>
|
|
|
|
<code>v{version}</code>
|
|
|
|
</a>
|
|
|
|
{network && `(${network})`}
|
|
|
|
</>
|
|
|
|
) : (
|
|
|
|
<span>Could not get version</span>
|
|
|
|
)
|
|
|
|
|
2019-06-07 20:47:34 +02:00
|
|
|
const VersionTable = ({ data }: { data: VersionTableProps }) => (
|
|
|
|
<div className={styles.tableWrap}>
|
|
|
|
<table className={styles.table}>
|
|
|
|
<tbody>
|
|
|
|
{Object.entries(data).map(([key, value]) => (
|
|
|
|
<Fragment key={key}>
|
|
|
|
<tr key={key}>
|
|
|
|
<td>
|
|
|
|
<a
|
2019-06-11 20:27:02 +02:00
|
|
|
href={
|
|
|
|
value.software &&
|
|
|
|
`https://github.com/oceanprotocol/${slugify(
|
|
|
|
value.software
|
|
|
|
)}`
|
|
|
|
}
|
2019-06-07 20:47:34 +02:00
|
|
|
>
|
|
|
|
<strong>{value.software}</strong>
|
|
|
|
</a>
|
|
|
|
</td>
|
|
|
|
<td>
|
2019-06-14 12:31:29 +02:00
|
|
|
<VersionNumber
|
|
|
|
isLoading={value.isLoading}
|
|
|
|
software={value.software}
|
|
|
|
version={value.version}
|
|
|
|
network={value.network}
|
|
|
|
/>
|
2019-06-07 20:47:34 +02:00
|
|
|
</td>
|
|
|
|
</tr>
|
2019-06-11 20:27:02 +02:00
|
|
|
{key === 'keeperContracts' && data.brizo.contracts && (
|
2019-06-07 20:47:34 +02:00
|
|
|
<tr>
|
|
|
|
<td colSpan={2}>
|
|
|
|
<VersionTableContracts
|
|
|
|
contracts={data.brizo.contracts}
|
|
|
|
network={data.brizo.network}
|
|
|
|
/>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
)}
|
|
|
|
</Fragment>
|
|
|
|
))}
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
|
|
|
|
export default VersionTable
|