import { gql } from '@apollo/client' import { COMMENTS, COMMENTS_ITEM_EXT_FIELDS } from './comments' import { ITEM_FIELDS, ITEM_FULL_FIELDS } from './items' export const ME = gql` { me { id name bioId privates { autoDropBolt11s diagnostics fiatCurrency greeterMode hideCowboyHat hideFromTopUsers hideInvoiceDesc hideIsContributor hideWalletBalance hideWelcomeBanner imgproxyOnly lastCheckedJobs nostrCrossposting noteAllDescendants noteCowboyHat noteDeposits noteEarning noteForwardedSats noteInvites noteItemSats noteJobIndicator noteMentions sats tipDefault tipPopover turboTipping upvotePopover wildWestMode withdrawMaxFeeDefault } optional { isContributor stacked streak } } }` export const SETTINGS_FIELDS = gql` fragment SettingsFields on User { privates { tipDefault turboTipping fiatCurrency withdrawMaxFeeDefault noteItemSats noteEarning noteAllDescendants noteMentions noteDeposits noteInvites noteJobIndicator noteCowboyHat noteForwardedSats hideInvoiceDesc autoDropBolt11s hideFromTopUsers hideCowboyHat hideBookmarks hideIsContributor imgproxyOnly hideWalletBalance diagnostics nostrPubkey nostrCrossposting nostrRelays wildWestMode greeterMode authMethods { lightning nostr github twitter email } } }` export const SETTINGS = gql` ${SETTINGS_FIELDS} { settings { ...SettingsFields } }` export const SET_SETTINGS = gql` ${SETTINGS_FIELDS} mutation setSettings($settings: SettingsInput!) { setSettings(settings: $settings) { ...SettingsFields } } ` export const NAME_QUERY = gql` query nameAvailable($name: String!) { nameAvailable(name: $name) } ` export const NAME_MUTATION = gql` mutation setName($name: String!) { setName(name: $name) } ` export const WELCOME_BANNER_MUTATION = gql` mutation hideWelcomeBanner { hideWelcomeBanner } ` export const USER_SUGGESTIONS = gql` query userSuggestions($q: String!, $limit: Limit) { userSuggestions(q: $q, limit: $limit) { name } }` export const USER_SEARCH = gql` query searchUsers($q: String!, $limit: Limit, $similarity: Float) { searchUsers(q: $q, limit: $limit, similarity: $similarity) { id name photoId ncomments nposts optional { streak stacked spent referrals } } }` export const USER_FIELDS = gql` fragment UserFields on User { id name since photoId nitems meSubscriptionPosts meSubscriptionComments meMute optional { stacked streak maxStreak isContributor } }` export const TOP_USERS = gql` query TopUsers($cursor: String, $when: String, $from: String, $to: String, $by: String, ) { topUsers(cursor: $cursor, when: $when, from: $from, to: $to, by: $by) { users { id name photoId ncomments(when: $when, from: $from, to: $to) nposts(when: $when, from: $from, to: $to) optional { streak stacked(when: $when, from: $from, to: $to) spent(when: $when, from: $from, to: $to) referrals(when: $when, from: $from, to: $to) } } cursor } } ` export const TOP_COWBOYS = gql` query TopCowboys($cursor: String) { topCowboys(cursor: $cursor) { users { id name photoId ncomments(when: "forever") nposts(when: "forever") optional { streak stacked(when: "forever") spent(when: "forever") referrals(when: "forever") } } cursor } } ` export const USER_FULL = gql` ${USER_FIELDS} ${ITEM_FULL_FIELDS} ${COMMENTS} query User($name: String!, $sort: String) { user(name: $name) { ...UserFields bio { ...ItemFullFields comments(sort: $sort) { ...CommentsRecursive } } } }` export const USER = gql` ${USER_FIELDS} query User($name: String!) { user(name: $name) { ...UserFields } }` export const USER_WITH_ITEMS = gql` ${USER_FIELDS} ${ITEM_FIELDS} ${COMMENTS_ITEM_EXT_FIELDS} query UserWithItems($name: String!, $sub: String, $cursor: String, $type: String, $when: String, $from: String, $to: String, $by: String, $limit: Limit, $includeComments: Boolean = false) { user(name: $name) { ...UserFields } items(sub: $sub, sort: "user", cursor: $cursor, type: $type, name: $name, when: $when, from: $from, to: $to, by: $by, limit: $limit) { cursor items { ...ItemFields ...CommentItemExtFields @include(if: $includeComments) } } }`