Skip to content

Commit a37606c

Browse files
committed
refactor: field names
1 parent 7a39dc5 commit a37606c

File tree

1 file changed

+53
-36
lines changed

1 file changed

+53
-36
lines changed

crates/rostra-web-ui/src/routes/content/filters.rs

Lines changed: 53 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,20 @@ where
143143

144144
/// Tracks the type of media transformation being applied
145145
enum MediaTransform<'s> {
146-
/// Rostra media link - stores the event_id and alt text
147-
RostraMedia(ShortEventId, String),
148-
/// External embeddable media (YouTube, etc.) - stores the HTML, hostname,
149-
/// and alt text
150-
EmbeddableMedia(String, String, String),
151-
/// Regular external image - stores the URL, link type, and alt text
152-
ExternalImage(Cow<'s, str>, jotup::SpanLinkType, String),
146+
/// Rostra media link
147+
RostraMedia { event_id: ShortEventId, alt: String },
148+
/// External embeddable media (YouTube, etc.)
149+
EmbeddableMedia {
150+
html: String,
151+
hostname: String,
152+
alt: String,
153+
},
154+
/// Regular external image
155+
ExternalImage {
156+
url: Cow<'s, str>,
157+
link_type: jotup::SpanLinkType,
158+
alt: String,
159+
},
153160
}
154161

