Skip to content

Commit 15e377a

Browse files
committed
Sessions: Split SessionDetails into two smaller components
See #33 (comment)
1 parent edb252b commit 15e377a

File tree

1 file changed

+49
-48
lines changed

1 file changed

+49
-48
lines changed

public_html/wp-content/mu-plugins/blocks/assets/src/sessions/block-content.js

+49-48
Original file line numberDiff line numberDiff line change
@@ -76,48 +76,51 @@ function SessionImage( { session } ) {
7676
return image;
7777
}
7878

79-
function SessionDetails( { session, show_meta, show_category } ) {
80-
let meta, metaContent, category;
79+
function SessionMeta( { session } ) {
80+
let metaContent;
8181
const terms = get( session, '_embedded[\'wp:term\']', [] ).flat();
8282

83-
if ( show_meta ) {
84-
if ( session.session_track.length ) {
85-
const [ firstTrack ] = terms.filter( ( term ) => {
86-
return 'wcb_track' === term.taxonomy;
87-
} );
88-
89-
metaContent = arrayTokenReplace(
90-
/* translators: 1: A date; 2: A time; 3: A location; */
91-
tokenSplit( __( '%1$s at %2$s in %3$s', 'wordcamporg' ) ),
92-
[
93-
decodeEntities( session.session_date_time.date ),
94-
decodeEntities( session.session_date_time.time ),
95-
(
96-
<span className={ classnames( 'wordcamp-session-track', 'wordcamp-session-track-' + decodeEntities( firstTrack.slug.trim() ) ) }>
83+
if ( session.session_track.length ) {
84+
const [ firstTrack ] = terms.filter( ( term ) => {
85+
return 'wcb_track' === term.taxonomy;
86+
} );
87+
88+
metaContent = arrayTokenReplace(
89+
/* translators: 1: A date; 2: A time; 3: A location; */
90+
tokenSplit( __( '%1$s at %2$s in %3$s', 'wordcamporg' ) ),
91+
[
92+
decodeEntities( session.session_date_time.date ),
93+
decodeEntities( session.session_date_time.time ),
94+
(
95+
<span className={ classnames( 'wordcamp-session-track', 'wordcamp-session-track-' + decodeEntities( firstTrack.slug.trim() ) ) }>
9796
{ decodeEntities( firstTrack.name.trim() ) }
9897
</span>
99-
),
100-
]
101-
);
102-
} else {
103-
metaContent = arrayTokenReplace(
104-
/* translators: 1: A date; 2: A time; */
105-
tokenSplit( __( '%1$s at %2$s', 'wordcamporg' ) ),
106-
[
107-
decodeEntities( session.session_date_time.date ),
108-
decodeEntities( session.session_date_time.time ),
109-
]
110-
);
111-
}
112-
113-
meta = (
114-
<div className="wordcamp-session-time-location">
115-
{ metaContent }
116-
</div>
98+
),
99+
]
100+
);
101+
} else {
102+
metaContent = arrayTokenReplace(
103+
/* translators: 1: A date; 2: A time; */
104+
tokenSplit( __( '%1$s at %2$s', 'wordcamporg' ) ),
105+
[
106+
decodeEntities( session.session_date_time.date ),
107+
decodeEntities( session.session_date_time.time ),
108+
]
117109
);
118110
}
119111

120-
if ( show_category && session.session_category.length ) {
112+
return (
113+
<div className="wordcamp-session-time-location">
114+
{ metaContent }
115+
</div>
116+
);
117+
}
118+
119+
function SessionCategory( { session } ) {
120+
let categoryContent;
121+
const terms = get( session, '_embedded[\'wp:term\']', [] ).flat();
122+
123+
if ( session.session_category.length ) {
121124
/* translators: used between list items, there is a space after the comma */
122125
const separator = __( ', ', 'wordcamporg' );
123126
const categories = terms
@@ -135,17 +138,12 @@ function SessionDetails( { session, show_meta, show_category } ) {
135138
);
136139
} );
137140

138-
category = (
139-
<div className="wordcamp-session-categories">
140-
{ intersperse( categories, separator ) }
141-
</div>
142-
);
141+
categoryContent = intersperse( categories, separator );
143142
}
144143

145144
return (
146-
<div className="wordcamp-item-meta wordcamp-session-details">
147-
{ meta }
148-
{ category }
145+
<div className="wordcamp-session-categories">
146+
{ categoryContent }
149147
</div>
150148
);
151149
}
@@ -203,11 +201,14 @@ class SessionsBlockContent extends Component {
203201
}
204202

205203
{ ( show_meta || show_category ) &&
206-
<SessionDetails
207-
session={ post }
208-
show_meta={ show_meta }
209-
show_category={ show_category }
210-
/>
204+
<div className="wordcamp-item-meta wordcamp-session-details">
205+
{ show_meta &&
206+
<SessionMeta session={ post } />
207+
}
208+
{ show_category &&
209+
<SessionCategory session={ post } />
210+
}
211+
</div>
211212
}
212213
</div>
213214
) }

0 commit comments

Comments
 (0)