Skip to content

Commit 49e9012

Browse files
Fixes #192- Fetching articles from Medium
1 parent 9ac628f commit 49e9012

File tree

2 files changed

+113
-61
lines changed

2 files changed

+113
-61
lines changed
Lines changed: 47 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,48 @@
1-
import React from 'react'
2-
import { Card } from 'react-bootstrap';
3-
const ActivityCard = (props) => {
4-
return (
5-
<Card style={{ width: '18rem',marginBottom:"2vh",border:"0px" }} className="shadow-lg">
6-
<Card.Img variant="top" src={props.activity.img} />
7-
<Card.Body>
8-
<Card.Title><h3 style={{textTransform: "capitalize"}}>{props.activity.title}</h3></Card.Title>
9-
<Card.Text style={{textTransform: "capitalize"}}>
10-
{props.activity.text}
11-
</Card.Text>
12-
<a href={props.activity.link} class="shadow lift mr-1" style={{color:"#22247A"}}><u>Read More</u></a>
13-
</Card.Body>
14-
</Card>
1+
import React from "react";
2+
import { Card } from "react-bootstrap";
3+
const ActivityCard = props => {
4+
return (
5+
<div>
6+
<Card
7+
style={{
8+
width: "65em",
9+
marginBottom: "2vh",
10+
border: "1px solid #d4d0cf"
11+
}}
12+
className="shadow-lg"
13+
>
14+
<Card.Img
15+
variant="top"
16+
src={props.activity.img}
17+
style={{ height: "175px", objectFit: "cover" }}
18+
/>
19+
<Card.Body>
20+
<Card.Title>
21+
<div style={{ width: "300px", margin: "0 auto" }}>
22+
<h3
23+
style={{
24+
textTransform: "capitalize",
25+
overflowWrap: "break-word"
26+
}}
27+
>
28+
{props.activity.title}
29+
</h3>
30+
</div>
31+
</Card.Title>
32+
<Card.Text style={{ textTransform: "capitalize" }}>
33+
{props.activity.text}
34+
</Card.Text>
35+
<a
36+
href={props.activity.link}
37+
class="btn btn-sm btn-primary"
38+
style={{ backgroundColor: "#22247A" }}
39+
>
40+
Read More
41+
</a>
42+
</Card.Body>
43+
</Card>
44+
</div>
45+
);
46+
};
1547

16-
)
17-
}
18-
19-
export default ActivityCard
48+
export default ActivityCard;
Lines changed: 66 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,72 @@
1-
import React from 'react'
2-
import ActivityCard from '../../../components/Activities/ActivityCard'
3-
import KWoC from '../images/kwoc_logo.png'
4-
import workshop19 from '../images/workshop.jpg'
5-
import './common.css'
6-
var activities = [
7-
{
8-
img:'https://1.bp.blogspot.com/-Ig-v1tDXZt4/XDODmZvWp1I/AAAAAAAAB0A/KtbFdBPFVQw2O15FekkIR0Yg8MUp--rngCLcBGAs/s1600/GCI%2B-%2BVertical%2B-%2BGray%2BText%2B-%2BWhite%2BBG.png',
9-
title:'Google CodeIN 2019-20',
10-
text:'Competition for preschool.',
11-
link:'/#/gci19'
12-
},
13-
{
14-
img:'https://cdn.shortpixel.ai/spai/q_lossy+ret_img/https://numfocus.org/wp-content/uploads/2017/03/vertical-gsoc-logo_1-1.jpg',
15-
title:'Google Summer of Code 2019',
16-
text:'Competition for undergraduate students.',
17-
link:'/#/gsoc19'
18-
},
19-
{
20-
img:KWoC,
21-
title:'Kharagpur Winter of Code 2019',
22-
text:'Competition for undergraduate students.',
23-
link:'/#/kwoc19'
24-
},
25-
{
26-
img:workshop19,
27-
title:'Organized a Workshop/ Event At New Delhi Together With Women Who Code',
28-
text:'Competition for undergraduate students.',
29-
link:'/#/workshop19'
30-
},
31-
]
1+
import React, { Component } from "react";
2+
import ActivityCard from "../../../components/Activities/ActivityCard";
3+
import KWoC from "../images/kwoc_logo.png";
4+
import workshop19 from "../images/workshop.jpg";
5+
import "./common.css";
326

33-
const MapActivites = activities.map((activity,index)=>{return <ActivityCard key={index} activity={activity}/> })
7+
class Activities extends React.Component {
8+
constructor(props) {
9+
super(props);
10+
this.state = {
11+
activities: []
12+
};
13+
}
3414

15+
componentDidMount() {
16+
let activities = [];
17+
fetch("https://medium-article-fetcher.herokuapp.com/posts", {
18+
crossDomain: true,
19+
method: "GET",
20+
headers: { "Content-Type": "application/json" }
21+
})
22+
.then(res => {
23+
return res.json();
24+
})
25+
.then(resData => {
26+
for (let i = 0; i < 4; i++) {
27+
let obj = {};
28+
obj.title = resData.items[i].title;
29+
obj.link = resData.items[i].link;
3530

36-
const Activities = () => {
31+
let m,
32+
urls = [],
33+
str = resData.items[i].content_encoded,
34+
rex = /<img[^>]+src="?([^"\s]+)"?\s*\/>/g;
35+
36+
while ((m = rex.exec(str))) {
37+
urls.push(m[1]);
38+
}
39+
obj.img = urls[0];
40+
activities.push(obj);
41+
}
42+
this.setState({ activities: activities }, () => {
43+
console.log(this.state.activities);
44+
});
45+
})
46+
.catch(err => {
47+
console.log(err);
48+
});
49+
}
50+
render() {
3751
return (
38-
<div id="activity">
39-
<h1 className="component-heading">Activities</h1>
40-
<div class="container">
41-
<div class="row"style={{display:"flex",justifyContent:"space-around"}}>
42-
{MapActivites}
43-
</div>
44-
</div>
45-
</div>
46-
)
52+
<div id="activity">
53+
<h1 className="component-heading">Activities</h1>
54+
<div class="container">
55+
<div
56+
class="row"
57+
style={{
58+
display: "flex",
59+
justifyContent: "space-around"
60+
}}
61+
>
62+
{this.state.activities.map((currentActivity, index) => {
63+
return <ActivityCard key={index} activity={currentActivity} />;
64+
})}
65+
</div>
66+
</div>
67+
</div>
68+
);
69+
}
4770
}
4871

49-
export default Activities
72+
export default Activities;

0 commit comments

Comments
 (0)