// jshint ignore:start import React from 'react'; import moment from 'moment'; 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(props) { return (

{gettext("Post Likes")}

{props.children}
) } export function LikesList(props) { return ( {props.likes.map((like) => { return ( ); })}
); } export function LikeDetails(props) { if (props.url) { return ( {props.username} ); } return ( {props.username} ); } export function LikeDate(props) { return ( {props.likedOn.fromNow()} ); }