155162
/// Filter that transforms media elements:
@@ -189,8 +196,10 @@ where
189196
Event::Start(Container::Image(s, link_type), _attr) => {
190197
if let Some(event_id) = UiState::extra_rostra_media_link(&s) {
191198
// Store event_id to look up content later
192-
self.container_stack
193-
.push(Some(MediaTransform::RostraMedia(event_id, String::new())));
199+
self.container_stack.push(Some(MediaTransform::RostraMedia {
200+
event_id,
201+
alt: String::new(),
202+
}));
194203
// Don't emit Start yet - we'll emit everything in End
195204
Ok(())
196205
} else {
@@ -201,18 +210,18 @@ where
201210
.and_then(|u| u.host_str().map(|h| h.to_string()))
202211
.unwrap_or_default();
203212
self.container_stack
204-
.push(Some(MediaTransform::EmbeddableMedia(
213+
.push(Some(MediaTransform::EmbeddableMedia {
205214
html,
206215
hostname,
207-
String::new(),
208-
)));
216+
alt: String::new(),
217+
}));
209218
} else {
210219
self.container_stack
211-
.push(Some(MediaTransform::ExternalImage(
212-
s.clone(),
220+
.push(Some(MediaTransform::ExternalImage {
221+
url: s.clone(),
213222
link_type,
214-
String::new(),
215-
)));
223+
alt: String::new(),
224+
}));
216225
}
217226
// Start the lazy-load wrapper div
218227
self.inner
@@ -236,9 +245,9 @@ where
236245
// If we're inside a media transformation, capture the alt text
237246
if let Some(Some(transform)) = self.container_stack.last_mut() {
238247
match transform {
239-
MediaTransform::RostraMedia(_, alt)
240-
| MediaTransform::EmbeddableMedia(_, _, alt)
241-
| MediaTransform::ExternalImage(_, _, alt) => {
248+
MediaTransform::RostraMedia { alt, .. }
249+
| MediaTransform::EmbeddableMedia { alt, .. }
250+
| MediaTransform::ExternalImage { alt, .. } => {
242251
// Append to alt text (may be split across multiple Str events)
243252
alt.push_str(&s);
244253
Ok(())
@@ -270,9 +279,9 @@ where
270279
_ => unreachable!(),
271280
};
272281
match transform {
273-
MediaTransform::RostraMedia(_, alt)
274-
| MediaTransform::EmbeddableMedia(_, _, alt)
275-
| MediaTransform::ExternalImage(_, _, alt) => {
282+
MediaTransform::RostraMedia { alt, .. }
283+
| MediaTransform::EmbeddableMedia { alt, .. }
284+
| MediaTransform::ExternalImage { alt, .. } => {
276285
alt.push(ch);
277286
}
278287
}
@@ -285,9 +294,9 @@ where
285294
Event::NonBreakingSpace | Event::Softbreak => {
286295
if let Some(Some(transform)) = self.container_stack.last_mut() {
287296
match transform {
288-
MediaTransform::RostraMedia(_, alt)
289-
| MediaTransform::EmbeddableMedia(_, _, alt)
290-
| MediaTransform::ExternalImage(_, _, alt) => {
297+
MediaTransform::RostraMedia { alt, .. }
298+
| MediaTransform::EmbeddableMedia { alt, .. }
299+
| MediaTransform::ExternalImage { alt, .. } => {
291300
alt.push(' ');
292301
}
293302
}
@@ -299,9 +308,9 @@ where
299308
Event::Hardbreak => {
300309
if let Some(Some(transform)) = self.container_stack.last_mut() {
301310
match transform {
302-
MediaTransform::RostraMedia(_, alt)
303-
| MediaTransform::EmbeddableMedia(_, _, alt)
304-
| MediaTransform::ExternalImage(_, _, alt) => {
311+
MediaTransform::RostraMedia { alt, .. }
312+
| MediaTransform::EmbeddableMedia { alt, .. }
313+
| MediaTransform::ExternalImage { alt, .. } => {
305314
alt.push('\n');
306315
}
307316
}
@@ -314,9 +323,9 @@ where
314323
Event::Symbol(s) => {
315324
if let Some(Some(transform)) = self.container_stack.last_mut() {
316325
match transform {
317-
MediaTransform::RostraMedia(_, alt)
318-
| MediaTransform::EmbeddableMedia(_, _, alt)
319-
| MediaTransform::ExternalImage(_, _, alt) => {
326+
MediaTransform::RostraMedia { alt, .. }
327+
| MediaTransform::EmbeddableMedia { alt, .. }
328+
| MediaTransform::ExternalImage { alt, .. } => {
320329
// Render as :symbol_name:
321330
alt.push(':');
322331
alt.push_str(&s);
@@ -340,7 +349,7 @@ where
340349
Event::End => {
341350
if let Some(Some(transform)) = self.container_stack.pop() {
342351
match transform {
343-
MediaTransform::RostraMedia(event_id, alt) => {
352+
MediaTransform::RostraMedia { event_id, alt } => {
344353
// Look up the content to get mime type
345354
let url = format!("/ui/media/{}/{}", self.author_id, event_id);
346355
let alt = alt.trim();
@@ -411,7 +420,11 @@ where
411420
self.inner.emit(Event::Str(html.into())).await?;
412421
self.inner.emit(Event::End).await
413422
}
414-
MediaTransform::EmbeddableMedia(html, hostname, alt) => {
423+
MediaTransform::EmbeddableMedia {
424+
html,
425+
hostname,
426+
alt,
427+
} => {
415428
// Emit the load message and embedded HTML
416429
let alt = alt.trim();
417430
let load_msg = if hostname.is_empty() {
@@ -448,10 +461,14 @@ where
448461
// Close the div
449462
self.inner.emit(Event::End).await
450463
}
451-
MediaTransform::ExternalImage(s, link_type, alt) => {
464+
MediaTransform::ExternalImage {
465+
url,
466+
link_type,
467+
alt,
468+
} => {
452469
// Emit load message and the actual image
453470
let alt = alt.trim();
454-
let hostname = url::Url::parse(&s)
471+
let hostname = url::Url::parse(&url)
455472
.ok()
456473
.and_then(|u| u.host_str().map(|h| h.to_string()))
457474
.unwrap_or_default();
@@ -484,7 +501,7 @@ where
484501
AttributeKind::Pair {
485502
key: Cow::Borrowed("data-src"),
486503
},
487-
AttributeValue::from(s.clone()),
504+
AttributeValue::from(url.clone()),
488505
));
489506
self.inner
490507
.emit(Event::Start(

0 commit comments

Comments
 (0)