diff --git a/dev/apollo-federation/supergraph.graphql b/dev/apollo-federation/supergraph.graphql index 99cf12d958..c627f3eb2b 100644 --- a/dev/apollo-federation/supergraph.graphql +++ b/dev/apollo-federation/supergraph.graphql @@ -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 { @@ -1348,6 +1361,7 @@ type Query businessMapMarkers: [MapMarker!]! currencyList: [Currency!]! globals: Globals + isFlashNpub(input: IsFlashNpubInput!): IsFlashNpubPayload lnInvoicePaymentStatus(input: LnInvoicePaymentStatusInput!): LnInvoicePaymentStatusPayload! me: User mobileVersions: [MobileVersions] diff --git a/src/app/accounts/index.ts b/src/app/accounts/index.ts index 27090b95da..f19c154899 100644 --- a/src/app/accounts/index.ts +++ b/src/app/accounts/index.ts @@ -36,6 +36,10 @@ export const getAccount = async ( return accounts.findById(accountId) } +export const findByNpub = async (npub: Npub): Promise => { + return accounts.findByNpub(npub) +} + export const getAccountFromUserId = async ( kratosUserId: UserId, ): Promise => { diff --git a/src/graphql/public/queries.ts b/src/graphql/public/queries.ts index c9956d9bb4..0f0ba6f364 100644 --- a/src/graphql/public/queries.ts +++ b/src/graphql/public/queries.ts @@ -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: { @@ -34,6 +34,7 @@ export const queryFields = { btcPriceList: BtcPriceListQuery, lnInvoicePaymentStatus: LnInvoicePaymentStatusQuery, npubByUsername: NpubByUserNameQuery, + isFlashNpub: IsFlashNpubQuery, }, authed: { atAccountLevel: { diff --git a/src/graphql/public/root/query/is-flash-npub-query.ts b/src/graphql/public/root/query/is-flash-npub-query.ts new file mode 100644 index 0000000000..002900cdde --- /dev/null +++ b/src/graphql/public/root/query/is-flash-npub-query.ts @@ -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 diff --git a/src/graphql/public/schema.graphql b/src/graphql/public/schema.graphql index fc290efa98..8119e1e221 100644 --- a/src/graphql/public/schema.graphql +++ b/src/graphql/public/schema.graphql @@ -425,6 +425,15 @@ enum InvoicePaymentStatus { PENDING } +input IsFlashNpubInput { + npub: npub! +} + +type IsFlashNpubPayload { + errors: [Error!]! + isFlashNpub: Boolean +} + scalar Language type LnInvoice { @@ -1046,6 +1055,7 @@ type Query { businessMapMarkers: [MapMarker!]! currencyList: [Currency!]! globals: Globals + isFlashNpub(input: IsFlashNpubInput!): IsFlashNpubPayload lnInvoicePaymentStatus(input: LnInvoicePaymentStatusInput!): LnInvoicePaymentStatusPayload! me: User mobileVersions: [MobileVersions] diff --git a/src/graphql/public/types/object/is-flash-npub.ts b/src/graphql/public/types/object/is-flash-npub.ts new file mode 100644 index 0000000000..cf9fc52970 --- /dev/null +++ b/src/graphql/public/types/object/is-flash-npub.ts @@ -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 }