2597eb56f3
* Parse internal refs to links * Item mention notifications * Also parse item mentions as URLs * Fix subType determined by referrer item instead of referee item * Ignore subType Considering if the item that was referred to was a post or comment made the code more complex than initially necessary. For example, notifications for /notifications are deduplicated based on item id and the same item could refer to posts and comments, so to include "one of your posts" or "one of your comments" in the title would require splitting notifications based on the type of referred item. I didn't want to do this but also wanted to have consistent notification titles between push and /notifications, so I use "items" in both places now, even though I think using "items" isn't ideal from a user perspective. I think it might be confusing. * Fix rootText * Replace full links to #<id> syntax in push notifications * Refactor mention code into separate functions
383 lines
7.4 KiB
JavaScript
383 lines
7.4 KiB
JavaScript
import { gql } from '@apollo/client'
|
|
import { COMMENTS, COMMENTS_ITEM_EXT_FIELDS } from './comments'
|
|
import { ITEM_FIELDS, ITEM_FULL_FIELDS } from './items'
|
|
import { SUB_FULL_FIELDS } from './subs'
|
|
|
|
export const ME = gql`
|
|
{
|
|
me {
|
|
id
|
|
name
|
|
bioId
|
|
photoId
|
|
privates {
|
|
autoDropBolt11s
|
|
diagnostics
|
|
noReferralLinks
|
|
fiatCurrency
|
|
greeterMode
|
|
hideCowboyHat
|
|
hideFromTopUsers
|
|
hideGithub
|
|
hideNostr
|
|
hideTwitter
|
|
hideInvoiceDesc
|
|
hideIsContributor
|
|
hideWalletBalance
|
|
hideWelcomeBanner
|
|
imgproxyOnly
|
|
lastCheckedJobs
|
|
nostrCrossposting
|
|
noteAllDescendants
|
|
noteCowboyHat
|
|
noteDeposits
|
|
noteWithdrawals
|
|
noteEarning
|
|
noteForwardedSats
|
|
noteInvites
|
|
noteItemSats
|
|
noteJobIndicator
|
|
noteMentions
|
|
noteItemMentions
|
|
sats
|
|
tipDefault
|
|
tipPopover
|
|
turboTipping
|
|
zapUndos
|
|
upvotePopover
|
|
wildWestMode
|
|
withdrawMaxFeeDefault
|
|
lnAddr
|
|
autoWithdrawMaxFeePercent
|
|
autoWithdrawThreshold
|
|
}
|
|
optional {
|
|
isContributor
|
|
stacked
|
|
streak
|
|
githubId
|
|
nostrAuthPubkey
|
|
twitterId
|
|
}
|
|
}
|
|
}`
|
|
|
|
export const SETTINGS_FIELDS = gql`
|
|
fragment SettingsFields on User {
|
|
privates {
|
|
tipDefault
|
|
turboTipping
|
|
zapUndos
|
|
fiatCurrency
|
|
withdrawMaxFeeDefault
|
|
noteItemSats
|
|
noteEarning
|
|
noteAllDescendants
|
|
noteMentions
|
|
noteItemMentions
|
|
noteDeposits
|
|
noteWithdrawals
|
|
noteInvites
|
|
noteJobIndicator
|
|
noteCowboyHat
|
|
noteForwardedSats
|
|
hideInvoiceDesc
|
|
autoDropBolt11s
|
|
hideFromTopUsers
|
|
hideCowboyHat
|
|
hideBookmarks
|
|
hideGithub
|
|
hideNostr
|
|
hideTwitter
|
|
hideIsContributor
|
|
imgproxyOnly
|
|
hideWalletBalance
|
|
diagnostics
|
|
noReferralLinks
|
|
nostrPubkey
|
|
nostrCrossposting
|
|
nostrRelays
|
|
wildWestMode
|
|
greeterMode
|
|
nsfwMode
|
|
authMethods {
|
|
lightning
|
|
nostr
|
|
github
|
|
twitter
|
|
email
|
|
apiKey
|
|
}
|
|
apiKeyEnabled
|
|
}
|
|
}`
|
|
|
|
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 DELETE_WALLET =
|
|
gql`
|
|
mutation removeWallet {
|
|
removeWallet
|
|
}
|
|
`
|
|
|
|
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
|
|
nterritories
|
|
meSubscriptionPosts
|
|
meSubscriptionComments
|
|
meMute
|
|
|
|
optional {
|
|
stacked
|
|
streak
|
|
maxStreak
|
|
isContributor
|
|
githubId
|
|
nostrAuthPubkey
|
|
twitterId
|
|
}
|
|
}`
|
|
|
|
export const MY_SUBSCRIBED_USERS = gql`
|
|
query MySubscribedUsers($cursor: String) {
|
|
mySubscribedUsers(cursor: $cursor) {
|
|
users {
|
|
id
|
|
name
|
|
photoId
|
|
meSubscriptionPosts
|
|
meSubscriptionComments
|
|
meMute
|
|
|
|
optional {
|
|
streak
|
|
}
|
|
}
|
|
cursor
|
|
}
|
|
}
|
|
`
|
|
|
|
export const MY_MUTED_USERS = gql`
|
|
query MyMutedUsers($cursor: String) {
|
|
myMutedUsers(cursor: $cursor) {
|
|
users {
|
|
id
|
|
name
|
|
photoId
|
|
meSubscriptionPosts
|
|
meSubscriptionComments
|
|
meMute
|
|
|
|
optional {
|
|
streak
|
|
}
|
|
}
|
|
cursor
|
|
}
|
|
}
|
|
`
|
|
|
|
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)
|
|
}
|
|
}
|
|
}`
|
|
|
|
export const USER_WITH_SUBS = gql`
|
|
${USER_FIELDS}
|
|
${SUB_FULL_FIELDS}
|
|
query UserWithSubs($name: String!, $cursor: String, $type: String, $when: String, $from: String, $to: String, $by: String) {
|
|
user(name: $name) {
|
|
...UserFields
|
|
}
|
|
userSubs(name: $name, cursor: $cursor) {
|
|
cursor
|
|
subs {
|
|
...SubFullFields
|
|
ncomments(when: "forever")
|
|
nposts(when: "forever")
|
|
|
|
optional {
|
|
stacked(when: "forever")
|
|
spent(when: "forever")
|
|
revenue(when: "forever")
|
|
}
|
|
}
|
|
}
|
|
}`
|
|
|
|
export const USER_STATS = gql`
|
|
query UserStats($when: String, $from: String, $to: String) {
|
|
userStatsActions(when: $when, from: $from, to: $to) {
|
|
time
|
|
data {
|
|
name
|
|
value
|
|
}
|
|
}
|
|
userStatsIncomingSats(when: $when, from: $from, to: $to) {
|
|
time
|
|
data {
|
|
name
|
|
value
|
|
}
|
|
}
|
|
userStatsOutgoingSats(when: $when, from: $from, to: $to) {
|
|
time
|
|
data {
|
|
name
|
|
value
|
|
}
|
|
}
|
|
}`
|