diff --git a/api/resolvers/notifications.js b/api/resolvers/notifications.js
index 5fe0832d..52c5f84b 100644
--- a/api/resolvers/notifications.js
+++ b/api/resolvers/notifications.js
@@ -221,6 +221,19 @@ export default {
)
}
+ if (meFull.noteWithdrawals) {
+ queries.push(
+ `(SELECT "Withdrawl".id::text, "Withdrawl".created_at AS "sortTime", FLOOR("msatsPaid" / 1000) as "earnedSats",
+ 'WithdrawlPaid' AS type
+ FROM "Withdrawl"
+ WHERE "Withdrawl"."userId" = $1
+ AND status = 'CONFIRMED'
+ AND created_at < $2
+ ORDER BY "sortTime" DESC
+ LIMIT ${LIMIT})`
+ )
+ }
+
if (meFull.noteInvites) {
queries.push(
`(SELECT "Invite".id, MAX(users.created_at) AS "sortTime", NULL as "earnedSats",
diff --git a/api/resolvers/user.js b/api/resolvers/user.js
index 8032b99a..efbfe642 100644
--- a/api/resolvers/user.js
+++ b/api/resolvers/user.js
@@ -353,6 +353,22 @@ export default {
}
}
+ if (user.noteWithdrawals) {
+ const wdrwl = await models.withdrawl.findFirst({
+ where: {
+ userId: me.id,
+ status: 'CONFIRMED',
+ updatedAt: {
+ gt: lastChecked
+ }
+ }
+ })
+ if (wdrwl) {
+ foundNotes()
+ return true
+ }
+ }
+
// check if new invites have been redeemed
if (user.noteInvites) {
const [newInvites] = await models.$queryRawUnsafe(`
diff --git a/api/resolvers/wallet.js b/api/resolvers/wallet.js
index bfca346b..e10fe422 100644
--- a/api/resolvers/wallet.js
+++ b/api/resolvers/wallet.js
@@ -97,7 +97,7 @@ export default {
}
})
},
- withdrawl: async (parent, { id }, { me, models, lnd }) => {
+ withdrawl: async (parent, { id }, { me, models }) => {
if (!me) {
throw new GraphQLError('you must be logged in', { extensions: { code: 'FORBIDDEN' } })
}
@@ -111,6 +111,10 @@ export default {
}
})
+ if (!wdrwl) {
+ throw new GraphQLError('withdrawal not found', { extensions: { code: 'BAD_INPUT' } })
+ }
+
if (wdrwl.user.id !== me.id) {
throw new GraphQLError('not ur withdrawal', { extensions: { code: 'FORBIDDEN' } })
}
diff --git a/api/typeDefs/notifications.js b/api/typeDefs/notifications.js
index 07d94701..12c58acc 100644
--- a/api/typeDefs/notifications.js
+++ b/api/typeDefs/notifications.js
@@ -91,6 +91,12 @@ export default gql`
sortTime: Date!
}
+ type WithdrawlPaid {
+ id: ID!
+ earnedSats: Int!
+ sortTime: Date!
+ }
+
type Referral {
id: ID!
sortTime: Date!
@@ -115,7 +121,7 @@ export default gql`
}
union Notification = Reply | Votification | Mention
- | Invitification | Earn | JobChanged | InvoicePaid | Referral
+ | Invitification | Earn | JobChanged | InvoicePaid | WithdrawlPaid | Referral
| Streak | FollowActivity | ForwardedVotification | Revenue | SubStatus
| TerritoryPost | TerritoryTransfer
diff --git a/api/typeDefs/user.js b/api/typeDefs/user.js
index 800eb648..2300fdc3 100644
--- a/api/typeDefs/user.js
+++ b/api/typeDefs/user.js
@@ -82,7 +82,8 @@ export default gql`
nostrRelays: [String!]
noteAllDescendants: Boolean!
noteCowboyHat: Boolean!
- noteDeposits: Boolean!
+ noteDeposits: Boolean!,
+ noteWithdrawals: Boolean!,
noteEarning: Boolean!
noteForwardedSats: Boolean!
noteInvites: Boolean!
@@ -148,6 +149,7 @@ export default gql`
noteAllDescendants: Boolean!
noteCowboyHat: Boolean!
noteDeposits: Boolean!
+ noteWithdrawals: Boolean!
noteEarning: Boolean!
noteForwardedSats: Boolean!
noteInvites: Boolean!
diff --git a/components/notifications.js b/components/notifications.js
index 9a9d3360..529d4bcf 100644
--- a/components/notifications.js
+++ b/components/notifications.js
@@ -40,6 +40,7 @@ function Notification ({ n, fresh }) {
(type === 'Revenue' &&