import React, { useState } from 'react' import { Link, NavLink } from 'react-router-dom' import { prettyScore, prettyDate, prettyTimeDiff, exactDateTime, parse, isRemoved } from '../../utils' const Comment = (props) => { let commentStyle = 'comment ' if (props.removed) { commentStyle += 'removed' } else if (props.deleted) { commentStyle += 'deleted' } else { commentStyle += props.depth % 2 === 0 ? 'comment-even' : 'comment-odd' } if (props.id == props.highlightedID) { commentStyle += ' highlighted' } let innerHTML, editedInnerHTML; if (props.removed && isRemoved(props.body)) { if (!props.hasOwnProperty('retrieved_utc') && !props.hasOwnProperty('retrieved_on') || !props.hasOwnProperty('created_utc')) { innerHTML = '

[removed too quickly to be archived]

' } else if (props.created_utc < 1627776000) { // Aug 1 2021 const retrieved = props.hasOwnProperty('retrieved_utc') ? props.retrieved_utc : props.retrieved_on; innerHTML = `

[removed within ${prettyTimeDiff(retrieved - props.created_utc)}]

` } // After around Aug 1 2021, Pushshift began updating comments from Reddit after around // 24-48 hours, including removing(?) comments that were removed from Reddit. The presence // of either retrieved_utc or retrieved_on can currently be used to test for this behaviour. else if (props.hasOwnProperty('retrieved_utc')) { innerHTML = `

[removed within ${prettyTimeDiff(props.retrieved_utc - props.created_utc)}]

` } else { innerHTML = `

[either removed too quickly, or removed(?) from archive after ${prettyTimeDiff(props.retrieved_on - props.created_utc, true)}]

` } } else { innerHTML = parse(props.body) if (props.hasOwnProperty('edited_body')) editedInnerHTML = parse(props.edited_body) } const [collapsed, setCollapsed] = useState(false) const [showEdited, setShowEdited] = useState(false) const permalink = `/r/${props.subreddit}/comments/${props.link_id}/_/${props.id}/` const parentlink = props.parent_id == props.link_id ? undefined : ( props.depth == 0 ? parent : // Use a function, not just an object--state is recreated and scrollBehavior is always initialized ({...loc, hash: `#${props.parent_id}`, state: {scrollBehavior: 'smooth'}})}>parent ) return (
setCollapsed(!collapsed)} onKeyDown={e => e.key == "Enter" && setCollapsed(!collapsed)} tabIndex= {0} className='comment-collapse'>[{collapsed ? '+' : '\u2212'}] {props.author} {props.deleted && ' (deleted by user)'} {prettyScore(props.score)} point{(props.score !== 1) && 's'} {props.created_utc && {prettyDate(props.created_utc)}} {(props.hasOwnProperty('edited_body') || props.edited) && * (last edited {prettyDate(props.edited ? props.edited : props.created_utc)})}
({pathname: permalink, hash: '#comment-info', state: {scrollBehavior: 'auto'}})}>permalink reddit reveddit {parentlink} {props.hasOwnProperty('edited_body') && setShowEdited(!showEdited)} onKeyDown={e => e.key == "Enter" && setShowEdited(!showEdited)} tabIndex= {0} title= {showEdited ? 'The most recent version is shown; click to show the earliest archived' : 'The earliest archived version is shown; click to show the most recent'} >*edited}
{props.replies.map(comment => ( ))}
) } export default Comment