stacker.news/fragments/notifications.js
soxa 1afadbdf3b
enhance: referral notifications with source (#1862)
* wip: referral notification shows source of referral

* simpler approach for source info gathering

* fix territory representation; fix fragment field

* cleanup; fix UI

* better margin approach

* hotfix: null check

* add support for comments

* use Union to represent ReferralSource; clarify with switch statements

* cleanup: compact switch statement on Referral resolver

* wip use refereeLanding

* add comments; cleanup

* hotfix: backwards compatibility for Earnings calculation

* small copy and semantics changes

---------

Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: k00b <k00b@stacker.news>
2025-02-11 20:02:04 -06:00

216 lines
4.0 KiB
JavaScript

import { gql } from '@apollo/client'
import { ITEM_FULL_FIELDS, POLL_FIELDS } from './items'
import { INVITE_FIELDS } from './invites'
import { SUB_FIELDS } from './subs'
import { INVOICE_FIELDS } from './wallet'
export const HAS_NOTIFICATIONS = gql`{ hasNewNotes }`
export const INVOICIFICATION = gql`
${ITEM_FULL_FIELDS}
${POLL_FIELDS}
${INVOICE_FIELDS}
fragment InvoicificationFields on Invoicification {
id
sortTime
invoice {
...InvoiceFields
item {
...ItemFullFields
...PollFields
}
itemAct {
id
act
invoice {
id
actionState
}
}
}
}`
export const NOTIFICATIONS = gql`
${INVOICIFICATION}
${INVITE_FIELDS}
${SUB_FIELDS}
query Notifications($cursor: String, $inc: String) {
notifications(cursor: $cursor, inc: $inc) {
cursor
lastChecked
notifications {
__typename
... on Mention {
id
sortTime
mention
item {
...ItemFullFields
text
}
}
... on ItemMention {
id
sortTime
item {
...ItemFullFields
text
}
}
... on Votification {
id
sortTime
earnedSats
item {
...ItemFullFields
text
}
}
... on Revenue {
id
sortTime
earnedSats
subName
}
... on ForwardedVotification {
id
sortTime
earnedSats
item {
...ItemFullFields
text
}
}
... on Streak {
id
sortTime
days
type
}
... on Earn {
id
sortTime
minSortTime
earnedSats
sources {
posts
comments
tipPosts
tipComments
}
}
... on ReferralReward {
id
sortTime
earnedSats
sources {
forever
oneDay
}
}
... on Referral {
id
sortTime
source {
__typename
... on Item {
...ItemFullFields
}
... on Sub {
...SubFields
}
... on User {
name
}
}
}
... on Reply {
id
sortTime
item {
...ItemFullFields
text
}
}
... on FollowActivity {
id
sortTime
item {
...ItemFullFields
text
}
}
... on TerritoryPost {
id
sortTime
item {
...ItemFullFields
text
}
}
... on TerritoryTransfer {
id
sortTime
sub {
...SubFields
}
}
... on Invitification {
id
sortTime
invite {
...InviteFields
}
}
... on JobChanged {
id
sortTime
item {
...ItemFields
}
}
... on SubStatus {
id
sortTime
sub {
...SubFields
}
}
... on InvoicePaid {
id
sortTime
earnedSats
invoice {
id
nostr
comment
lud18Data
actionType
forwardedSats
}
}
... on Invoicification {
...InvoicificationFields
}
... on WithdrawlPaid {
id
sortTime
earnedSats
withdrawl {
autoWithdraw
satsFeePaid
forwardedActionType
}
}
... on Reminder {
id
sortTime
item {
...ItemFullFields
}
}
}
}
} `