Completed
Push — feature/full-redesign ( 79b2c8...4e9b91 )
by Kevin Van
12:18 queued 04:21
created

src/components/PlayerShare.tsx   A

Complexity

Total Complexity 14
Complexity/F 0

Size

Lines of Code 75
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 14
eloc 67
mnd 14
bc 14
fnc 0
dl 0
loc 75
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
rs 10
1
import { IGatsbyImageData, getSrc } from "gatsby-plugin-image"
2
import React, { Fragment, FunctionComponent, useEffect } from "react"
3
import { StringParam, useQueryParam } from "use-query-params"
4
import { PlayerShareProps } from "../Types/Player"
5
6
import "./PlayerShare.scss"
7
8
const renderPlayerHeader = (player: Queries.node__player) => (
9
  <Fragment>
10
    <div className="player__header__inner_text">
11
      <h1 className="player__detail__name">
12
        <span className="player__detail__name_first">{player.field_firstname || ``}</span>
13
        <span className="player__detail__name_last">{player.field_lastname || ``}</span>
14
      </h1>
15
      {player.field_shirtnumber && (
16
        <p className="player__detail__shirt_number" aria-hidden="true">
17
          {player.field_shirtnumber}
18
        </p>
19
      )}
20
    </div>
21
  </Fragment>
22
)
23
24
const getFallback = (imageData?: IGatsbyImageData) =>
25
  imageData?.placeholder?.fallback ||
26
  `data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='563'%20height='1000'%20viewBox='0%200%20563%201000'%20preserveAspectRatio='none'%3e%3cpath%20d='M225%20353c-20%208-42%2029-47%2045l-1%2024v44l-3%201c-4%202-5%207-4%2011l2%209c5%2019%2011%2033%2016%2035%204%202%204%204%205%2014l2%2014c3%2010%202%2014-4%2010l-4-2c-2%200-6%206-7%209l-2%205-1%2010v7l-5%202c-5%203-6%204-12%2014-2%203-7%205-13%205-4%200-14%206-21%2013l-8%205-10%206-12%207c-13%207-28%2019-33%2027-7%209-9%2014-10%2019l-2%207c-2%203-2%205-2%2025%200%2021%200%2022%203%2027%203%206%205%2018%203%2028-2%207-1%2013%201%2017%202%203%205%2014%205%2018l1%208c6%2018%208%2030%208%2041%200%207%200%208%207%2015l4%207c-3%208-2%2011%204%2016l6%208%205%207%205%2021c1%206%200%205%2013%2016l4%208%206%2010c11%2012%2013%2017%2010%2024l-2%207v3h300l-1-21a674%20674%200%2000-2-59l11-2%2016-3c14-5%2023-7%2033-9%2015-2%2020-6%2021-16a2207%202207%200%20014-44c0-14%200-15%201-13%201%201%201%201%201-1l-3-5c-2-2-3-3-3-13l-3-17-6-26-8-14-8-14c-1-5-2-8-6-11-3-3-3-4-3-9%200-6%200-6-3-9-3-2-4-4-4-5l-7-21-2-9c0-8-2-12-5-15-4-4-10-15-12-23-1-4-2-6-5-8l-8-7c-3-3-6-4-10-6l-9-2a284%20284%200%2000-27-9c-12-4-15-5-20-5l-9-2-9-3c-9-4-30-27-30-35l1-11c2-11%205-51%204-59a195%20195%200%20016-72c0-7%200-7-3-12-5-8-7-11-7-17-1-7-2-8-8-12l-5-4-5-5c-5-6-15-12-28-16l-9-4h-17l-20%201'%20fill='%232d2d2d'%20fill-rule='evenodd'/%3e%3c/svg%3e`
27
28
const PlayerShare = ({ player }: PlayerShareProps) => {
29
  const [score] = useQueryParam(`score`, StringParam)
30
  const [match] = useQueryParam(`match`, StringParam)
31
32
  const fallback = getFallback(player.relationships?.field_image_celebrate?.localFile?.childImageSharp?.gatsbyImageData)
33
34
  return (
35
    <Fragment>
36
      <article className={`player__share player-detail--share`} id="share-image-source">
37
        <div className="player__share__goals__wrapper">
38
          <span className="player-detail--share__score__random">GOAL</span>
39
          <span className="player-detail--share__score__random">GOAL</span>
40
          <span className="player-detail--share__score__random">GOAL</span>
41
          <span className="player-detail--share__score__random">GOAL</span>
42
          <span className="player-detail--share__score__random">GOAL</span>
43
          <span className="player-detail--share__score__random">GOAL</span>
44
          <span className="player-detail--share__score__random">GOAL</span>
45
          <span className="player-detail--share__score__random">GOAL</span>
46
          <span className="player-detail--share__score__random">GOAL</span>
47
          <span className="player-detail--share__score__random">GOAL</span>
48
        </div>
49
        {renderPlayerHeader(player)}
50
51
        <img src={fallback} className="player-detail__bg--fallback" />
52
53
        <div
54
          className={`player-detail__bg-avatar`}
55
          style={
56
            player.relationships?.field_image_celebrate?.localFile?.childImageSharp?.gatsbyImageData && {
57
              backgroundImage: `url(${getSrc(
58
                player.relationships?.field_image_celebrate?.localFile?.childImageSharp?.gatsbyImageData
59
              )})`,
60
            }
61
          }
62
        />
63
64
        <span className="player-detail--share__title">Goal!</span>
65
        <div className={`player-detail--share__details`}>
66
          <span className="player-detail--share__match">{match}</span>
67
          <span className="player-detail--share__score">{score}</span>
68
        </div>
69
      </article>
70
    </Fragment>
71
  )
72
}
73
74
export default PlayerShare
75