@@ -18,6 +18,7 @@ import {
1818 commentAuthorAvatar as authorIcon ,
1919 layout as themeIcon ,
2020 plugins as pluginIcon ,
21+ globe as globeIcon ,
2122} from '@wordpress/icons' ;
2223import { __ } from '@wordpress/i18n' ;
2324
@@ -35,25 +36,57 @@ function CustomizedTooltip( { isCustomized, children } ) {
3536 ) ;
3637}
3738
39+ function BaseAddedBy ( { text, icon, imageUrl, isCustomized } ) {
40+ const [ isImageLoaded , setIsImageLoaded ] = useState ( false ) ;
41+
42+ return (
43+ < HStack alignment = "left" >
44+ < CustomizedTooltip isCustomized = { isCustomized } >
45+ { imageUrl ? (
46+ < div
47+ className = { classnames (
48+ 'edit-site-list-added-by__avatar' ,
49+ {
50+ 'is-loaded' : isImageLoaded ,
51+ }
52+ ) }
53+ >
54+ < img
55+ onLoad = { ( ) => setIsImageLoaded ( true ) }
56+ alt = ""
57+ src = { imageUrl }
58+ />
59+ </ div >
60+ ) : (
61+ < div
62+ className = { classnames (
63+ 'edit-site-list-added-by__icon' ,
64+ {
65+ 'is-customized' : isCustomized ,
66+ }
67+ ) }
68+ >
69+ < Icon icon = { icon } />
70+ </ div >
71+ ) }
72+ </ CustomizedTooltip >
73+ < span > { text } </ span >
74+ </ HStack >
75+ ) ;
76+ }
77+
3878function AddedByTheme ( { slug, isCustomized } ) {
3979 const theme = useSelect (
4080 ( select ) => select ( coreStore ) . getTheme ( slug ) ,
4181 [ slug ]
4282 ) ;
4383
4484 return (
45- < HStack alignment = "left" >
46- < CustomizedTooltip isCustomized = { isCustomized } >
47- < div
48- className = { classnames ( 'edit-site-list-added-by__icon' , {
49- 'is-customized' : isCustomized ,
50- } ) }
51- >
52- < Icon icon = { themeIcon } />
53- </ div >
54- </ CustomizedTooltip >
55- < span > { theme ?. name ?. rendered || slug } </ span >
56- </ HStack >
85+ < BaseAddedBy
86+ icon = { themeIcon }
87+ text = { theme ?. name ?. rendered || slug }
88+ isCustomized = { isCustomized }
89+ />
5790 ) ;
5891}
5992
@@ -64,54 +97,25 @@ function AddedByPlugin( { slug, isCustomized } ) {
6497 ) ;
6598
6699 return (
67- < HStack alignment = "left" >
68- < CustomizedTooltip isCustomized = { isCustomized } >
69- < div
70- className = { classnames ( 'edit-site-list-added-by__icon' , {
71- 'is-customized' : isCustomized ,
72- } ) }
73- >
74- < Icon icon = { pluginIcon } />
75- </ div >
76- </ CustomizedTooltip >
77- < span > { plugin ?. name || slug } </ span >
78- </ HStack >
100+ < BaseAddedBy
101+ icon = { pluginIcon }
102+ text = { plugin ?. name || slug }
103+ isCustomized = { isCustomized }
104+ />
79105 ) ;
80106}
81107
82108function AddedByAuthor ( { id } ) {
83109 const user = useSelect ( ( select ) => select ( coreStore ) . getUser ( id ) , [
84110 id ,
85111 ] ) ;
86- const [ isImageLoaded , setIsImageLoaded ] = useState ( false ) ;
87-
88- const avatarURL = user ?. avatar_urls ?. [ 48 ] ;
89- const hasAvatar = ! ! avatarURL ;
90112
91113 return (
92- < HStack alignment = "left" >
93- < div
94- className = { classnames (
95- hasAvatar
96- ? 'edit-site-list-added-by__avatar'
97- : 'edit-site-list-added-by__icon' ,
98- {
99- 'is-loaded' : isImageLoaded ,
100- }
101- ) }
102- >
103- { hasAvatar ? (
104- < img
105- onLoad = { ( ) => setIsImageLoaded ( true ) }
106- alt = ""
107- src = { avatarURL }
108- />
109- ) : (
110- < Icon icon = { authorIcon } />
111- ) }
112- </ div >
113- < span > { user ?. nickname } </ span >
114- </ HStack >
114+ < BaseAddedBy
115+ icon = { authorIcon }
116+ imageUrl = { user ?. avatar_urls [ 48 ] }
117+ text = { user ?. nickname }
118+ />
115119 ) ;
116120}
117121
@@ -121,29 +125,15 @@ function AddedBySite() {
121125 const siteData = getEntityRecord ( 'root' , '__unstableBase' ) ;
122126
123127 return {
124- name : siteData . name ,
128+ name : siteData ? .name ,
125129 logoURL : siteData ?. site_logo
126130 ? getMedia ( siteData . site_logo ) ?. source_url
127131 : undefined ,
128132 } ;
129133 } , [ ] ) ;
130- const [ isImageLoaded , setIsImageLoaded ] = useState ( false ) ;
131134
132135 return (
133- < HStack alignment = "left" >
134- < div
135- className = { classnames ( 'edit-site-list-added-by__avatar' , {
136- 'is-loaded' : isImageLoaded ,
137- } ) }
138- >
139- < img
140- onLoad = { ( ) => setIsImageLoaded ( true ) }
141- alt = ""
142- src = { logoURL }
143- />
144- </ div >
145- < span > { name } </ span >
146- </ HStack >
136+ < BaseAddedBy icon = { globeIcon } imageUrl = { logoURL } text = { name } />
147137 ) ;
148138}
149139
0 commit comments