@@ -6,6 +6,7 @@ import avatar from '../../common/helpers/avatar';
66import username from '../../common/helpers/username' ;
77import userOnline from '../../common/helpers/userOnline' ;
88import listItems from '../../common/helpers/listItems' ;
9+ import ItemList from '../../common/utils/ItemList' ;
910
1011/**
1112 * The `PostUser` component shows the avatar and username of a post's author.
@@ -19,32 +20,59 @@ export default class PostUser extends Component {
1920 const post = this . attrs . post ;
2021 const user = post . user ( ) ;
2122
22- if ( ! user ) {
23- return (
24- < div className = "PostUser" >
25- < h3 className = "PostUser-name" >
26- { avatar ( user , { className : 'PostUser-avatar' } ) } { username ( user ) }
27- </ h3 >
28- </ div >
23+ const items = user ? this . userViewItems ( user , post ) : this . noUserViewItems ( user ) ;
24+
25+ return < div className = "PostUser" > { items . toArray ( ) } </ div > ;
26+ }
27+
28+ noUserViewItems ( user ) {
29+ const items = new ItemList ( ) ;
30+
31+ items . add (
32+ 'postUser-name' ,
33+ < h3 className = "PostUser-name" >
34+ { avatar ( user , { className : 'PostUser-avatar' } ) } { username ( user ) }
35+ </ h3 > ,
36+ 100
37+ ) ;
38+
39+ return items ;
40+ }
41+
42+ userViewItems ( user , post ) {
43+ const items = new ItemList ( ) ;
44+
45+ items . add (
46+ 'postUser-name' ,
47+ < h3 className = "PostUser-name" >
48+ < Link href = { app . route . user ( user ) } > { this . linkChildren ( user ) . toArray ( ) } </ Link >
49+ </ h3 > ,
50+ 100
51+ ) ;
52+
53+ items . add ( 'postUser-badges' , < ul className = "PostUser-badges badges" > { listItems ( user . badges ( ) . toArray ( ) ) } </ ul > , 90 ) ;
54+
55+ if ( ! post . isHidden ( ) && this . attrs . cardVisible ) {
56+ items . add (
57+ 'postUser-card' ,
58+ < UserCard user = { user } className = "UserCard--popover" controlsButtonClassName = "Button Button--icon Button--flat" /> ,
59+ 80
2960 ) ;
3061 }
3162
32- return (
33- < div className = "PostUser" >
34- < h3 className = "PostUser-name" >
35- < Link href = { app . route . user ( user ) } >
36- { avatar ( user , { className : 'PostUser-avatar' } ) }
37- { userOnline ( user ) }
38- { username ( user ) }
39- </ Link >
40- </ h3 >
41- < ul className = "PostUser-badges badges" > { listItems ( user . badges ( ) . toArray ( ) ) } </ ul >
42-
43- { ! post . isHidden ( ) && this . attrs . cardVisible && (
44- < UserCard user = { user } className = "UserCard--popover" controlsButtonClassName = "Button Button--icon Button--flat" />
45- ) }
46- </ div >
47- ) ;
63+ return items ;
64+ }
65+
66+ linkChildren ( user ) {
67+ const items = new ItemList ( ) ;
68+
69+ items . add ( 'avatar' , avatar ( user , { className : 'PostUser-avatar' } ) , 100 ) ;
70+
71+ items . add ( 'userOnline' , userOnline ( user ) , 90 ) ;
72+
73+ items . add ( 'username' , username ( user ) , 80 ) ;
74+
75+ return items ;
4876 }
4977
5078 oncreate ( vnode ) {
0 commit comments