Skip to content

Commit

Permalink
feat: some payments related loaders
Browse files Browse the repository at this point in the history
  • Loading branch information
vitoUwu committed Oct 3, 2024
1 parent ddab739 commit 0cdc0c2
Show file tree
Hide file tree
Showing 4 changed files with 195 additions and 34 deletions.
39 changes: 39 additions & 0 deletions vtex/actions/payments/delete.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { AppContext } from "../../mod.ts";
import { parseCookie } from "../../utils/vtexId.ts";

export interface DeleteCard {
deletePaymentToken: boolean;
}

interface Props {
id: string;
}

async function loader(
{ id }: Props,
req: Request,
ctx: AppContext,
): Promise<DeleteCard | null> {
const { io } = ctx;
const { cookie, payload } = parseCookie(req.headers, ctx.account);

if (!payload?.sub || !payload?.userId) {
return null;
}

const mutation = `mutation DeleteCreditCardToken($tokenId: ID!) {
deletePaymentToken(tokenId: $tokenId) @context(provider: "vtex.my-cards-graphql@2.x")
}`;

try {
return await io.query<DeleteCard, { tokenId: string }>({
query: mutation,
variables: { tokenId: id },
}, { headers: { cookie } });
} catch (e) {
console.error(e);
return null;
}
}

export default loader;
55 changes: 55 additions & 0 deletions vtex/loaders/payments/info.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { AppContext } from "../../mod.ts";
import { parseCookie } from "../../utils/vtexId.ts";

const query = `query getPaymentSystems {
paymentSystems {
name
groupName
requiresDocument
displayDocument
validator {
regex
mask
cardCodeMask
cardCodeRegex
}
}
}`;

export interface PaymentSystem {
name: string;
groupName: string;
requiresDocument: boolean;
displayDocument: boolean;
validator: {
regex: string | null;
mask: string | null;
cardCodeMask: string | null;
cardCodeRegex: string | null;
};
}

export default async function loader(
_props: unknown,
req: Request,
ctx: AppContext,
) {
const { io } = ctx;
const { cookie, payload } = parseCookie(req.headers, ctx.account);

if (!payload?.sub || !payload?.userId) {
return null;
}

try {
const data = await io.query<{ paymentSystems: PaymentSystem[] }, null>(
{ query },
{ headers: { cookie } },
);

return data.paymentSystems;
} catch (e) {
console.error(e);
return null;
}
}
61 changes: 61 additions & 0 deletions vtex/loaders/payments/userPayments.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// fetch("https://www.als.com/_v/private/graphql/v1?workspace=master&maxAge=long&appsEtag=remove&domain=store&locale=en-US&__bindingId=d8649f18-3877-43de-88e6-c45a81eddc02", {
// "headers": {
// "content-type": "application/json",
// },
// "body": "{\"operationName\":\"Payments\",\"variables\":{},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"95af11127e44f1857144e38f18635e0d085113c3bfdda3e4b8bc99ae63e14e60\",\"sender\":\"vtex.my-cards@1.x\",\"provider\":\"vtex.store-graphql@2.x\"}}}",
// "method": "POST"
// })

import { AppContext } from "../../mod.ts";
import { parseCookie } from "../../utils/vtexId.ts";

export interface Payment {
accountStatus: string | null;
cardNumber: string;
expirationDate: string;
id: string;
isExpired: boolean;
paymentSystem: string;
paymentSystemName: string;
}

async function loader(
_props: unknown,
req: Request,
ctx: AppContext,
): Promise<Payment[] | null> {
const { io } = ctx;
const { cookie, payload } = parseCookie(req.headers, ctx.account);

if (!payload?.sub || !payload?.userId) {
return null;
}

const query = `query getUserPayments {
profile {
payments {
accountStatus
cardNumber
expirationDate
id
isExpired
paymentSystem
paymentSystemName
}
}
}`;

try {
const data = await io.query<{ profile: { payments: Payment[] } }, null>(
{ query },
{ headers: { cookie } },
);

return data.profile.payments;
} catch (e) {
console.error(e);
return null;
}
}

