Skip to content

Commit ba673cd

Browse files
Ashish KumarAshish Kumar
authored andcommitted
chore: eslint enabled
1 parent 0a5bde6 commit ba673cd

34 files changed

+3332
-1502
lines changed

.eslintignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/client-build
2+
/node_modules
3+
/server-build
4+
.gitignore

.eslintrc

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
{
2+
"root": true,
3+
"env": {
4+
"browser": true,
5+
"es6": true,
6+
"commonjs": true,
7+
"node": true
8+
},
9+
"extends": [
10+
"airbnb-base",
11+
"eslint:recommended",
12+
"plugin:react/recommended"
13+
],
14+
"parser": "babel-eslint",
15+
"parserOptions": {
16+
"allowImportExportEverywhere": true,
17+
"ecmaVersion": 8,
18+
"sourceType": "module",
19+
"ecmaFeatures": {
20+
"jsx": true
21+
}
22+
},
23+
"settings": {
24+
"react": {
25+
"createClass": "createReactClass",
26+
"pragma": "React",
27+
"version": "detect",
28+
"flowVersion": "0.53"
29+
}
30+
},
31+
"plugins": ["react"],
32+
"rules": {
33+
"no-console": "off",
34+
"semi": [
35+
"error", "always"
36+
],
37+
"quotes": [
38+
"error", "double"
39+
],
40+
"indent": [
41+
"error", 4
42+
],
43+
"react/jsx-indent": [
44+
"error",
45+
4, {
46+
"checkAttributes": true
47+
}
48+
],
49+
"max-len": 0,
50+
"react/jsx-uses-react": "error",
51+
"react/jsx-uses-vars": "error",
52+
"react/react-in-jsx-scope": "off",
53+
"react/destructuring-assignment": "off",
54+
"no-nested-ternary": "warn",
55+
"react/prop-types": 0,
56+
"prefer-destructuring": [
57+
"warn", {
58+
"VariableDeclarator": {
59+
"array": false,
60+
"object": true
61+
},
62+
"AssignmentExpression": {
63+
"array": true,
64+
"object": false
65+
}
66+
}, {
67+
"enforceForRenamedProperties": false
68+
}
69+
],
70+
"comma-dangle": [
71+
"error", {
72+
"arrays": "never",
73+
"objects": "never",
74+
"imports": "never",
75+
"exports": "never",
76+
"functions": "never"
77+
}
78+
],
79+
"import/no-extraneous-dependencies": [
80+
"error", {
81+
"devDependencies": true,
82+
"optionalDependencies": true,
83+
"peerDependencies": true
84+
}
85+
]
86+
}
87+
}

client/App.js

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1-
import React, {Component} from "react";
1+
import React from "react";
22
import { renderRoutes } from "react-router-config";
3+
import withStyles from "isomorphic-style-loader/withStyles";
34
import Routes from "./Routes";
4-
import styles from "./scss/root.scss";
5-
import withStyles from 'isomorphic-style-loader/withStyles'
6-
class App extends Component {
7-
render() {
8-
return (
9-
<div className={`container`}>
10-
{renderRoutes(Routes)}
11-
</div>
12-
);
13-
}
14-
}
5+
import styles from "./scss/root.scss";
6+
7+
const App = () => (
8+
<div className={"container"}>
9+
{renderRoutes(Routes)}
10+
</div>
11+
);
1512

1613
export default withStyles(styles)(App);

client/AppContainer.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import React, {Component} from "react";
2-
import {renderRoutes} from "react-router-config";
3-
1+
import React, { Component } from "react";
2+
import { renderRoutes } from "react-router-config";
43

