Vulcan/packages/nova-base-components/lib/users/UsersProfile.jsx

98 lines
2.4 KiB
React
Raw Normal View History

import { Components, registerComponent } from 'meteor/nova:lib';
2016-03-28 12:36:29 +09:00
import React, { PropTypes, Component } from 'react';
2016-06-09 20:26:33 +09:00
import { FormattedMessage } from 'react-intl';
2016-06-23 11:40:35 +09:00
import Posts from "meteor/nova:posts";
2016-06-23 15:00:58 +09:00
import Users from 'meteor/nova:users';
import { Link } from 'react-router';
2016-12-01 16:09:54 +09:00
import { ShowIf, withSingle } from 'meteor/nova:core';
2016-11-23 11:07:48 +09:00
import gql from 'graphql-tag';
2016-10-26 18:03:26 +09:00
const UsersProfile = (props) => {
2016-11-23 11:07:48 +09:00
if (props.loading) {
return <div className="page users-edit-form"><Components.Loading/></div>
} else {
2016-11-23 11:07:48 +09:00
const user = props.document;
const twitterName = Users.getTwitterName(user);
const terms = {view: "userPosts", userId: user._id};
return (
<div className="page users-profile">
<Components.HeadTags url={Users.getProfileUrl(user, true)} title={Users.getDisplayName(user)} description={user.__bio} />
<h2 className="page-title">{Users.getDisplayName(user)}</h2>
<p>{user.__bio}</p>
<ul>
{twitterName ? <li><a href={"http://twitter.com/" + twitterName}>@{twitterName}</a></li> : null }
{user.__website ? <li><a href={user.__website}>{user.__website}</a></li> : null }
2016-12-01 16:09:54 +09:00
<ShowIf check={Users.options.mutations.edit.check} document={user}>
<li><Link to={Users.getEditUrl(user)}><FormattedMessage id="users.edit_account"/></Link></li>
2016-12-01 16:09:54 +09:00
</ShowIf>
</ul>
<h3><FormattedMessage id="users.posts"/></h3>
<Components.PostsList terms={terms} />
</div>
)
}
2016-03-28 12:36:29 +09:00
}
2016-04-19 15:54:53 +09:00
UsersProfile.propTypes = {
// document: React.PropTypes.object.isRequired,
}
UsersProfile.displayName = "UsersProfile";
2016-11-26 11:17:01 +09:00
UsersProfile.fragment = gql`
2016-11-23 11:07:48 +09:00
fragment usersSingleFragment on User {
_id
username
createdAt
isAdmin
__bio
__commentCount
__displayName
__downvotedComments {
itemId
power
votedAt
}
__downvotedPosts {
itemId
power
votedAt
}
__email
__emailHash
__groups
__htmlBio
__karma
__newsletter_subscribeToNewsletter
__notifications_users
__notifications_posts
__postCount
__slug
__twitterUsername
__upvotedComments {
itemId
power
votedAt
}
__upvotedPosts {
itemId
power
votedAt
}
__website
}
`;
const options = {
collection: Users,
queryName: 'usersSingleQuery',
2016-11-26 11:17:01 +09:00
fragment: UsersProfile.fragment,
2016-11-23 11:07:48 +09:00
};
registerComponent('UsersProfile', UsersProfile, withSingle(options));