export default loader;
74 changes: 40 additions & 34 deletions vtex/manifest.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,12 @@ import * as $$$$$$$$$16 from "./actions/cart/updateUser.ts";
import * as $$$$$$$$$17 from "./actions/masterdata/createDocument.ts";
import * as $$$$$$$$$18 from "./actions/newsletter/subscribe.ts";
import * as $$$$$$$$$19 from "./actions/notifyme.ts";
import * as $$$$$$$$$20 from "./actions/review/submit.ts";
import * as $$$$$$$$$21 from "./actions/sessions/delete.ts";
import * as $$$$$$$$$22 from "./actions/trigger.ts";
import * as $$$$$$$$$23 from "./actions/wishlist/addItem.ts";
import * as $$$$$$$$$24 from "./actions/wishlist/removeItem.ts";
import * as $$$$$$$$$20 from "./actions/payments/delete.ts";
import * as $$$$$$$$$21 from "./actions/review/submit.ts";
import * as $$$$$$$$$22 from "./actions/sessions/delete.ts";
import * as $$$$$$$$$23 from "./actions/trigger.ts";
import * as $$$$$$$$$24 from "./actions/wishlist/addItem.ts";
import * as $$$$$$$$$25 from "./actions/wishlist/removeItem.ts";
import * as $$$$0 from "./handlers/sitemap.ts";
import * as $$$0 from "./loaders/cart.ts";
import * as $$$1 from "./loaders/categories/tree.ts";
Expand All @@ -53,18 +54,20 @@ import * as $$$21 from "./loaders/options/productIdByTerm.ts";
import * as $$$22 from "./loaders/orders/list.ts";
import * as $$$23 from "./loaders/paths/PDPDefaultPath.ts";
import * as $$$24 from "./loaders/paths/PLPDefaultPath.ts";
import * as $$$25 from "./loaders/product/extend.ts";
import * as $$$26 from "./loaders/product/extensions/detailsPage.ts";
import * as $$$27 from "./loaders/product/extensions/list.ts";
import * as $$$28 from "./loaders/product/extensions/listingPage.ts";
import * as $$$29 from "./loaders/product/extensions/suggestions.ts";
import * as $$$30 from "./loaders/product/wishlist.ts";
import * as $$$31 from "./loaders/proxy.ts";
import * as $$$32 from "./loaders/sessions/info.ts";
import * as $$$33 from "./loaders/user.ts";
import * as $$$34 from "./loaders/wishlist.ts";
import * as $$$35 from "./loaders/workflow/product.ts";
import * as $$$36 from "./loaders/workflow/products.ts";
import * as $$$25 from "./loaders/payments/info.ts";
import * as $$$26 from "./loaders/payments/userPayments.ts";
import * as $$$27 from "./loaders/product/extend.ts";
import * as $$$28 from "./loaders/product/extensions/detailsPage.ts";
import * as $$$29 from "./loaders/product/extensions/list.ts";
import * as $$$30 from "./loaders/product/extensions/listingPage.ts";
import * as $$$31 from "./loaders/product/extensions/suggestions.ts";
import * as $$$32 from "./loaders/product/wishlist.ts";
import * as $$$33 from "./loaders/proxy.ts";
import * as $$$34 from "./loaders/sessions/info.ts";
import * as $$$35 from "./loaders/user.ts";
import * as $$$36 from "./loaders/wishlist.ts";
import * as $$$37 from "./loaders/workflow/product.ts";
import * as $$$38 from "./loaders/workflow/products.ts";
import * as $$$$$$0 from "./sections/Analytics/Vtex.tsx";
import * as $$$$$$$$$$0 from "./workflows/events.ts";
import * as $$$$$$$$$$1 from "./workflows/product/index.ts";
Expand Down Expand Up @@ -96,18 +99,20 @@ const manifest = {
"vtex/loaders/orders/list.ts": $$$22,
"vtex/loaders/paths/PDPDefaultPath.ts": $$$23,
"vtex/loaders/paths/PLPDefaultPath.ts": $$$24,
"vtex/loaders/product/extend.ts": $$$25,
"vtex/loaders/product/extensions/detailsPage.ts": $$$26,
"vtex/loaders/product/extensions/list.ts": $$$27,
"vtex/loaders/product/extensions/listingPage.ts": $$$28,
"vtex/loaders/product/extensions/suggestions.ts": $$$29,
"vtex/loaders/product/wishlist.ts": $$$30,
"vtex/loaders/proxy.ts": $$$31,
"vtex/loaders/sessions/info.ts": $$$32,
"vtex/loaders/user.ts": $$$33,
"vtex/loaders/wishlist.ts": $$$34,
"vtex/loaders/workflow/product.ts": $$$35,
"vtex/loaders/workflow/products.ts": $$$36,
"vtex/loaders/payments/info.ts": $$$25,
"vtex/loaders/payments/userPayments.ts": $$$26,
"vtex/loaders/product/extend.ts": $$$27,
"vtex/loaders/product/extensions/detailsPage.ts": $$$28,
"vtex/loaders/product/extensions/list.ts": $$$29,
"vtex/loaders/product/extensions/listingPage.ts": $$$30,
"vtex/loaders/product/extensions/suggestions.ts": $$$31,
"vtex/loaders/product/wishlist.ts": $$$32,
"vtex/loaders/proxy.ts": $$$33,
"vtex/loaders/sessions/info.ts": $$$34,
"vtex/loaders/user.ts": $$$35,
"vtex/loaders/wishlist.ts": $$$36,
"vtex/loaders/workflow/product.ts": $$$37,
"vtex/loaders/workflow/products.ts": $$$38,
},
"handlers": {
"vtex/handlers/sitemap.ts": $$$$0,
Expand Down Expand Up @@ -136,11 +141,12 @@ const manifest = {
"vtex/actions/masterdata/createDocument.ts": $$$$$$$$$17,
"vtex/actions/newsletter/subscribe.ts": $$$$$$$$$18,
"vtex/actions/notifyme.ts": $$$$$$$$$19,
"vtex/actions/review/submit.ts": $$$$$$$$$20,
"vtex/actions/sessions/delete.ts": $$$$$$$$$21,
"vtex/actions/trigger.ts": $$$$$$$$$22,
"vtex/actions/wishlist/addItem.ts": $$$$$$$$$23,
"vtex/actions/wishlist/removeItem.ts": $$$$$$$$$24,
"vtex/actions/payments/delete.ts": $$$$$$$$$20,
"vtex/actions/review/submit.ts": $$$$$$$$$21,
"vtex/actions/sessions/delete.ts": $$$$$$$$$22,
"vtex/actions/trigger.ts": $$$$$$$$$23,
"vtex/actions/wishlist/addItem.ts": $$$$$$$$$24,
"vtex/actions/wishlist/removeItem.ts": $$$$$$$$$25,
},
"workflows": {
"vtex/workflows/events.ts": $$$$$$$$$$0,
Expand Down

0 comments on commit 0cdc0c2

Please sign in to comment.