Merge pull request #153 from ethereum/primary-releases

feat: bold styling for primary releases
This commit is contained in:
Corwin Smith 2022-12-12 20:56:40 -07:00 committed by GitHub
commit 43fe9c9f8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 75 additions and 2 deletions

@ -11,8 +11,16 @@ import {
Stack
} from '@chakra-ui/react';
import { FC } from 'react';
import {
getOS,
getParsedDate,
isDarwinPrimaryRelease,
isLinuxPrimaryRelease,
isMobilePrimaryRelease,
isWindowsPrimaryRelease
} from '../../utils';
import { OpenPGPSignaturesData, ReleaseData } from '../../types';
import { getParsedDate } from '../../utils';
interface Props {
columnHeaders: string[];
@ -71,11 +79,26 @@ export const DataTable: FC<Props> = ({ columnHeaders, data }) => {
{dataType === 'Releases' &&
data.map((r: ReleaseData, idx: number) => {
const url = r?.release?.url;
const os = getOS(url);
const _isLinuxPrimaryRelease = isLinuxPrimaryRelease(r, os, data);
const _isDarwinPrimaryRelease = isDarwinPrimaryRelease(r, os, data);
const _isWindowsPrimaryRelease = isWindowsPrimaryRelease(r, os, data);
const _isMobilePrimaryRelease = isMobilePrimaryRelease(r, os, data);
const isPrimaryRelease =
_isLinuxPrimaryRelease ||
_isDarwinPrimaryRelease ||
_isWindowsPrimaryRelease ||
_isMobilePrimaryRelease;
return (
<Tr
key={idx}
transition={'all 0.5s'}
_hover={{ background: 'button-bg', transition: 'all 0.5s' }}
fontWeight={isPrimaryRelease ? 700 : 400}
>
{Object.entries(r).map((item, idx) => {
const objectItems = ['release', 'commit', 'signature'];

@ -15,7 +15,7 @@ export default function Document() {
{/* Inter */}
<link
href='https://fonts.googleapis.com/css2?family=Inter&display=swap'
href='https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap'
rel='stylesheet'
></link>
</Head>

@ -50,3 +50,5 @@ export interface OpenPGPSignaturesData {
};
fingerprint: string;
}
export type OS = 'linux' | 'darwin' | 'windows' | 'mobile';

11
src/utils/getOS.ts Normal file

@ -0,0 +1,11 @@
import { OS } from '../types';
// slice to get the last part of the url that includes the os
export const getOS = (url: string): OS =>
url?.slice(46).includes('darwin')
? 'darwin'
: url?.slice(46).includes('linux')
? 'linux'
: url?.slice(46).includes('windows')
? 'windows'
: 'mobile';

@ -5,6 +5,7 @@ export { fetchXMLData } from './fetchXMLData';
export { getChecksum } from './getChecksum';
export { getKebabCaseFromName } from './getKebabCaseFromName';
export { getLatestBinaryURL } from './getLatestBinaryURL';
export { getOS } from './getOS';
export { getParsedDate } from './getParsedDate';
export { getProgrammingLanguageName } from './getProgrammingLanguageName';
export { getReleaseArch } from './getReleaseArch';
@ -16,4 +17,8 @@ export { getReleaseSize } from './getReleaseSize';
export { getReleaseURL } from './getReleaseURL';
export { getSignatureURL } from './getSignatureURL';
export { getSortedReleases } from './getSortedReleases';
export { isDarwinPrimaryRelease } from './isDarwinPrimaryRelease';
export { isLinuxPrimaryRelease } from './isLinuxPrimaryRelease';
export { isMobilePrimaryRelease } from './isMobilePrimaryRelease';
export { isWindowsPrimaryRelease } from './isWindowsPrimaryRelease';
export { mapReleasesData } from './mapReleasesData';

@ -0,0 +1,8 @@
import { OS, ReleaseData } from '../types';
export const isDarwinPrimaryRelease = (r: ReleaseData, os: OS, data: ReleaseData[]) =>
os === 'darwin' &&
data
.slice(0, 2) // get latest build to filter on
.filter((e: ReleaseData) => e.arch === '64-bit')
.includes(r);

@ -0,0 +1,8 @@
import { OS, ReleaseData } from '../types';
export const isLinuxPrimaryRelease = (r: ReleaseData, os: OS, data: ReleaseData[]) =>
os === 'linux' &&
data
.slice(0, 12) // get latest build to filter on
.filter((e: ReleaseData) => e.arch === '64-bit')
.includes(r);

@ -0,0 +1,8 @@
import { OS, ReleaseData } from '../types';
export const isMobilePrimaryRelease = (r: ReleaseData, os: OS, data: ReleaseData[]) =>
os === 'mobile' &&
data
.filter((e: ReleaseData) => e.arch === 'all')
.slice(0, 1) // get latest build
.includes(r);

@ -0,0 +1,8 @@
import { OS, ReleaseData } from '../types';
export const isWindowsPrimaryRelease = (r: ReleaseData, os: OS, data: ReleaseData[]) =>
os === 'windows' &&
data
.slice(0, 6) // get latest build to filter on
.filter((e: ReleaseData) => e.kind === 'Installer' && e.arch === '64-bit')
.includes(r);