Skip to content

Commit

Permalink
Add check to see if npub is a flash npub (#109)
Browse files Browse the repository at this point in the history
* Add is flash npub

* Fix query

* Make errors more specific
  • Loading branch information
abhay-raizada authored Oct 15, 2024
1 parent ac3b62f commit 73ad0cd
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 1 deletion.
14 changes: 14 additions & 0 deletions dev/apollo-federation/supergraph.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -558,6 +558,19 @@ enum InvoicePaymentStatus
PENDING @join__enumValue(graph: PUBLIC)
}

input IsFlashNpubInput
@join__type(graph: PUBLIC)
{
npub: npub!
}

type IsFlashNpubPayload
@join__type(graph: PUBLIC)
{
errors: [Error!]!
isFlashNpub: Boolean
}

scalar join__FieldSet

enum join__Graph {
Expand Down Expand Up @@ -1348,6 +1361,7 @@ type Query
businessMapMarkers: [MapMarker!]!
currencyList: [Currency!]!
globals: Globals
isFlashNpub(input: IsFlashNpubInput!): IsFlashNpubPayload
lnInvoicePaymentStatus(input: LnInvoicePaymentStatusInput!): LnInvoicePaymentStatusPayload!
me: User
mobileVersions: [MobileVersions]
Expand Down
4 changes: 4 additions & 0 deletions src/app/accounts/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ export const getAccount = async (
return accounts.findById(accountId)
}

export const findByNpub = async (npub: Npub): Promise<Account | RepositoryError> => {
return accounts.findByNpub(npub)
}

export const getAccountFromUserId = async (
kratosUserId: UserId,
): Promise<Account | RepositoryError> => {
Expand Down
3 changes: 2 additions & 1 deletion src/graphql/public/queries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import AccountDefaultWalletQuery from "@graphql/public/root/query/account-defaul
import AccountDefaultWalletIdQuery from "@graphql/public/root/query/account-default-wallet-id"
import LnInvoicePaymentStatusQuery from "@graphql/public/root/query/ln-invoice-payment-status"
import NpubByUserNameQuery from "./root/query/username-npub-query"
import { npubByUsername } from "@app/accounts"
import IsFlashNpubQuery from "./root/query/is-flash-npub-query"

export const queryFields = {
unauthed: {
Expand All @@ -34,6 +34,7 @@ export const queryFields = {
btcPriceList: BtcPriceListQuery,
lnInvoicePaymentStatus: LnInvoicePaymentStatusQuery,
npubByUsername: NpubByUserNameQuery,
isFlashNpub: IsFlashNpubQuery,
},
authed: {
atAccountLevel: {
Expand Down
33 changes: 33 additions & 0 deletions src/graphql/public/root/query/is-flash-npub-query.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { GT } from "@graphql/index"
import { Accounts } from "@app"
import {
IsFlashNpubInput,
IsFlashNpubPayload,
} from "@graphql/public/types/object/is-flash-npub"
import Npub from "@graphql/shared/types/scalar/npub"
import { RepositoryError } from "@domain/errors"

const IsFlashNpubQuery = GT.Field({
type: IsFlashNpubPayload,
args: {
input: {
type: GT.NonNull(IsFlashNpubInput),
},
},
resolve: async (_, args) => {
const {
input: { npub },
} = args
if (npub instanceof Error) {
throw npub
}
const output = await Accounts.findByNpub(npub)
if (output instanceof RepositoryError) return { isFlashNpub: false }
else if (output instanceof Error) throw output
return {
isFlashNpub: true,
}
},
})

export default IsFlashNpubQuery
10 changes: 10 additions & 0 deletions src/graphql/public/schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,15 @@ enum InvoicePaymentStatus {
PENDING
}

input IsFlashNpubInput {
npub: npub!
}

type IsFlashNpubPayload {
errors: [Error!]!
isFlashNpub: Boolean
}

scalar Language

type LnInvoice {
Expand Down Expand Up @@ -1046,6 +1055,7 @@ type Query {
businessMapMarkers: [MapMarker!]!
currencyList: [Currency!]!
globals: Globals
isFlashNpub(input: IsFlashNpubInput!): IsFlashNpubPayload
lnInvoicePaymentStatus(input: LnInvoicePaymentStatusInput!): LnInvoicePaymentStatusPayload!
me: User
mobileVersions: [MobileVersions]
Expand Down
22 changes: 22 additions & 0 deletions src/graphql/public/types/object/is-flash-npub.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { GT } from "@graphql/index"
import IError from "../../../shared/types/abstract/error"
import Npub from "@graphql/shared/types/scalar/npub"

const IsFlashNpubInput = GT.Input({
name: "IsFlashNpubInput",
fields: () => ({
npub: { type: GT.NonNull(Npub) },
}),
})

const IsFlashNpubPayload = GT.Object({
name: "IsFlashNpubPayload",
fields: () => ({
errors: {
type: GT.NonNullList(IError),
},
isFlashNpub: { type: GT.Boolean },
}),
})

export { IsFlashNpubInput, IsFlashNpubPayload }

0 comments on commit 73ad0cd

Please sign in to comment.