import { gql } from '@apollo/client' import { COMMENTS } from './comments' // we can't import from users because of circular dependency const STREAK_FIELDS = gql` fragment StreakFields on User { optional { streak hasSendWallet hasRecvWallet } } ` export const ITEM_FIELDS = gql` ${STREAK_FIELDS} fragment ItemFields on Item { id parentId createdAt invoicePaidAt deletedAt title url user { id name meMute ...StreakFields } sub { name userId moderated meMuteSub meSubscription nsfw replyCost } otsHash position sats credits meAnonSats @client boost bounty bountyPaidTo noteId path upvotes meSats meCredits meDontLikeSats meBookmark meSubscription meForward outlawed freebie bio ncomments nDirectComments newComments @client commentSats commentCredits lastCommentAt isJob status company location remote subName pollCost pollExpiresAt uploadId mine imgproxyUrls rel apiKey invoice { id actionState confirmedAt } cost }` export const ITEM_FULL_FIELDS = gql` ${ITEM_FIELDS} ${STREAK_FIELDS} fragment ItemFullFields on Item { ...ItemFields text root { id title bounty bountyPaidTo subName mine ncomments user { id name ...StreakFields } sub { name userId moderated meMuteSub meSubscription replyCost } } forwards { userId pct user { name } } }` export const ITEM_OTS_FIELDS = gql` fragment ItemOtsFields on Item { id title text url parentOtsHash otsHash deletedAt }` export const ITEM_OTS = gql` ${ITEM_OTS_FIELDS} query Item($id: ID!) { item(id: $id) { ...ItemOtsFields } }` export const POLL_FIELDS = gql` fragment PollFields on Item { poll { meVoted meInvoiceId meInvoiceActionState count options { id option count } randPollOptions } }` export const ITEM = gql` ${ITEM_FULL_FIELDS} ${POLL_FIELDS} query Item($id: ID!) { item(id: $id) { ...ItemFullFields ...PollFields } }` export const ITEM_FULL = gql` ${ITEM_FULL_FIELDS} ${POLL_FIELDS} ${COMMENTS} query Item($id: ID!, $sort: String, $cursor: String) { item(id: $id) { ...ItemFullFields prior ...PollFields comments(sort: $sort, cursor: $cursor) { cursor comments { ...CommentsRecursive } } } }` export const RELATED_ITEMS = gql` ${ITEM_FIELDS} query Related($title: String, $id: ID, $cursor: String, $limit: Limit) { related(title: $title, id: $id, cursor: $cursor, limit: $limit) { cursor items { ...ItemFields } } } ` export const RELATED_ITEMS_WITH_ITEM = gql` ${ITEM_FIELDS} query Related($title: String, $id: ID!, $cursor: String, $limit: Limit) { item(id: $id) { ...ItemFields } related(title: $title, id: $id, cursor: $cursor, limit: $limit) { cursor items { ...ItemFields } } } `