54
class AppContainer extends Component {
65
render() {
@@ -13,4 +12,4 @@ class AppContainer extends Component {
1312
}
1413

1514

16-
export default AppContainer;
15+
export default AppContainer;

client/Routes.js

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import React from "react";
2-
import loadable from '@loadable/component';
3-
import {fetchStories} from "./actions";
2+
import loadable from "@loadable/component";
3+
import { fetchStories } from "./actions";
44

55
const Loading = () => <h1>Loading...</h1>;
66

7-
const AppContainer = loadable(() => import(/* webpackChunkName: "appcontainer" */ "./AppContainer"),{
7+
const AppContainer = loadable(() => import(/* webpackChunkName: "appcontainer" */ "./AppContainer"), {
88
fallback: <Loading />,
99
ssr: true
1010
});
1111

12-
const Home = loadable(() => import(/* webpackChunkName: "home" */ "./containers/Home"),{
12+
const Home = loadable(() => import(/* webpackChunkName: "home" */ "./containers/Home"), {
1313
fallback: <Loading/>,
1414
ssr: true
1515
});
@@ -23,16 +23,14 @@ export default [
2323
exact: false,
2424
path: "/",
2525
component: Home,
26-
loadData: (store,route,path,queryParams,urlParams) => {
27-
/**
28-
* this function will be called on server side.
29-
* Please check /server/helpers/ServeWeb.js for better understanding
30-
*/
31-
return [
32-
store.dispatch(fetchStories(queryParams && (queryParams.page || 0)))
33-
]
34-
}
35-
},
26+
/**
27+
* this function will be called on server side.
28+
* Please check /server/helpers/ServeWeb.js for better understanding
29+
*/
30+
loadData: (store, route, path, queryParams) => ([
31+
store.dispatch(fetchStories(queryParams && (queryParams.page || 0)))
32+
])
33+
}
3634
]
3735
}
38-
];
36+
];

client/actions/index.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
1+
/* eslint-disable import/prefer-default-export */
12
import {
23
FETCH_STORIES_FAILURE,
34
FETCH_STORIES_PENDING,
4-
FETCH_STORIES_SUCCESS
5-
} from "./../constants/ActionTypes";
5+
FETCH_STORIES_SUCCESS
6+
} from "../constants/ActionTypes";
7+
8+
export const fetchStories = (page = 0) => async (dispatch, getState, api) => {
9+
try {
10+
dispatch({ type: FETCH_STORIES_PENDING });
611

7-
export const fetchStories = (page=0) => async(dispatch, getState, api) => {
8-
try{
9-
dispatch({type: FETCH_STORIES_PENDING});
10-
1112
const res = await api.get(`/search?page=${page}&hitsPerPage=30`);
1213
// console.log(res);
1314
dispatch({
1415
type: FETCH_STORIES_SUCCESS,
1516
payload: res.data
1617
});
17-
}catch(err){
18+
} catch (err) {
1819
console.log(err);
1920
dispatch({
2021
type: FETCH_STORIES_FAILURE
2122
});
2223
}
23-
}
24+
};
Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,38 @@
1-
import React,{Component} from "react";
2-
import {connect} from "react-redux";
3-
import {withRouter} from "react-router";
4-
import {Link} from "react-router-dom";
1+
import React, { Component } from "react";
2+
import { connect } from "react-redux";
3+
import { withRouter } from "react-router";
4+
import { Link } from "react-router-dom";
55

6-
class PaginationButton extends Component{
7-
render(){
8-
const {data} = this.props;
6+
class PaginationButton extends Component {
7+
render() {
8+
const { data } = this.props;
99
const currPage = data.page;
1010
const maxPage = data.nbPages;
11-
return(
11+
return (
1212
<React.Fragment>
13-
<Link
13+
<Link
1414
to={`/?page=${currPage >= 1 ? currPage - 1 : 0}`}
15-
className={`${currPage == 0 ? "disabled" : ""} nav-btn text-orange`}
15+
className={`${currPage === 0 ? "disabled" : ""} nav-btn text-orange`}
1616
>
1717
Previous
1818
</Link>
19-
20-
&nbsp;&nbsp;|&nbsp;&nbsp;
21-
22-
<Link
19+
20+
&nbsp;&nbsp;|&nbsp;&nbsp;
21+
22+
<Link
2323
to={`/?page=${(currPage >= 0 && currPage < maxPage) ? currPage + 1 : maxPage}`}
24-
className={`${currPage == maxPage ? "disabled" : ""} nav-btn text-orange`}
24+
className={`${currPage === maxPage ? "disabled" : ""} nav-btn text-orange`}
2525
>
2626
Next
2727
</Link>
2828
</React.Fragment>
29-
)
29+
);
3030
}
3131
}
3232

33-
const mapStateToProps = ({stories}) => ({
33+
const mapStateToProps = ({ stories }) => ({
3434
data: stories.data
3535
});
3636

37-
export default withRouter(connect(mapStateToProps,{
38-
})(PaginationButton));
37+
export default withRouter(connect(mapStateToProps, {
38+
})(PaginationButton));
Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,68 @@
11
import React from "react";
22

33
const getOriginFromUrl = (str) => {
4-
if(!str){
4+
if (!str) {
55
return null;
66
}
7-
try{
7+
try {
88
const url = new window.URL(str);
9-
return url.origin;
10-
}catch(err){
9+
return url.origin;
10+
} catch (err) {
1111
// console.log(err);
1212
return str;
1313
}
14-
}
14+
};
1515

16-
export default (props) => {
16+
const getClassForPoints = (points = 0) => {
17+
if (points >= 50 && points < 100) {
18+
return "text-brown";
19+
} if (points >= 100) {
20+
return "text-orange";
21+
}
22+
return null;
23+
};
24+
25+
const ListItem = (props) => {
1726
const {
18-
num_comments, // Number of comments
27+
num_comments: numComments, // Number of comments
1928
points, // Vote Count
2029
title,
2130
url,
22-
author,
23-
created_at
31+
author
2432
} = props.data;
25-
if(!title){
33+
if (!title) {
2634
return null;
2735
}
28-
29-
const getClassForPoints = (points=0) => {
30-
if(points >= 50 && points < 100){
31-
return "text-brown"
32-
}else if(points >= 100){
33-
return "text-orange";
34-
}else{
35-
return null;
36-
}
37-
}
3836
const className = getClassForPoints(points);
3937
return (
4038
<tr className="row-item">
41-
<td className="row-item__td">{num_comments || "-"}</td>
39+
<td className="row-item__td">{numComments || "-"}</td>
4240
<td className={`row-item__td ${className}`}>{points || "-"}</td>
4341
<td className="row-item__td">
4442
<span className="caret-upvote"></span>
4543
</td>
4644
<td className="row-item__td">
4745
<div className="row-item__info clearfix">
4846
<div className="row-item__info--title">
49-
<a href={url} target="__blank" suppressHydrationWarning={true}>
47+
<a href={url} target="__blank">
5048
{title}
5149
</a>
52-
<small>{getOriginFromUrl(url)}</small>
50+
<small suppressHydrationWarning={true}>{getOriginFromUrl(url)}</small>
5351
</div>
5452
<div className="row-item__info--meta">
5553
<div className="row-item__info--meta-block">
5654
<small>by <strong>{author}</strong></small>
5755
</div>
5856
<div className="row-item__info--meta-block">
5957
<small>
60-
<a href="#">hide</a>
58+
<a href="#">hide</a>
6159
</small>
6260
</div>
6361
</div>
6462
</div>
6563
</td>
6664
</tr>
67-
)
68-
}
65+
);
66+
};
67+
68+
export default ListItem;

0 commit comments

Comments
 (0)