Completed
Push — master ( 158ed8...34f194 )
by Alejandro
04:53 queued 02:19
created

src/common/Home.js   A

Complexity

Total Complexity 2
Complexity/F 1

Size

Lines of Code 53
Function Count 2

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
eloc 44
mnd 0
bc 0
fnc 2
dl 0
loc 53
ccs 6
cts 6
cp 1
rs 10
bpm 0
cpm 1
noi 0
c 0
b 0
f 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A Home.render 0 31 1
A Home.componentDidMount 0 3 1
1
import { faChevronRight as chevronIcon } from '@fortawesome/free-solid-svg-icons';
2
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
import { isEmpty, values } from 'ramda';
4
import React from 'react';
5
import { Link } from 'react-router-dom';
6
import { ListGroup, ListGroupItem } from 'reactstrap';
7
import PropTypes from 'prop-types';
8
import './Home.scss';
9
10
export default class Home extends React.Component {
11
  static propTypes = {
12
    resetSelectedServer: PropTypes.func,
13
    servers: PropTypes.object,
14
  };
15
16
  componentDidMount() {
17 4
    this.props.resetSelectedServer();
18
  }
19
20
  render() {
21 4
    const { servers: { list, loading } } = this.props;
22 4
    const servers = values(list);
23 4
    const hasServers = !isEmpty(servers);
24
25 4
    return (
26
      <div className="home">
27
        <h1 className="home__title">Welcome to Shlink</h1>
28
        <h5 className="home__intro">
29
          {!loading && hasServers && <span>Please, select a server.</span>}
30
          {!loading && !hasServers && <span>Please, <Link to="/server/create">add a server</Link>.</span>}
31
          {loading && <span>Trying to load servers...</span>}
32
        </h5>
33
34
        {!loading && hasServers && (
35
          <ListGroup className="home__servers-list">
36
            {servers.map(({ name, id }) => (
37 2
              <ListGroupItem
38
                key={id}
39
                tag={Link}
40
                to={`/server/${id}/list-short-urls/1`}
41
                className="home__servers-item"
42
              >
43
                {name}
44
                <FontAwesomeIcon icon={chevronIcon} className="home__servers-item-icon" />
45
              </ListGroupItem>
46
            ))}
47
          </ListGroup>
48
        )}
49
      </div>
50
    );
51
  }
52
}
53