// jshint ignore:start import React from 'react'; import moment from 'moment'; import Avatar from 'misago/components/avatar'; import Message from 'misago/components/modal-message'; import Loader from 'misago/components/modal-loader'; import ajax from 'misago/services/ajax'; export default class extends React.Component { constructor(props) { super(props); this.state = { isReady: false, error: null, likes: [] }; } componentDidMount() { ajax.get(this.props.post.api.likes).then((data) => { this.setState({ isReady: true, likes: data.map(hydrateLike) }); }, (rejection) => { this.setState({ isReady: true, error: rejection.detail }); }); }; render() { if (this.state.error) { return ( ); } else if (this.state.isReady) { if (this.state.likes.length) { return ( ); } return ( ); } return ( ); } } export function hydrateLike(data) { return Object.assign({}, data, { liked_on: moment(data.liked_on) }); } export function ModalDialog({ className, children, likes }) { let title = gettext("Post Likes"); if (likes) { const likesCount = likes.length; const message = ngettext( "%(likes)s like", "%(likes)s likes", likesCount); title = interpolate(message, { likes: likesCount }, true); } return (

{title}

{children}
) } export function LikesList(props) { return (
); } export function LikeDetails(props) { if (props.url) { const user = { id: props.liker_id, avatars: props.avatars }; return (
  • {props.username} {' '}
  • ); } return (
  • {props.username} {' '}
  • ); } export function LikeDate(props) { return ( {props.likedOn.fromNow()} ); }