Vulcan/packages/nova-base-components/lib/fragments.js

188 lines
3.3 KiB
JavaScript
Raw Normal View History

import gql from 'graphql-tag';
import { registerFragment, getFragment } from 'meteor/nova:core';
// ------------------------------ Vote ------------------------------ //
// note: fragment used by default on the UsersProfile fragment
registerFragment(gql`
fragment VotedItem on Vote {
# nova:voting
itemId
power
votedAt
}
`);
// ------------------------------ Users ------------------------------ //
// note: fragment used by default on UsersProfile, PostsList & CommentsList fragments
registerFragment(gql`
fragment UsersMinimumInfo on User {
# nova:users
_id
slug
username
displayName
emailHash
}
`);
registerFragment(gql`
fragment UsersProfile on User {
# nova:users
...UsersMinimumInfo
createdAt
isAdmin
bio
htmlBio
twitterUsername
website
groups
karma
# nova:posts
postCount
# nova:comments
commentCount
# nova:newsletter
newsletter_subscribeToNewsletter
# nova:notifications
notifications_users
notifications_posts
# nova:voting
downvotedComments {
...VotedItem
}
downvotedPosts {
...VotedItem
}
upvotedComments {
...VotedItem
}
upvotedPosts {
...VotedItem
}
}
${getFragment('UsersMinimumInfo')}
${getFragment('VotedItem')}
`);
// ------------------------------ Categories ------------------------------ //
// note: fragment used by default on CategoriesList & PostsList fragments
registerFragment(gql`
fragment CategoriesMinimumInfo on Category {
# nova:categories
_id
name
slug
}
`);
registerFragment(gql`
fragment CategoriesList on Category {
# nova:categories
...CategoriesMinimumInfo
description
order
image
parentId
parent {
...CategoriesMinimumInfo
}
}
${getFragment('CategoriesMinimumInfo')}
`);
// ------------------------------ Posts ------------------------------ //
const PostsFragment = gql`
fragment PostsList on Post {
# nova:posts
_id
title
url
slug
postedAt
sticky
status
body
htmlBody
excerpt
viewCount
clickCount
# nova:users
userId
user {
...UsersMinimumInfo
}
# nova:embedly
thumbnailUrl
# nova:categories
categories {
...CategoriesMinimumInfo
}
# nova:comments
commentCount
commenters {
...UsersMinimumInfo
}
# nova:voting
upvoters {
_id
}
downvoters {
_id
}
upvotes
downvotes
baseScore
score
}
${getFragment('UsersMinimumInfo')}
${getFragment('CategoriesMinimumInfo')}
`;
registerFragment(PostsFragment);
// note: also register the same fragment as "PostsPage"
registerFragment(PostsFragment, 'PostsPage');
// ----------------------------- Comments ------------------------------ //
registerFragment(gql`
fragment CommentsList on Comment {
# nova:comments
_id
postId
parentCommentId
topLevelCommentId
body
htmlBody
postedAt
# nova:users
userId
user {
...UsersMinimumInfo
}
# nova:posts
post {
_id
commentCount
commenters {
...UsersMinimumInfo
}
}
# nova:voting
upvoters {
_id
}
downvoters {
_id
}
upvotes
downvotes
baseScore
score
}
${getFragment('UsersMinimumInfo')}
`);