Skip to content

Commit

Permalink
merge main
Browse files Browse the repository at this point in the history
  • Loading branch information
fforres committed Jul 10, 2024
2 parents e2c4351 + 3a56e2d commit ace2985
Show file tree
Hide file tree
Showing 22 changed files with 567 additions and 185 deletions.
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"typescript.tsdk": "node_modules/typescript/lib"
}
27 changes: 0 additions & 27 deletions app/api/ApolloClientForRSC.tsx

This file was deleted.

36 changes: 8 additions & 28 deletions app/api/ApolloWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ import { setContext } from "@apollo/client/link/context";
import { onError } from "@apollo/client/link/error";
import { RetryLink } from "@apollo/client/link/retry";

import { useSetTokenRef, useTokenRef } from "../utils/supabase/AuthProvider";
import { supabaseClient } from "../utils/supabase/client";
import { useRefreshSession, useTokenRef } from "../utils/supabase/AuthProvider";

const retryLink = new RetryLink();

Expand Down Expand Up @@ -62,38 +61,20 @@ const useAuthLink = () => {
// Este link se encarga de manejar errores de autenticación
// Si el servidor responde con un code UNAUTHENTICATED, intenta refrescar el token.
const useErrorLink = () => {
const setToken = useSetTokenRef();
const refreshSession = useRefreshSession();

return onError(({ graphQLErrors, networkError, operation, forward }) => {
if (graphQLErrors) {
for (const err of graphQLErrors) {
if (err.extensions.code === "UNAUTHENTICATED") {
supabaseClient.auth
.getSession()
.then(({ data, error }) => {
if (error) {
// eslint-disable-next-line no-console
console.error("Error refreshing access token", error);

return;
}

const newToken = data.session?.access_token;

if (!newToken) {
// eslint-disable-next-line no-console
console.error("No access token found in session data");
} else {
setToken(newToken);
}

if (err.extensions.type === "UNAUTHENTICATED") {
refreshSession()
.then(() => {
forward(operation);
})
.catch((error: unknown) => {
.catch(() => {
// eslint-disable-next-line no-console
console.error("Error refreshing access token", error);
console.error("Error refreshing access token");
});
// }
}
}
} else if (networkError) {
Expand All @@ -117,8 +98,7 @@ if (!import.meta.env.VITE_JSCL_API_URL) {
const httpLink = new HttpLink({
// Tiene que ser una URL absoluta, ya que las URLs relativas no pueden ser usadas en SSR.
uri: import.meta.env.VITE_JSCL_API_URL,
fetchOptions: { cache: "no-store", credentials: "include" },
credentials: "include",
fetchOptions: { cache: "no-store" },
});

function useMakeClient() {
Expand Down
5 changes: 5 additions & 0 deletions app/api/gql/gql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-
* Therefore it is highly recommended to use the babel or swc plugin for production.
*/
const documents = {
"query myTickets($input: PaginatedInputMyTicketsSearchValues!) {\n myTickets(input: $input) {\n data {\n approvalStatus\n id\n paymentStatus\n redemptionStatus\n }\n pagination {\n currentPage\n pageSize\n totalPages\n totalRecords\n }\n }\n}": types.MyTicketsDocument,
"mutation CheckPurchaseOrderStatus($input: CheckForPurchaseOrderInput!) {\n checkPurchaseOrderStatus(input: $input) {\n status\n tickets {\n approvalStatus\n paymentStatus\n redemptionStatus\n }\n }\n}": types.CheckPurchaseOrderStatusDocument,
"mutation createPurchaseOrder($input: TicketClaimInput!) {\n claimUserTicket(input: $input) {\n __typename\n ... on PurchaseOrder {\n __typename\n id\n currency {\n id\n }\n finalPrice\n paymentLink\n status\n tickets {\n id\n approvalStatus\n redemptionStatus\n paymentStatus\n }\n }\n ... on RedeemUserTicketError {\n __typename\n error\n errorMessage\n }\n }\n}": types.CreatePurchaseOrderDocument,
"fragment EventTicketFragment on Ticket {\n id\n name\n description\n quantity\n isFree\n startDateTime\n status\n isUnlimited\n prices {\n id\n amount\n currency {\n currency\n id\n }\n }\n}": types.EventTicketFragmentFragmentDoc,
Expand All @@ -33,6 +34,10 @@ const documents = {
*/
export function graphql(source: string): unknown;

/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "query myTickets($input: PaginatedInputMyTicketsSearchValues!) {\n myTickets(input: $input) {\n data {\n approvalStatus\n id\n paymentStatus\n redemptionStatus\n }\n pagination {\n currentPage\n pageSize\n totalPages\n totalRecords\n }\n }\n}"): (typeof documents)["query myTickets($input: PaginatedInputMyTicketsSearchValues!) {\n myTickets(input: $input) {\n data {\n approvalStatus\n id\n paymentStatus\n redemptionStatus\n }\n pagination {\n currentPage\n pageSize\n totalPages\n totalRecords\n }\n }\n}"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
Expand Down
8 changes: 8 additions & 0 deletions app/api/gql/graphql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -880,6 +880,13 @@ export type UserSearchInput = {
tags: InputMaybe<Array<SearchableUserTags>>;
};

export type MyTicketsQueryVariables = Exact<{
input: PaginatedInputMyTicketsSearchValues;
}>;


export type MyTicketsQuery = { myTickets: { data: Array<{ approvalStatus: TicketApprovalStatus, id: string, paymentStatus: TicketPaymentStatus, redemptionStatus: TicketRedemptionStatus }>, pagination: { currentPage: number, pageSize: number, totalPages: number, totalRecords: number } } };

export type CheckPurchaseOrderStatusMutationVariables = Exact<{
input: CheckForPurchaseOrderInput;
}>;
Expand All @@ -904,6 +911,7 @@ export type GetEventAndTicketsQueryVariables = Exact<{
export type GetEventAndTicketsQuery = { event: { id: string, name: string, address: string | null, description: string | null, maxAttendees: number | null, startDateTime: string, endDateTime: string | null, status: EventStatus, community: { name: string | null } | null, users: Array<{ id: string, name: string | null }>, tickets: Array<{ ' $fragmentRefs'?: { 'EventTicketFragmentFragment': EventTicketFragmentFragment } }> } | null };

export const EventTicketFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"EventTicketFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Ticket"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"quantity"}},{"kind":"Field","name":{"kind":"Name","value":"isFree"}},{"kind":"Field","name":{"kind":"Name","value":"startDateTime"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"isUnlimited"}},{"kind":"Field","name":{"kind":"Name","value":"prices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"amount"}},{"kind":"Field","name":{"kind":"Name","value":"currency"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode<EventTicketFragmentFragment, unknown>;
export const MyTicketsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"myTickets"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PaginatedInputMyTicketsSearchValues"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"myTickets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"data"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"approvalStatus"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"paymentStatus"}},{"kind":"Field","name":{"kind":"Name","value":"redemptionStatus"}}]}},{"kind":"Field","name":{"kind":"Name","value":"pagination"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currentPage"}},{"kind":"Field","name":{"kind":"Name","value":"pageSize"}},{"kind":"Field","name":{"kind":"Name","value":"totalPages"}},{"kind":"Field","name":{"kind":"Name","value":"totalRecords"}}]}}]}}]}}]} as unknown as DocumentNode<MyTicketsQuery, MyTicketsQueryVariables>;
export const CheckPurchaseOrderStatusDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CheckPurchaseOrderStatus"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CheckForPurchaseOrderInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"checkPurchaseOrderStatus"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"tickets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"approvalStatus"}},{"kind":"Field","name":{"kind":"Name","value":"paymentStatus"}},{"kind":"Field","name":{"kind":"Name","value":"redemptionStatus"}}]}}]}}]}}]} as unknown as DocumentNode<CheckPurchaseOrderStatusMutation, CheckPurchaseOrderStatusMutationVariables>;
export const CreatePurchaseOrderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"createPurchaseOrder"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"TicketClaimInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"claimUserTicket"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"PurchaseOrder"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"currency"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"finalPrice"}},{"kind":"Field","name":{"kind":"Name","value":"paymentLink"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"tickets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"approvalStatus"}},{"kind":"Field","name":{"kind":"Name","value":"redemptionStatus"}},{"kind":"Field","name":{"kind":"Name","value":"paymentStatus"}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"RedeemUserTicketError"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"error"}},{"kind":"Field","name":{"kind":"Name","value":"errorMessage"}}]}}]}}]}}]} as unknown as DocumentNode<CreatePurchaseOrderMutation, CreatePurchaseOrderMutationVariables>;
export const GetEventAndTicketsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getEventAndTickets"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"event"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"address"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"maxAttendees"}},{"kind":"Field","name":{"kind":"Name","value":"startDateTime"}},{"kind":"Field","name":{"kind":"Name","value":"endDateTime"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"community"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"tickets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"EventTicketFragment"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"EventTicketFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Ticket"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"quantity"}},{"kind":"Field","name":{"kind":"Name","value":"isFree"}},{"kind":"Field","name":{"kind":"Name","value":"startDateTime"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"isUnlimited"}},{"kind":"Field","name":{"kind":"Name","value":"prices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"amount"}},{"kind":"Field","name":{"kind":"Name","value":"currency"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode<GetEventAndTicketsQuery, GetEventAndTicketsQueryVariables>;
69 changes: 69 additions & 0 deletions app/components/MyTickets/graphql/myTickets.generated.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/* eslint-disable @typescript-eslint/ban-ts-comment */
// @ts-nocheck
/* eslint-disable */
/* prettier-ignore */
/* This file is automatically generated. Please do not modify it manually. */
import * as Types from '../../../api/gql/graphql';

import { gql } from 'graphql-tag';
import * as Apollo from '@apollo/client';
const defaultOptions = {} as const;
export type MyTicketsQueryVariables = Types.Exact<{
input: Types.PaginatedInputMyTicketsSearchValues;
}>;


export type MyTicketsQuery = { __typename?: 'Query', myTickets: { __typename?: 'PaginatedUserTicket', data: Array<{ __typename?: 'UserTicket', approvalStatus: Types.TicketApprovalStatus, id: string, paymentStatus: Types.TicketPaymentStatus, redemptionStatus: Types.TicketRedemptionStatus }>, pagination: { __typename?: 'Pagination', currentPage: number, pageSize: number, totalPages: number, totalRecords: number } } };


export const MyTicketsDocument = gql`
query myTickets($input: PaginatedInputMyTicketsSearchValues!) {
myTickets(input: $input) {
data {
approvalStatus
id
paymentStatus
redemptionStatus
}
pagination {
currentPage
pageSize
totalPages
totalRecords
}
}
}
`;

/**
* __useMyTicketsQuery__
*
* To run a query within a React component, call `useMyTicketsQuery` and pass it any options that fit your needs.
* When your component renders, `useMyTicketsQuery` returns an object from Apollo Client that contains loading, error, and data properties
* you can use to render your UI.
*
* @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;
*
* @example
* const { data, loading, error } = useMyTicketsQuery({
* variables: {
* input: // value for 'input'
* },
* });
*/
export function useMyTicketsQuery(baseOptions: Apollo.QueryHookOptions<MyTicketsQuery, MyTicketsQueryVariables> & ({ variables: MyTicketsQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useQuery<MyTicketsQuery, MyTicketsQueryVariables>(MyTicketsDocument, options);
}
export function useMyTicketsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<MyTicketsQuery, MyTicketsQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useLazyQuery<MyTicketsQuery, MyTicketsQueryVariables>(MyTicketsDocument, options);
}
export function useMyTicketsSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions<MyTicketsQuery, MyTicketsQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useSuspenseQuery<MyTicketsQuery, MyTicketsQueryVariables>(MyTicketsDocument, options);
}
export type MyTicketsQueryHookResult = ReturnType<typeof useMyTicketsQuery>;
export type MyTicketsLazyQueryHookResult = ReturnType<typeof useMyTicketsLazyQuery>;
export type MyTicketsSuspenseQueryHookResult = ReturnType<typeof useMyTicketsSuspenseQuery>;
export type MyTicketsQueryResult = Apollo.QueryResult<MyTicketsQuery, MyTicketsQueryVariables>;
16 changes: 16 additions & 0 deletions app/components/MyTickets/graphql/myTickets.gql
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
query myTickets($input: PaginatedInputMyTicketsSearchValues!) {
myTickets(input: $input) {
data {
approvalStatus
id
paymentStatus
redemptionStatus
}
pagination {
currentPage
pageSize
totalPages
totalRecords
}
}
}
Loading

0 comments on commit ace2985

Please sign in to comment.