Compare commits

..

6 Commits

Author SHA1 Message Date
639fc88b0b Merge pull request 'Add createCustomerPortalSession' (#238) from loewy/create-customer-portal-session into master
Reviewed-on: #238
2026-05-01 22:45:40 +00:00
20f50368c9 remove return url
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2026-05-01 13:15:18 -07:00
8367c2d0cd add createCustomerPortalSession
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2026-04-30 11:44:34 -07:00
b0c62f6e80 Merge pull request 'Trim getFeed query fragment' (#237) from loewy/trim-get-feed-query-fragment into master
Reviewed-on: #237
2026-04-29 20:26:40 +00:00
bc1ff66467 trim uncessary requested fields
All checks were successful
Tests / Tests (pull_request) Successful in 38s
2026-04-28 12:53:25 -07:00
ae37a3d9d9 Merge pull request 'Default getLongestRunsLeaderboard limit to 50' (#236) from dean/leaderboard-default-top-50 into master
Reviewed-on: #236
2026-04-24 00:01:23 +00:00
4 changed files with 71 additions and 173 deletions

View File

@@ -205,11 +205,6 @@ export enum ClientUploadStatusEnum {
UploadEnabled = "UPLOAD_ENABLED",
}
export type ClusterAssignmentInput = {
clusterId: Scalars["Int"]["input"];
userId?: InputMaybe<Scalars["Int"]["input"]>;
};
export type CommentGql = {
__typename?: "CommentGQL";
id: Scalars["Int"]["output"];
@@ -2187,12 +2182,6 @@ export type FilterInput =
videoId: Array<Scalars["Int"]["input"]>;
};
export type FinalizePlayerAssignmentsInput = {
clusterAssignments?: Array<ClusterAssignmentInput>;
shotMoves?: Array<ShotMoveInput>;
videoId: Scalars["Int"]["input"];
};
export type FloatOrdering = {
descending?: Scalars["Boolean"]["input"];
startingAt?: InputMaybe<Scalars["Float"]["input"]>;
@@ -2405,7 +2394,6 @@ export type Mutation = {
editUploadStream: Scalars["Boolean"]["output"];
editUser: UserGql;
ensureStripeCustomerExists: UserGql;
finalizePlayerAssignments: Array<PlayerClusterGql>;
findPrerecordTableLayout?: Maybe<HomographyInfoGql>;
followUser: UserGql;
getHlsInitUploadLink: GetUploadLinkReturn;
@@ -2529,10 +2517,6 @@ export type MutationEditUserArgs = {
input: EditUserInputGql;
};
export type MutationFinalizePlayerAssignmentsArgs = {
input: FinalizePlayerAssignmentsInput;
};
export type MutationFindPrerecordTableLayoutArgs = {
b64Image: Scalars["String"]["input"];
videoId: Scalars["Int"]["input"];
@@ -2695,29 +2679,6 @@ export type PageInfoGql = {
hasNextPage: Scalars["Boolean"]["output"];
};
export type PlayerClusterGql = {
__typename?: "PlayerClusterGQL";
clusterId: Scalars["Int"]["output"];
confirmed: Scalars["Boolean"]["output"];
nShots: Scalars["Int"]["output"];
shots: Array<PlayerClusterShotGql>;
userId?: Maybe<Scalars["Int"]["output"]>;
videoId: Scalars["Int"]["output"];
};
export type PlayerClusterShotGql = {
__typename?: "PlayerClusterShotGQL";
bboxX1: Scalars["Int"]["output"];
bboxX2: Scalars["Int"]["output"];
bboxY1: Scalars["Int"]["output"];
bboxY2: Scalars["Int"]["output"];
confidence: Scalars["Float"]["output"];
cropUrl?: Maybe<Scalars["String"]["output"]>;
fullFrameUrl?: Maybe<Scalars["String"]["output"]>;
isConfirmed: Scalars["Boolean"]["output"];
shotId: Scalars["Int"]["output"];
};
export enum PocketEnum {
Corner = "CORNER",
Side = "SIDE",
@@ -2828,7 +2789,6 @@ export type Query = {
notifications: NotificationConnection;
ruleSets: Array<RuleSet>;
unreadNotificationCount: Scalars["Int"]["output"];
videoPlayerClusters: Array<PlayerClusterGql>;
waitFor: Scalars["Float"]["output"];
};
@@ -2995,10 +2955,6 @@ export type QueryNotificationsArgs = {
offset?: Scalars["Int"]["input"];
};
export type QueryVideoPlayerClustersArgs = {
videoId: Scalars["Int"]["input"];
};
export type QueryWaitForArgs = {
duration: Scalars["Float"]["input"];
};
@@ -3216,11 +3172,6 @@ export type ShotGql = {
videoId: Scalars["Int"]["output"];
};
export type ShotMoveInput = {
newClusterId: Scalars["Int"]["input"];
shotId: Scalars["Int"]["input"];
};
export type ShotsOrderingComponent =
| {
difficulty: FloatOrdering;
@@ -3319,7 +3270,6 @@ export type StripeProductGql = {
export type StripeSubscriptionOptionsGql = {
__typename?: "StripeSubscriptionOptionsGQL";
products: Array<StripeProductGql>;
trialPeriodDays?: Maybe<Scalars["Int"]["output"]>;
};
export enum StripeSubscriptionStatusEnum {
@@ -4153,15 +4103,11 @@ export type GetFeedQuery = {
id: number;
name?: string | null;
screenshotUri?: string | null;
totalShotsMade: number;
totalShots: number;
makePercentage: number;
averageTimeBetweenShots?: number | null;
averageDifficulty?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
startTime?: any | null;
endTime?: any | null;
private: boolean;
elapsedTime?: number | null;
tableSize: number;
@@ -4176,26 +4122,13 @@ export type GetFeedQuery = {
__typename?: "UploadStreamGQL";
id: string;
lastIntendedSegmentBound?: number | null;
isCompleted: boolean;
streamSegmentType: StreamSegmentTypeEnum;
} | null;
tags: Array<{
__typename?: "VideoTag";
name: string;
tagClasses: Array<{ __typename?: "VideoTagClass"; name: string }>;
}>;
tags: Array<{ __typename?: "VideoTag"; name: string }>;
currentProcessing?: {
__typename?: "VideoProcessingGQL";
id: number;
status: ProcessingStatusEnum;
errors: Array<{
__typename?: "VideoProcessingErrorGQL";
message: string;
}>;
statuses: Array<{
__typename?: "VideoProcessingStatusGQL";
status: ProcessingStatusEnum;
}>;
} | null;
reactions: Array<{
__typename?: "ReactionGQL";
@@ -4255,15 +4188,11 @@ export type VideoCardFieldsFragment = {
id: number;
name?: string | null;
screenshotUri?: string | null;
totalShotsMade: number;
totalShots: number;
makePercentage: number;
averageTimeBetweenShots?: number | null;
averageDifficulty?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
startTime?: any | null;
endTime?: any | null;
private: boolean;
elapsedTime?: number | null;
tableSize: number;
@@ -4278,23 +4207,13 @@ export type VideoCardFieldsFragment = {
__typename?: "UploadStreamGQL";
id: string;
lastIntendedSegmentBound?: number | null;
isCompleted: boolean;
streamSegmentType: StreamSegmentTypeEnum;
} | null;
tags: Array<{
__typename?: "VideoTag";
name: string;
tagClasses: Array<{ __typename?: "VideoTagClass"; name: string }>;
}>;
tags: Array<{ __typename?: "VideoTag"; name: string }>;
currentProcessing?: {
__typename?: "VideoProcessingGQL";
id: number;
status: ProcessingStatusEnum;
errors: Array<{ __typename?: "VideoProcessingErrorGQL"; message: string }>;
statuses: Array<{
__typename?: "VideoProcessingStatusGQL";
status: ProcessingStatusEnum;
}>;
} | null;
reactions: Array<{
__typename?: "ReactionGQL";
@@ -4368,15 +4287,11 @@ export type GetVideoFeedQuery = {
id: number;
name?: string | null;
screenshotUri?: string | null;
totalShotsMade: number;
totalShots: number;
makePercentage: number;
averageTimeBetweenShots?: number | null;
averageDifficulty?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
startTime?: any | null;
endTime?: any | null;
private: boolean;
elapsedTime?: number | null;
tableSize: number;
@@ -4391,26 +4306,13 @@ export type GetVideoFeedQuery = {
__typename?: "UploadStreamGQL";
id: string;
lastIntendedSegmentBound?: number | null;
isCompleted: boolean;
streamSegmentType: StreamSegmentTypeEnum;
} | null;
tags: Array<{
__typename?: "VideoTag";
name: string;
tagClasses: Array<{ __typename?: "VideoTagClass"; name: string }>;
}>;
tags: Array<{ __typename?: "VideoTag"; name: string }>;
currentProcessing?: {
__typename?: "VideoProcessingGQL";
id: number;
status: ProcessingStatusEnum;
errors: Array<{
__typename?: "VideoProcessingErrorGQL";
message: string;
}>;
statuses: Array<{
__typename?: "VideoProcessingStatusGQL";
status: ProcessingStatusEnum;
}>;
} | null;
reactions: Array<{
__typename?: "ReactionGQL";
@@ -4805,6 +4707,18 @@ export type CreateSubscriptionMutation = {
};
};
export type CreateCustomerPortalSessionMutationVariables = Exact<{
[key: string]: never;
}>;
export type CreateCustomerPortalSessionMutation = {
__typename?: "Mutation";
createCustomerPortalSession: {
__typename?: "CreateCustomerPortalSessionResultGQL";
portalUrl: string;
};
};
export type GetAvailableSubscriptionOptionsQueryVariables = Exact<{
[key: string]: never;
}>;
@@ -6575,41 +6489,26 @@ export const VideoCardFieldsFragmentDoc = gql`
}
name
screenshotUri
totalShotsMade
totalShots
makePercentage
averageTimeBetweenShots
averageDifficulty
createdAt
updatedAt
startTime
endTime
private
elapsedTime
screenshotUri
stream {
id
lastIntendedSegmentBound
isCompleted
streamSegmentType
}
tableSize
pocketSize
tags {
tagClasses {
name
}
name
}
currentProcessing {
id
errors {
message
}
status
statuses {
status
}
}
reactions {
videoId
@@ -9708,6 +9607,56 @@ export type CreateSubscriptionMutationOptions = Apollo.BaseMutationOptions<
CreateSubscriptionMutation,
CreateSubscriptionMutationVariables
>;
export const CreateCustomerPortalSessionDocument = gql`
mutation CreateCustomerPortalSession {
createCustomerPortalSession {
portalUrl
}
}
`;
export type CreateCustomerPortalSessionMutationFn = Apollo.MutationFunction<
CreateCustomerPortalSessionMutation,
CreateCustomerPortalSessionMutationVariables
>;
/**
* __useCreateCustomerPortalSessionMutation__
*
* To run a mutation, you first call `useCreateCustomerPortalSessionMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useCreateCustomerPortalSessionMutation` returns a tuple that includes:
* - A mutate function that you can call at any time to execute the mutation
* - An object with fields that represent the current status of the mutation's execution
*
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
*
* @example
* const [createCustomerPortalSessionMutation, { data, loading, error }] = useCreateCustomerPortalSessionMutation({
* variables: {
* },
* });
*/
export function useCreateCustomerPortalSessionMutation(
baseOptions?: Apollo.MutationHookOptions<
CreateCustomerPortalSessionMutation,
CreateCustomerPortalSessionMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<
CreateCustomerPortalSessionMutation,
CreateCustomerPortalSessionMutationVariables
>(CreateCustomerPortalSessionDocument, options);
}
export type CreateCustomerPortalSessionMutationHookResult = ReturnType<
typeof useCreateCustomerPortalSessionMutation
>;
export type CreateCustomerPortalSessionMutationResult =
Apollo.MutationResult<CreateCustomerPortalSessionMutation>;
export type CreateCustomerPortalSessionMutationOptions =
Apollo.BaseMutationOptions<
CreateCustomerPortalSessionMutation,
CreateCustomerPortalSessionMutationVariables
>;
export const GetAvailableSubscriptionOptionsDocument = gql`
query GetAvailableSubscriptionOptions {
getAvailableSubscriptionOptions {

View File

@@ -31,41 +31,26 @@ fragment VideoCardFields on VideoGQL {
}
name
screenshotUri
totalShotsMade
totalShots
makePercentage
averageTimeBetweenShots
averageDifficulty
createdAt
updatedAt
startTime
endTime
private
elapsedTime
screenshotUri
stream {
id
lastIntendedSegmentBound
isCompleted
streamSegmentType
}
tableSize
pocketSize
tags {
tagClasses {
name
}
name
}
currentProcessing {
id
errors {
message
}
status
statuses {
status
}
}
reactions {
videoId

View File

@@ -20,6 +20,12 @@ mutation CreateSubscription($priceId: String!) {
}
}
mutation CreateCustomerPortalSession {
createCustomerPortalSession {
portalUrl
}
}
query GetAvailableSubscriptionOptions {
getAvailableSubscriptionOptions {
products {

View File

@@ -49,7 +49,6 @@ type Query {
limit: Int! = 500
countRespectsLimit: Boolean! = false
): GetRunsResult!
videoPlayerClusters(videoId: Int!): [PlayerClusterGQL!]!
getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]!
getTableState(
b64Image: String!
@@ -861,27 +860,6 @@ input DatetimeOrdering {
startingAt: DateTime = null
}
type PlayerClusterGQL {
videoId: Int!
clusterId: Int!
nShots: Int!
userId: Int
confirmed: Boolean!
shots: [PlayerClusterShotGQL!]!
}
type PlayerClusterShotGQL {
shotId: Int!
bboxX1: Int!
bboxY1: Int!
bboxX2: Int!
bboxY2: Int!
confidence: Float!
isConfirmed: Boolean!
cropUrl: String
fullFrameUrl: String
}
type TableStateGQL {
identifierToPosition: [[Float!]!]!
homography: HomographyInfoGQL
@@ -962,7 +940,6 @@ type UserRelationship {
type StripeSubscriptionOptionsGQL {
products: [StripeProductGQL!]!
trialPeriodDays: Int
}
type StripeProductGQL {
@@ -1116,9 +1093,6 @@ type Mutation {
markAllNotificationsAsRead: Boolean!
markNotificationsAsRead(notificationIds: [Int!]!): Boolean!
deleteNotification(notificationId: Int!): Boolean!
finalizePlayerAssignments(
input: FinalizePlayerAssignmentsInput!
): [PlayerClusterGQL!]!
addAnnotationToShot(
shotId: Int!
annotationName: String!
@@ -1190,22 +1164,6 @@ enum ReportReasonEnum {
OTHER
}
input FinalizePlayerAssignmentsInput {
videoId: Int!
clusterAssignments: [ClusterAssignmentInput!]! = []
shotMoves: [ShotMoveInput!]! = []
}
input ClusterAssignmentInput {
clusterId: Int!
userId: Int = null
}
input ShotMoveInput {
shotId: Int!
newClusterId: Int!
}
type AddShotAnnotationReturn {
value: SuccessfulAddAddShotAnnotationErrors!
}