From b5abd615697146beeca6dba4acd057d049554a30 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 02 Jan 2026 00:16:00 +0000
Subject: [PATCH] Merge branch 'main' of https://github.com/jakevdwerf/jvb

---
 src/feed/view.js |   99 +++++++++++++++++++------------------------------
 1 files changed, 38 insertions(+), 61 deletions(-)

diff --git a/src/feed/view.js b/src/feed/view.js
index 0bdddae..7110cad 100644
--- a/src/feed/view.js
+++ b/src/feed/view.js
@@ -394,35 +394,32 @@
 	 */
 	createItemElement(item) {
 		let template = window.getTemplate(`feedItem${window.uppercaseFirst(item.content)}`);
-		if (Object.hasOwn(template.dataset, 'timeline')) {
-			return this.createTimelineElement(item, template);
-		}
-		//fields
+
+		const isTimeline = Object.hasOwn(template.dataset, 'timeline');
+
+		// Format fields using helpers
 		for (let [fieldName, value] of Object.entries(item.fields)) {
+			if (isTimeline && ['timeline', 'number'].includes(fieldName)) continue;
 			let el = template.querySelector(`[data-field="${fieldName}"]`);
-			if (!el) {
-				continue;
-			}
-			if (Object.keys(item.images).map((img)=> parseInt(img)).includes(value)) {
-				[
-					el.src,
-					el.srcset,
-					el.alt
-				] = [
-					item.images[value].tiny,
-					`${item.images[value].tiny} 50w, ${item.images[value].small} 300w, ${item.images[value].medium} 1024w`,
-					item.images[value]['image-alt-text']
-				];
-			} else if (el.tagName === 'TIME') {
-				el.setAttribute('datetime', value);
-				el.textContent = window.formatTimeAgo(value);
-			} else {
-				el.textContent = value;
-			}
+			if (!el) continue;
+
 			if (value === '') {
 				el.remove();
+				continue;
+			}
+
+			if (this.isImageField(item, value)) {
+				this.formatImageFields(el, value, item);
+			} else if (this.isTaxonomyField(item, fieldName)) {
+				this.formatTaxonomyField(el, item, fieldName, value);
+			} else if (this.isTimeField(el)) {
+				this.formatTimeField(el, value);
+			} else {
+				this.formatField(el, value);
 			}
 		}
+
+		// Handle link
 		let link = template.querySelector('a');
 		if (link && item.url !== '') {
 			[
@@ -433,6 +430,11 @@
 				`View ${item.fields['post_title']??'Item'}`
 			];
 		}
+
+		if (isTimeline) {
+			this.addTimelineElements(item, template);
+		}
+
 		return template;
 	}
 	splitIDs(value) {
@@ -470,20 +472,17 @@
 		}
 	}
 		formatImageField(element, value, item) {
-		console.log('Formatting Image:', element);
-		console.log('Value: ', value);
-		console.log('ImagData:', item.images[value]);
-		let imgData = item.images[value]??false;
-		if (!imgData) return;
-			[
-				element.src,
-				element.srset,
-				element.alt
-			] = [
-				imgData.tiny,
-				`${imgData.tiny} 50w, ${imgData.small} 300w, ${imgData.medium} 1024w`,
-				imgData['image-alt-text']
-			]
+			let imgData = item.images[value]??false;
+			if (!imgData) return;
+				[
+					element.src,
+					element.srcset,
+					element.alt
+				] = [
+					imgData.tiny,
+					`${imgData.tiny} 50w, ${imgData.small} 300w, ${imgData.medium} 1024w`,
+					imgData['image-alt-text']
+				]
 		}
 	isTaxonomyField(item, field) {
 		if (!Object.hasOwn(item, 'taxonomies') || Object.keys(item.taxonomies).length === 0) {
@@ -534,28 +533,7 @@
 		element.textContent = value;
 	}
 
-	createTimelineElement(item, template) {
-		for (let [field, value] of Object.entries(item.fields)) {
-			if (!['timeline', 'number'].includes(field)) {
-				let el = template.querySelector(`[data-field="${field}"]`);
-				if (!el) {
-					console.log(`Element Not found for ${field}`);
-				}
-				if (value === '') {
-					el?.remove();
-				}
-				if (!el || value === '') continue;
-				if (this.isImageField(item, value)) {
-					this.formatImageFields(el, value, item);
-				} else if (this.isTaxonomyField(item, field)) {
-					this.formatTaxonomyField(el, item, field, value);
-				} else if (this.isTimeField(el)) {
-					this.formatTimeField(el, value);
-				} else {
-					this.formatField(el, value);
-				}
-			}
-		}
+	addTimelineElements(item, template) {
 		let [
 			afterEl,
 			number,
@@ -567,6 +545,7 @@
 			template.querySelector('[data-field="started"] time'),
 			template.querySelector('[data-field="updated"] time')
 		];
+
 		if (afterEl) {
 			afterEl.textContent = `After ${item.fields.number} Tx`;
 		}
@@ -579,8 +558,6 @@
 		if (last) {
 			this.formatTimeField(last, item.fields.timeline[item.fields.timeline.length - 1]['post_date']);
 		}
-
-		return template;
 	}
 
 	removePlaceholders() {

--
Gitblit v1.10.0