Skip to content

Commit 38be89a

Browse files
committed
WIP: Make author images circular
1 parent 208c5bc commit 38be89a

File tree

3 files changed

+60
-50
lines changed

3 files changed

+60
-50
lines changed

.vscode/settings.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
{
2+
}

components/PostCard.js

Lines changed: 54 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -5,62 +5,66 @@ const commentsImage = require('../images/comments.png');
55
const dummyUserImage = require('../images/dummyUser.png');
66

77
export class PostCard extends Component {
8-
constructor(props) {
9-
super(props);
10-
}
8+
constructor(props) {
9+
super(props);
10+
}
1111

12-
getReplacedImage(src) {
13-
var newSrc = 'https://cdn.hashnode.com/res/hashnode/image/upload/';
14-
var parts = src.split('/upload/');
15-
var format = parts[1].substring(parts[1].lastIndexOf('.') + 1);
16-
var imageNameParts = parts[1].substring(1, src.split('/upload/')[1].length).split('/');
17-
newSrc += (imageNameParts[1].split('.')[0] + '/' + imageNameParts[0] + '.' + format);
18-
return newSrc;
19-
}
12+
getReplacedImage(src) {
13+
var newSrc = 'https://cdn.hashnode.com/res/hashnode/image/upload/';
14+
var parts = src.split('/upload/');
15+
var format = parts[1].substring(parts[1].lastIndexOf('.') + 1);
16+
var imageNameParts = parts[1].substring(1, src.split('/upload/')[1].length).split('/');
17+
newSrc += (imageNameParts[1].split('.')[0] + '/' + imageNameParts[0] + '.' + format);
18+
return newSrc;
19+
}
2020

21-
loadProfileImage(src){
22-
if(!src){
23-
return;
24-
}
25-
if (src.indexOf('//res.cloudinary.com') !== -1 && src.indexOf('/upload/') !== -1) {
26-
return this.getReplacedImage(src);
27-
}
28-
return src;
29-
}
21+
loadProfileImage(src) {
22+
if (!src) {
23+
return;
24+
}
25+
if (src.indexOf('//res.cloudinary.com') !== -1 && src.indexOf('/upload/') !== -1) {
26+
return this.getReplacedImage(src);
27+
}
28+
return src;
29+
}
3030

31-
render() {
31+
render() {
3232

33-
const post = this.props.post;
33+
const post = this.props.post;
3434

35-
return (
36-
<div>
37-
{post.coverImage && <img className="post-cover" src={post.coverImage} width="100%" />}
38-
<div className="post-details">
39-
<a href={`https://hashnode.com/post/${post.slug}-${post.cuid}?utm_source=chrome_extension&utm_medium=extension`} target="_blank">
40-
<h3 className="post-title">{post.title}</h3>
41-
<p className="post-desc">
42-
{post.brief.substring(0,140)}...
35+
return (
36+
<div>
37+
{post.coverImage && <img className="post-cover" src={post.coverImage} width="100%" />}
38+
<div className="post-details">
39+
<a href={`https://hashnode.com/post/${post.slug}-${post.cuid}?utm_source=chrome_extension&utm_medium=extension`} target="_blank">
40+
<h3 className="post-title">{post.title}</h3>
41+
<p className="post-desc">
42+
{post.brief.substring(0, 140)}...
4343
</p>
44-
</a>
45-
<div className="post-footer">
46-
<a href={`${post.author ? 'https://hashnode.com/@'+post.author.username+'?utm_source=chrome_extension&utm_medium=extension' : ''}`} target="_blank" className="author">
47-
<img src={((post.author && post.author.photo && this.loadProfileImage(post.author.photo)) || dummyUserImage)} />
48-
</a>
49-
<div className="post-activity">
50-
<a href={`https://hashnode.com/post/${post.slug}-${post.cuid}?utm_source=chrome_extension&utm_medium=extension`} target="_blank" className="reactions">
51-
<img src={thumbsImage} />
52-
{post.totalReactions}
53-
</a>
54-
<a href={`https://hashnode.com/post/${post.slug}-${post.cuid}?utm_source=chrome_extension&utm_medium=extension`} target="_blank" className="comments">
55-
<img src={commentsImage} />
56-
{post.responseCount}
57-
</a>
58-
</div>
59-
</div>
60-
</div>
61-
</div>
62-
)
63-
}
44+
</a>
45+
<div className="post-footer">
46+
<a href={`${post.author ? 'https://hashnode.com/@' + post.author.username + '?utm_source=chrome_extension&utm_medium=extension' : ''}`} target="_blank" className="author"
47+
style={{
48+
backgroundImage: 'url("' + ((post.author && post.author.photo && this.loadProfileImage(post.author.photo)) || dummyUserImage) + '")'
49+
}}
50+
>
51+
{/* <img src={((post.author && post.author.photo && this.loadProfileImage(post.author.photo)) || dummyUserImage)} /> */}
52+
</a>
53+
<div className="post-activity">
54+
<a href={`https://hashnode.com/post/${post.slug}-${post.cuid}?utm_source=chrome_extension&utm_medium=extension`} target="_blank" className="reactions">
55+
<img src={thumbsImage} />
56+
{post.totalReactions}
57+
</a>
58+
<a href={`https://hashnode.com/post/${post.slug}-${post.cuid}?utm_source=chrome_extension&utm_medium=extension`} target="_blank" className="comments">
59+
<img src={commentsImage} />
60+
{post.responseCount}
61+
</a>
62+
</div>
63+
</div>
64+
</div>
65+
</div>
66+
)
67+
}
6468
}
6569

6670
export default PostCard

styles/App.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,10 @@ button{
379379
}
380380

381381
.author{
382+
width: 30px;
383+
height: 30px;
384+
border-radius: 100px;
385+
background-size: cover;
382386
display: -webkit-box;
383387
display: -ms-flexbox;
384388
display: flex;

0 commit comments

Comments
 (0)