{ window.location.href = `/feed/${tweet.id}`; }} onContextMenu={(e) => { e.preventDefault(); setCtxMenu({ x: e.clientX, y: e.clientY }); }} > {userDisplayLabel({ displayName: tweet.userDisplayName, username: tweet.userUsername, email: tweet.userEmail })} {tweet.userUsername && ( @{tweet.userUsername} )} · {timeAgo(tweet.insertedAt)} {canModify && ( { e.stopPropagation(); setEditText(tweet.content); setEditing(true); setConfirmDelete(false); }} > { e.stopPropagation(); if (!confirmDelete) { setConfirmDelete(true); setTimeout(() => setConfirmDelete(false), 3000); } else { deleteMutation.mutate(); } }} > {deleteMutation.isPending ? ( … ) : confirmDelete ? ( ) : ( )} )} {editing ? ( setEditText(e.target.value)} autoFocus rows={3} /> {error && {error}} { setEditing(false); setError(null); }} > Cancel {updateMutation.isPending ? "Saving…" : "Save"} ) : ( {tweet.content} )} {tweet.media && tweet.media.length > 0 && ( )} { e.stopPropagation(); likeMutation.mutate(); }} disabled={!canLike || likeMutation.isPending} title={ canLike ? tweet.likedByMe ? "Remove like" : "Like post" : "Sign in to like posts" } > {tweet.likes} e.stopPropagation()} title="View comments" > {tweet.commentCount ?? 0} {error && !editing && {error}} {ctxMenu && ( setCtxMenu(null)} /> )}
{userDisplayLabel({ displayName: comment.userDisplayName, username: comment.userUsername, email: comment.userEmail })} {comment.userUsername && ( @{comment.userUsername} )} · {timeAgo(comment.insertedAt)} {canModify && ( { e.stopPropagation(); if (!confirmDelete) { setConfirmDelete(true); setTimeout(() => setConfirmDelete(false), 3000); } else { deleteMutation.mutate(); } }} > {deleteMutation.isPending ? ( … ) : confirmDelete ? ( ) : ( )} )} {comment.content} {comment.media && comment.media.length > 0 && } likeMutation.mutate()} disabled={!canLike || likeMutation.isPending} title={canLike ? (comment.likedByMe ? "Remove like" : "Like reply") : "Sign in to like replies"} > {comment.likes} {error && {error}}