+
+
+ e621 metadata
+
+
+
+ in-app #{item.e621_post_id}
+
+
+ e621.net ↗
+
+
+
+
+
+
+
- Rating
+ -
+ {data.rating ? RATING_LABELS[data.rating] ?? data.rating : "—"}
+
+
+
+
- Score
+ -
+ {data.score?.total ?? 0}
+
+
+
+
- Favorites
+ -
+ {data.fav_count ?? 0}
+
+
+
+
- Comments
+ -
+ {data.comment_count ?? 0}
+
+
+
+
+
+ {categories.map(([category, tags]) => (
+
+
+ {TAG_CATEGORY_LABELS[category] ?? category}
+
+
+ {tags.map((tag) => (
+
+ ))}
+
+
+ ))}
+
+
+ {data.description.trim() ? (
+
+
+ Description
+
+
+ {renderDText(data.description)}
+
+
+ ) : null}
+
+ {data.sources.length > 0 ? (
+
+
+ Sources
+
+
+ {data.sources.slice(0, 5).map((source) => (
+ -
+
+ {source}
+
+
+ ))}
+
+
+ ) : null}
+
+ {data.pools.length > 0 ? (
+
+ ) : null}
+
+ {data.uploader_name || data.file ? (
+
+ {data.uploader_name ? `uploaded by ${data.uploader_name}` : null}
+ {data.file?.width && data.file?.height
+ ? ` · ${data.file.width}×${data.file.height}`
+ : null}
+
+ ) : null}
+
+ );
+}
+
function CustomDataCard({ item, canEdit }: { item: MediaItem; canEdit: boolean }) {
const queryClient = useQueryClient();
const [rating, setRating] = useState