Compare commits

..

1 Commits

Author SHA1 Message Date
a68bb67926 Expose per-ball detector boxes on TableStateGQL
Regenerated from the backend branch that adds identifierToBox, so this
commit's schema matches that branch's Python export exactly. Kept off gql
master because the export also reorders the share-link declarations that
gql master carries in their pre-alphabetical positions.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 18:53:12 -07:00
6 changed files with 41 additions and 639 deletions

View File

@@ -265,7 +265,6 @@ export type CohortStatsGql = {
activated7d: Scalars["Int"]["output"]; activated7d: Scalars["Int"]["output"];
activatedNotPaid7d: Scalars["Int"]["output"]; activatedNotPaid7d: Scalars["Int"]["output"];
paid7d: Scalars["Int"]["output"]; paid7d: Scalars["Int"]["output"];
paidTotal: Scalars["Int"]["output"];
signups: Scalars["Int"]["output"]; signups: Scalars["Int"]["output"];
weekStart: Scalars["Date"]["output"]; weekStart: Scalars["Date"]["output"];
}; };
@@ -2324,8 +2323,6 @@ export type FunnelStatsGql = {
freemiumEpoch: Scalars["Date"]["output"]; freemiumEpoch: Scalars["Date"]["output"];
newPaid7d: Scalars["Int"]["output"]; newPaid7d: Scalars["Int"]["output"];
newPaid30d: Scalars["Int"]["output"]; newPaid30d: Scalars["Int"]["output"];
newPaidToday: Scalars["Int"]["output"];
pastDueUsers: Scalars["Int"]["output"];
payingUsers: Scalars["Int"]["output"]; payingUsers: Scalars["Int"]["output"];
retentionPrevActive: Scalars["Int"]["output"]; retentionPrevActive: Scalars["Int"]["output"];
retentionReturned: Scalars["Int"]["output"]; retentionReturned: Scalars["Int"]["output"];
@@ -2582,7 +2579,6 @@ export type Mutation = {
startChallenge: ChallengeEntry; startChallenge: ChallengeEntry;
submitCancellationFeedback: Scalars["Boolean"]["output"]; submitCancellationFeedback: Scalars["Boolean"]["output"];
submitChallengeEntry: ChallengeEntry; submitChallengeEntry: ChallengeEntry;
submitSessionCoachFeedback: SessionCoachFeedbackGql;
syncAppleSubscription: SyncAppleSubscriptionResultGql; syncAppleSubscription: SyncAppleSubscriptionResultGql;
undismissChallenge: Scalars["Boolean"]["output"]; undismissChallenge: Scalars["Boolean"]["output"];
unfollowUser: UserGql; unfollowUser: UserGql;
@@ -2844,12 +2840,6 @@ export type MutationSubmitChallengeEntryArgs = {
videoId: Scalars["ID"]["input"]; videoId: Scalars["ID"]["input"];
}; };
export type MutationSubmitSessionCoachFeedbackArgs = {
generationId: Scalars["ID"]["input"];
response: SessionCoachFeedbackResponseEnum;
videoId: Scalars["Int"]["input"];
};
export type MutationSyncAppleSubscriptionArgs = { export type MutationSyncAppleSubscriptionArgs = {
input: SyncAppleSubscriptionInputGql; input: SyncAppleSubscriptionInputGql;
}; };
@@ -3132,7 +3122,6 @@ export type Query = {
getResolvedTier: ResolvedTierGql; getResolvedTier: ResolvedTierGql;
getRuns: GetRunsResult; getRuns: GetRunsResult;
getSessionCoach: SessionCoachGql; getSessionCoach: SessionCoachGql;
getSessionCoachGenerationStatus?: Maybe<SessionCoachGenerationStatusGql>;
getShotAnnotationTypes: Array<ShotAnnotationTypeGql>; getShotAnnotationTypes: Array<ShotAnnotationTypeGql>;
getShotTableState: ShotTableStateGql; getShotTableState: ShotTableStateGql;
getShots: Array<ShotGql>; getShots: Array<ShotGql>;
@@ -3294,11 +3283,6 @@ export type QueryGetSessionCoachArgs = {
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
}; };
export type QueryGetSessionCoachGenerationStatusArgs = {
generationId: Scalars["ID"]["input"];
videoId: Scalars["Int"]["input"];
};
export type QueryGetShotAnnotationTypesArgs = { export type QueryGetShotAnnotationTypesArgs = {
errorTypes?: InputMaybe<Scalars["Boolean"]["input"]>; errorTypes?: InputMaybe<Scalars["Boolean"]["input"]>;
}; };
@@ -3701,19 +3685,6 @@ export type SessionCoachEvidenceGql = {
score: Scalars["Float"]["output"]; score: Scalars["Float"]["output"];
}; };
export type SessionCoachFeedbackGql = {
__typename?: "SessionCoachFeedbackGQL";
response: SessionCoachFeedbackResponseEnum;
updatedAt: Scalars["DateTime"]["output"];
};
export enum SessionCoachFeedbackResponseEnum {
AlreadyWorkingOnThis = "ALREADY_WORKING_ON_THIS",
Helpful = "HELPFUL",
NotEnoughEvidence = "NOT_ENOUGH_EVIDENCE",
WrongFocus = "WRONG_FOCUS",
}
export type SessionCoachGql = { export type SessionCoachGql = {
__typename?: "SessionCoachGQL"; __typename?: "SessionCoachGQL";
agentGeneration?: Maybe<SessionCoachGenerationGql>; agentGeneration?: Maybe<SessionCoachGenerationGql>;
@@ -3766,7 +3737,6 @@ export type SessionCoachGenerationGql = {
createdAt: Scalars["DateTime"]["output"]; createdAt: Scalars["DateTime"]["output"];
decision?: Maybe<SessionCoachDecisionGql>; decision?: Maybe<SessionCoachDecisionGql>;
diagnostics?: Maybe<SessionCoachGenerationDiagnosticsGql>; diagnostics?: Maybe<SessionCoachGenerationDiagnosticsGql>;
feedback?: Maybe<SessionCoachFeedbackGql>;
id: Scalars["ID"]["output"]; id: Scalars["ID"]["output"];
state: SessionCoachGenerationStateEnum; state: SessionCoachGenerationStateEnum;
}; };
@@ -3778,18 +3748,6 @@ export enum SessionCoachGenerationStateEnum {
Running = "RUNNING", Running = "RUNNING",
} }
export type SessionCoachGenerationStatusGql = {
__typename?: "SessionCoachGenerationStatusGQL";
completedAt?: Maybe<Scalars["DateTime"]["output"]>;
createdAt: Scalars["DateTime"]["output"];
enqueueCount: Scalars["Int"]["output"];
id: Scalars["ID"]["output"];
lastEnqueuedAt?: Maybe<Scalars["DateTime"]["output"]>;
startedAt?: Maybe<Scalars["DateTime"]["output"]>;
state: SessionCoachGenerationStateEnum;
updatedAt: Scalars["DateTime"]["output"];
};
export enum SessionCoachIneligibilityReasonEnum { export enum SessionCoachIneligibilityReasonEnum {
Multiplayer = "MULTIPLAYER", Multiplayer = "MULTIPLAYER",
} }
@@ -4361,7 +4319,7 @@ export type VideoExportJobGql = {
createdAt?: Maybe<Scalars["DateTime"]["output"]>; createdAt?: Maybe<Scalars["DateTime"]["output"]>;
downloadUrl?: Maybe<Scalars["String"]["output"]>; downloadUrl?: Maybe<Scalars["String"]["output"]>;
expiresAt?: Maybe<Scalars["DateTime"]["output"]>; expiresAt?: Maybe<Scalars["DateTime"]["output"]>;
fileSizeBytes?: Maybe<Scalars["BigInt"]["output"]>; fileSizeBytes?: Maybe<Scalars["Int"]["output"]>;
id: Scalars["Int"]["output"]; id: Scalars["Int"]["output"];
mode: VideoExportModeEnum; mode: VideoExportModeEnum;
runId?: Maybe<Scalars["Int"]["output"]>; runId?: Maybe<Scalars["Int"]["output"]>;
@@ -6933,10 +6891,8 @@ export type ReactToVideoMutation = {
}; };
export type GetShotLabVideosQueryVariables = Exact<{ export type GetShotLabVideosQueryVariables = Exact<{
feedInput: VideoFeedInputGql; userId: Scalars["Int"]["input"];
includePrivate: IncludePrivateEnum;
limit?: Scalars["Int"]["input"]; limit?: Scalars["Int"]["input"];
after?: InputMaybe<Scalars["String"]["input"]>;
}>; }>;
export type GetShotLabVideosQuery = { export type GetShotLabVideosQuery = {
@@ -6964,11 +6920,6 @@ export type GetShotLabVideosQuery = {
lastSegmentUploadedAt?: any | null; lastSegmentUploadedAt?: any | null;
} | null; } | null;
}>; }>;
pageInfo: {
__typename?: "PageInfoGQL";
hasNextPage: boolean;
endCursor?: string | null;
};
}; };
}; };
@@ -7247,35 +7198,10 @@ export type GetSessionCoachQuery = {
abstentionReason?: string | null; abstentionReason?: string | null;
synthesisRationale?: string | null; synthesisRationale?: string | null;
} | null; } | null;
feedback?: {
__typename?: "SessionCoachFeedbackGQL";
response: SessionCoachFeedbackResponseEnum;
updatedAt: any;
} | null;
} | null; } | null;
}; };
}; };
export type GetSessionCoachGenerationStatusQueryVariables = Exact<{
videoId: Scalars["Int"]["input"];
generationId: Scalars["ID"]["input"];
}>;
export type GetSessionCoachGenerationStatusQuery = {
__typename?: "Query";
getSessionCoachGenerationStatus?: {
__typename?: "SessionCoachGenerationStatusGQL";
id: string;
state: SessionCoachGenerationStateEnum;
createdAt: any;
updatedAt: any;
startedAt?: any | null;
lastEnqueuedAt?: any | null;
enqueueCount: number;
completedAt?: any | null;
} | null;
};
export type RequestSessionCoachGenerationMutationVariables = Exact<{ export type RequestSessionCoachGenerationMutationVariables = Exact<{
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
}>; }>;
@@ -7329,30 +7255,10 @@ export type RequestSessionCoachGenerationMutation = {
abstentionReason?: string | null; abstentionReason?: string | null;
synthesisRationale?: string | null; synthesisRationale?: string | null;
} | null; } | null;
feedback?: {
__typename?: "SessionCoachFeedbackGQL";
response: SessionCoachFeedbackResponseEnum;
updatedAt: any;
} | null;
} | null; } | null;
}; };
}; };
export type SubmitSessionCoachFeedbackMutationVariables = Exact<{
videoId: Scalars["Int"]["input"];
generationId: Scalars["ID"]["input"];
response: SessionCoachFeedbackResponseEnum;
}>;
export type SubmitSessionCoachFeedbackMutation = {
__typename?: "Mutation";
submitSessionCoachFeedback: {
__typename?: "SessionCoachFeedbackGQL";
response: SessionCoachFeedbackResponseEnum;
updatedAt: any;
};
};
export type SessionCoachCandidateFieldsFragment = { export type SessionCoachCandidateFieldsFragment = {
__typename?: "SessionCoachCandidateGQL"; __typename?: "SessionCoachCandidateGQL";
id: string; id: string;
@@ -7430,11 +7336,6 @@ export type SessionCoachGenerationFieldsFragment = {
abstentionReason?: string | null; abstentionReason?: string | null;
synthesisRationale?: string | null; synthesisRationale?: string | null;
} | null; } | null;
feedback?: {
__typename?: "SessionCoachFeedbackGQL";
response: SessionCoachFeedbackResponseEnum;
updatedAt: any;
} | null;
}; };
export type CreateShotShareLinkMutationVariables = Exact<{ export type CreateShotShareLinkMutationVariables = Exact<{
@@ -7573,76 +7474,6 @@ export type FinalizePlayerAssignmentsMutation = {
}>; }>;
}; };
export type TableStateLayoutFieldsFragment = {
__typename?: "TableStateGQL";
identifierToPosition: Array<Array<number>>;
identifierToColor: Array<{ __typename?: "RGBColorGQL"; hex: string } | null>;
};
export type DetectionBoxFieldsFragment = {
__typename?: "BoundingBoxGQL";
left: number;
top: number;
width: number;
height: number;
};
export type DetectionPocketPointFieldsFragment = {
__typename?: "PocketPointsGQL";
topLeft: { __typename?: "IntPoint2D"; x: number; y: number };
topSide: { __typename?: "IntPoint2D"; x: number; y: number };
topRight: { __typename?: "IntPoint2D"; x: number; y: number };
bottomLeft: { __typename?: "IntPoint2D"; x: number; y: number };
bottomSide: { __typename?: "IntPoint2D"; x: number; y: number };
bottomRight: { __typename?: "IntPoint2D"; x: number; y: number };
};
export type TableStateDetectionFieldsFragment = {
__typename?: "TableStateGQL";
identifierToBox: Array<{
__typename?: "BoundingBoxGQL";
left: number;
top: number;
width: number;
height: number;
}>;
homography?: {
__typename?: "HomographyInfoGQL";
crop: {
__typename?: "BoundingBoxGQL";
left: number;
top: number;
width: number;
height: number;
};
pockets: Array<{
__typename?: "BoundingBoxGQL";
left: number;
top: number;
width: number;
height: number;
}>;
sourcePoints: {
__typename?: "PocketPointsGQL";
topLeft: { __typename?: "IntPoint2D"; x: number; y: number };
topSide: { __typename?: "IntPoint2D"; x: number; y: number };
topRight: { __typename?: "IntPoint2D"; x: number; y: number };
bottomLeft: { __typename?: "IntPoint2D"; x: number; y: number };
bottomSide: { __typename?: "IntPoint2D"; x: number; y: number };
bottomRight: { __typename?: "IntPoint2D"; x: number; y: number };
};
destPoints: {
__typename?: "PocketPointsGQL";
topLeft: { __typename?: "IntPoint2D"; x: number; y: number };
topSide: { __typename?: "IntPoint2D"; x: number; y: number };
topRight: { __typename?: "IntPoint2D"; x: number; y: number };
bottomLeft: { __typename?: "IntPoint2D"; x: number; y: number };
bottomSide: { __typename?: "IntPoint2D"; x: number; y: number };
bottomRight: { __typename?: "IntPoint2D"; x: number; y: number };
};
} | null;
};
export type GetTableStateQueryVariables = Exact<{ export type GetTableStateQueryVariables = Exact<{
b64Image: Scalars["String"]["input"]; b64Image: Scalars["String"]["input"];
tableSize?: InputMaybe<Scalars["Float"]["input"]>; tableSize?: InputMaybe<Scalars["Float"]["input"]>;
@@ -7658,48 +7489,6 @@ export type GetTableStateQuery = {
__typename?: "RGBColorGQL"; __typename?: "RGBColorGQL";
hex: string; hex: string;
} | null>; } | null>;
identifierToBox: Array<{
__typename?: "BoundingBoxGQL";
left: number;
top: number;
width: number;
height: number;
}>;
homography?: {
__typename?: "HomographyInfoGQL";
crop: {
__typename?: "BoundingBoxGQL";
left: number;
top: number;
width: number;
height: number;
};
pockets: Array<{
__typename?: "BoundingBoxGQL";
left: number;
top: number;
width: number;
height: number;
}>;
sourcePoints: {
__typename?: "PocketPointsGQL";
topLeft: { __typename?: "IntPoint2D"; x: number; y: number };
topSide: { __typename?: "IntPoint2D"; x: number; y: number };
topRight: { __typename?: "IntPoint2D"; x: number; y: number };
bottomLeft: { __typename?: "IntPoint2D"; x: number; y: number };
bottomSide: { __typename?: "IntPoint2D"; x: number; y: number };
bottomRight: { __typename?: "IntPoint2D"; x: number; y: number };
};
destPoints: {
__typename?: "PocketPointsGQL";
topLeft: { __typename?: "IntPoint2D"; x: number; y: number };
topSide: { __typename?: "IntPoint2D"; x: number; y: number };
topRight: { __typename?: "IntPoint2D"; x: number; y: number };
bottomLeft: { __typename?: "IntPoint2D"; x: number; y: number };
bottomSide: { __typename?: "IntPoint2D"; x: number; y: number };
bottomRight: { __typename?: "IntPoint2D"; x: number; y: number };
};
} | null;
}; };
}; };
@@ -8360,8 +8149,6 @@ export type GetUsageStatsQuery = {
activationCohort: number; activationCohort: number;
activationActivated: number; activationActivated: number;
payingUsers: number; payingUsers: number;
pastDueUsers: number;
newPaidToday: number;
newPaid7d: number; newPaid7d: number;
newPaid30d: number; newPaid30d: number;
retentionPrevActive: number; retentionPrevActive: number;
@@ -8374,7 +8161,6 @@ export type GetUsageStatsQuery = {
activated7d: number; activated7d: number;
paid7d: number; paid7d: number;
activatedNotPaid7d: number; activatedNotPaid7d: number;
paidTotal: number;
}>; }>;
windows: Array<{ windows: Array<{
__typename?: "UsageStatsWindowGQL"; __typename?: "UsageStatsWindowGQL";
@@ -9489,7 +9275,7 @@ export type VideoExportJobFieldsFragment = {
shotIds?: Array<number> | null; shotIds?: Array<number> | null;
runId?: number | null; runId?: number | null;
downloadUrl?: string | null; downloadUrl?: string | null;
fileSizeBytes?: any | null; fileSizeBytes?: number | null;
expiresAt?: any | null; expiresAt?: any | null;
createdAt?: any | null; createdAt?: any | null;
}; };
@@ -9511,7 +9297,7 @@ export type RequestVideoExportMutation = {
shotIds?: Array<number> | null; shotIds?: Array<number> | null;
runId?: number | null; runId?: number | null;
downloadUrl?: string | null; downloadUrl?: string | null;
fileSizeBytes?: any | null; fileSizeBytes?: number | null;
expiresAt?: any | null; expiresAt?: any | null;
createdAt?: any | null; createdAt?: any | null;
}; };
@@ -9543,7 +9329,7 @@ export type VideoExportJobQuery = {
shotIds?: Array<number> | null; shotIds?: Array<number> | null;
runId?: number | null; runId?: number | null;
downloadUrl?: string | null; downloadUrl?: string | null;
fileSizeBytes?: any | null; fileSizeBytes?: number | null;
expiresAt?: any | null; expiresAt?: any | null;
createdAt?: any | null; createdAt?: any | null;
} | null; } | null;
@@ -9567,7 +9353,7 @@ export type MyVideoExportsQuery = {
shotIds?: Array<number> | null; shotIds?: Array<number> | null;
runId?: number | null; runId?: number | null;
downloadUrl?: string | null; downloadUrl?: string | null;
fileSizeBytes?: any | null; fileSizeBytes?: number | null;
expiresAt?: any | null; expiresAt?: any | null;
createdAt?: any | null; createdAt?: any | null;
}>; }>;
@@ -10157,10 +9943,6 @@ export const SessionCoachGenerationFieldsFragmentDoc = gql`
abstentionReason abstentionReason
synthesisRationale synthesisRationale
} }
feedback {
response
updatedAt
}
} }
`; `;
export const PlayerClusterShotFieldsFragmentDoc = gql` export const PlayerClusterShotFieldsFragmentDoc = gql`
@@ -10192,73 +9974,6 @@ export const PlayerClusterFieldsFragmentDoc = gql`
} }
${PlayerClusterShotFieldsFragmentDoc} ${PlayerClusterShotFieldsFragmentDoc}
`; `;
export const TableStateLayoutFieldsFragmentDoc = gql`
fragment TableStateLayoutFields on TableStateGQL {
identifierToPosition
identifierToColor {
hex
}
}
`;
export const DetectionBoxFieldsFragmentDoc = gql`
fragment DetectionBoxFields on BoundingBoxGQL {
left
top
width
height
}
`;
export const DetectionPocketPointFieldsFragmentDoc = gql`
fragment DetectionPocketPointFields on PocketPointsGQL {
topLeft {
x
y
}
topSide {
x
y
}
topRight {
x
y
}
bottomLeft {
x
y
}
bottomSide {
x
y
}
bottomRight {
x
y
}
}
`;
export const TableStateDetectionFieldsFragmentDoc = gql`
fragment TableStateDetectionFields on TableStateGQL {
identifierToBox {
...DetectionBoxFields
}
homography {
crop {
...DetectionBoxFields
}
pockets {
...DetectionBoxFields
}
sourcePoints {
...DetectionPocketPointFields
}
destPoints {
...DetectionPocketPointFields
}
}
}
${DetectionBoxFieldsFragmentDoc}
${DetectionPocketPointFieldsFragmentDoc}
`;
export const ShotClipRangeFragmentDoc = gql` export const ShotClipRangeFragmentDoc = gql`
fragment ShotClipRange on ShotGQL { fragment ShotClipRange on ShotGQL {
id id
@@ -15456,18 +15171,12 @@ export type ReactToVideoMutationOptions = Apollo.BaseMutationOptions<
ReactToVideoMutationVariables ReactToVideoMutationVariables
>; >;
export const GetShotLabVideosDocument = gql` export const GetShotLabVideosDocument = gql`
query GetShotLabVideos( query GetShotLabVideos($userId: Int!, $limit: Int! = 25) {
$feedInput: VideoFeedInputGQL!
$includePrivate: IncludePrivateEnum!
$limit: Int! = 25
$after: String = null
) {
getFeedVideos( getFeedVideos(
limit: $limit limit: $limit
after: $after
includeCallersVideos: false includeCallersVideos: false
includePrivate: $includePrivate includePrivate: MINE
feedInput: $feedInput feedInput: { userId: $userId }
) { ) {
videos { videos {
id id
@@ -15487,10 +15196,6 @@ export const GetShotLabVideosDocument = gql`
lastSegmentUploadedAt lastSegmentUploadedAt
} }
} }
pageInfo {
hasNextPage
endCursor
}
} }
} }
`; `;
@@ -15507,10 +15212,8 @@ export const GetShotLabVideosDocument = gql`
* @example * @example
* const { data, loading, error } = useGetShotLabVideosQuery({ * const { data, loading, error } = useGetShotLabVideosQuery({
* variables: { * variables: {
* feedInput: // value for 'feedInput' * userId: // value for 'userId'
* includePrivate: // value for 'includePrivate'
* limit: // value for 'limit' * limit: // value for 'limit'
* after: // value for 'after'
* }, * },
* }); * });
*/ */
@@ -15961,90 +15664,6 @@ export type GetSessionCoachQueryResult = Apollo.QueryResult<
GetSessionCoachQuery, GetSessionCoachQuery,
GetSessionCoachQueryVariables GetSessionCoachQueryVariables
>; >;
export const GetSessionCoachGenerationStatusDocument = gql`
query GetSessionCoachGenerationStatus($videoId: Int!, $generationId: ID!) {
getSessionCoachGenerationStatus(
videoId: $videoId
generationId: $generationId
) {
id
state
createdAt
updatedAt
startedAt
lastEnqueuedAt
enqueueCount
completedAt
}
}
`;
/**
* __useGetSessionCoachGenerationStatusQuery__
*
* To run a query within a React component, call `useGetSessionCoachGenerationStatusQuery` and pass it any options that fit your needs.
* When your component renders, `useGetSessionCoachGenerationStatusQuery` 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 } = useGetSessionCoachGenerationStatusQuery({
* variables: {
* videoId: // value for 'videoId'
* generationId: // value for 'generationId'
* },
* });
*/
export function useGetSessionCoachGenerationStatusQuery(
baseOptions: Apollo.QueryHookOptions<
GetSessionCoachGenerationStatusQuery,
GetSessionCoachGenerationStatusQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<
GetSessionCoachGenerationStatusQuery,
GetSessionCoachGenerationStatusQueryVariables
>(GetSessionCoachGenerationStatusDocument, options);
}
export function useGetSessionCoachGenerationStatusLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetSessionCoachGenerationStatusQuery,
GetSessionCoachGenerationStatusQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<
GetSessionCoachGenerationStatusQuery,
GetSessionCoachGenerationStatusQueryVariables
>(GetSessionCoachGenerationStatusDocument, options);
}
export function useGetSessionCoachGenerationStatusSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetSessionCoachGenerationStatusQuery,
GetSessionCoachGenerationStatusQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
GetSessionCoachGenerationStatusQuery,
GetSessionCoachGenerationStatusQueryVariables
>(GetSessionCoachGenerationStatusDocument, options);
}
export type GetSessionCoachGenerationStatusQueryHookResult = ReturnType<
typeof useGetSessionCoachGenerationStatusQuery
>;
export type GetSessionCoachGenerationStatusLazyQueryHookResult = ReturnType<
typeof useGetSessionCoachGenerationStatusLazyQuery
>;
export type GetSessionCoachGenerationStatusSuspenseQueryHookResult = ReturnType<
typeof useGetSessionCoachGenerationStatusSuspenseQuery
>;
export type GetSessionCoachGenerationStatusQueryResult = Apollo.QueryResult<
GetSessionCoachGenerationStatusQuery,
GetSessionCoachGenerationStatusQueryVariables
>;
export const RequestSessionCoachGenerationDocument = gql` export const RequestSessionCoachGenerationDocument = gql`
mutation RequestSessionCoachGeneration($videoId: Int!) { mutation RequestSessionCoachGeneration($videoId: Int!) {
requestSessionCoachGeneration(videoId: $videoId) { requestSessionCoachGeneration(videoId: $videoId) {
@@ -16100,68 +15719,6 @@ export type RequestSessionCoachGenerationMutationOptions =
RequestSessionCoachGenerationMutation, RequestSessionCoachGenerationMutation,
RequestSessionCoachGenerationMutationVariables RequestSessionCoachGenerationMutationVariables
>; >;
export const SubmitSessionCoachFeedbackDocument = gql`
mutation SubmitSessionCoachFeedback(
$videoId: Int!
$generationId: ID!
$response: SessionCoachFeedbackResponseEnum!
) {
submitSessionCoachFeedback(
videoId: $videoId
generationId: $generationId
response: $response
) {
response
updatedAt
}
}
`;
export type SubmitSessionCoachFeedbackMutationFn = Apollo.MutationFunction<
SubmitSessionCoachFeedbackMutation,
SubmitSessionCoachFeedbackMutationVariables
>;
/**
* __useSubmitSessionCoachFeedbackMutation__
*
* To run a mutation, you first call `useSubmitSessionCoachFeedbackMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useSubmitSessionCoachFeedbackMutation` 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 [submitSessionCoachFeedbackMutation, { data, loading, error }] = useSubmitSessionCoachFeedbackMutation({
* variables: {
* videoId: // value for 'videoId'
* generationId: // value for 'generationId'
* response: // value for 'response'
* },
* });
*/
export function useSubmitSessionCoachFeedbackMutation(
baseOptions?: Apollo.MutationHookOptions<
SubmitSessionCoachFeedbackMutation,
SubmitSessionCoachFeedbackMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<
SubmitSessionCoachFeedbackMutation,
SubmitSessionCoachFeedbackMutationVariables
>(SubmitSessionCoachFeedbackDocument, options);
}
export type SubmitSessionCoachFeedbackMutationHookResult = ReturnType<
typeof useSubmitSessionCoachFeedbackMutation
>;
export type SubmitSessionCoachFeedbackMutationResult =
Apollo.MutationResult<SubmitSessionCoachFeedbackMutation>;
export type SubmitSessionCoachFeedbackMutationOptions =
Apollo.BaseMutationOptions<
SubmitSessionCoachFeedbackMutation,
SubmitSessionCoachFeedbackMutationVariables
>;
export const CreateShotShareLinkDocument = gql` export const CreateShotShareLinkDocument = gql`
mutation CreateShotShareLink( mutation CreateShotShareLink(
$shotIds: [Int!]! $shotIds: [Int!]!
@@ -16356,12 +15913,12 @@ export const GetTableStateDocument = gql`
tableSize: $tableSize tableSize: $tableSize
useHomography: $useHomography useHomography: $useHomography
) { ) {
...TableStateLayoutFields identifierToPosition
...TableStateDetectionFields identifierToColor {
hex
}
} }
} }
${TableStateLayoutFieldsFragmentDoc}
${TableStateDetectionFieldsFragmentDoc}
`; `;
/** /**
@@ -16437,11 +15994,13 @@ export const GetLiveTableStateDocument = gql`
videoId videoId
frameIndex frameIndex
tableState { tableState {
...TableStateLayoutFields identifierToPosition
identifierToColor {
hex
}
} }
} }
} }
${TableStateLayoutFieldsFragmentDoc}
`; `;
/** /**
@@ -16516,11 +16075,13 @@ export const GetShotTableStateDocument = gql`
videoId videoId
frameIndex frameIndex
tableState { tableState {
...TableStateLayoutFields identifierToPosition
identifierToColor {
hex
}
} }
} }
} }
${TableStateLayoutFieldsFragmentDoc}
`; `;
/** /**
@@ -17675,8 +17236,6 @@ export const GetUsageStatsDocument = gql`
activationCohort activationCohort
activationActivated activationActivated
payingUsers payingUsers
pastDueUsers
newPaidToday
newPaid7d newPaid7d
newPaid30d newPaid30d
retentionPrevActive retentionPrevActive
@@ -17688,7 +17247,6 @@ export const GetUsageStatsDocument = gql`
activated7d activated7d
paid7d paid7d
activatedNotPaid7d activatedNotPaid7d
paidTotal
} }
totalUsers totalUsers
totalVideos totalVideos

View File

@@ -1,19 +1,12 @@
# Lightweight two-step picker data for Shot Lab's video-first source: recent # Lightweight two-step picker data for Shot Lab's video-first source: the
# videos from the requested audience (mine, followed users, or public), then # caller's recent videos (completed or still uploading), then that video's
# that video's shots. The stream fields hint at "actively updating" without # shots. The stream fields hint at "actively updating" without gating.
# gating. query GetShotLabVideos($userId: Int!, $limit: Int! = 25) {
query GetShotLabVideos(
$feedInput: VideoFeedInputGQL!
$includePrivate: IncludePrivateEnum!
$limit: Int! = 25
$after: String = null
) {
getFeedVideos( getFeedVideos(
limit: $limit limit: $limit
after: $after
includeCallersVideos: false includeCallersVideos: false
includePrivate: $includePrivate includePrivate: MINE
feedInput: $feedInput feedInput: { userId: $userId }
) { ) {
videos { videos {
id id
@@ -33,10 +26,6 @@ query GetShotLabVideos(
lastSegmentUploadedAt lastSegmentUploadedAt
} }
} }
pageInfo {
hasNextPage
endCursor
}
} }
} }

View File

@@ -36,22 +36,6 @@ query GetSessionCoach($videoId: Int!) {
} }
} }
query GetSessionCoachGenerationStatus($videoId: Int!, $generationId: ID!) {
getSessionCoachGenerationStatus(
videoId: $videoId
generationId: $generationId
) {
id
state
createdAt
updatedAt
startedAt
lastEnqueuedAt
enqueueCount
completedAt
}
}
mutation RequestSessionCoachGeneration($videoId: Int!) { mutation RequestSessionCoachGeneration($videoId: Int!) {
requestSessionCoachGeneration(videoId: $videoId) { requestSessionCoachGeneration(videoId: $videoId) {
state state
@@ -61,21 +45,6 @@ mutation RequestSessionCoachGeneration($videoId: Int!) {
} }
} }
mutation SubmitSessionCoachFeedback(
$videoId: Int!
$generationId: ID!
$response: SessionCoachFeedbackResponseEnum!
) {
submitSessionCoachFeedback(
videoId: $videoId
generationId: $generationId
response: $response
) {
response
updatedAt
}
}
fragment SessionCoachCandidateFields on SessionCoachCandidateGQL { fragment SessionCoachCandidateFields on SessionCoachCandidateGQL {
id id
rank rank
@@ -148,8 +117,4 @@ fragment SessionCoachGenerationFields on SessionCoachGenerationGQL {
abstentionReason abstentionReason
synthesisRationale synthesisRationale
} }
feedback {
response
updatedAt
}
} }

View File

@@ -1,72 +1,3 @@
fragment TableStateLayoutFields on TableStateGQL {
identifierToPosition
identifierToColor {
hex
}
}
fragment DetectionBoxFields on BoundingBoxGQL {
left
top
width
height
}
fragment DetectionPocketPointFields on PocketPointsGQL {
topLeft {
x
y
}
topSide {
x
y
}
topRight {
x
y
}
bottomLeft {
x
y
}
bottomSide {
x
y
}
bottomRight {
x
y
}
}
# Everything needed to redraw a detection over the image it came from:
# the detector's boxes plus the homography that turned them into plane
# positions. Boxes, pocket boxes, and source points share the crop's
# coordinate space; the crop locates that space in the full frame.
#
# Only the photo query selects this. The live and shot queries read a
# frame out of a video the app never holds, so there is no image to
# overlay, and getLiveTableState is polled every five seconds.
fragment TableStateDetectionFields on TableStateGQL {
identifierToBox {
...DetectionBoxFields
}
homography {
crop {
...DetectionBoxFields
}
pockets {
...DetectionBoxFields
}
sourcePoints {
...DetectionPocketPointFields
}
destPoints {
...DetectionPocketPointFields
}
}
}
query GetTableState( query GetTableState(
$b64Image: String! $b64Image: String!
$tableSize: Float $tableSize: Float
@@ -77,8 +8,10 @@ query GetTableState(
tableSize: $tableSize tableSize: $tableSize
useHomography: $useHomography useHomography: $useHomography
) { ) {
...TableStateLayoutFields identifierToPosition
...TableStateDetectionFields identifierToColor {
hex
}
} }
} }
@@ -87,7 +20,10 @@ query GetLiveTableState($videoId: Int!) {
videoId videoId
frameIndex frameIndex
tableState { tableState {
...TableStateLayoutFields identifierToPosition
identifierToColor {
hex
}
} }
} }
} }
@@ -98,7 +34,10 @@ query GetShotTableState($shotId: Int!) {
videoId videoId
frameIndex frameIndex
tableState { tableState {
...TableStateLayoutFields identifierToPosition
identifierToColor {
hex
}
} }
} }
} }

View File

@@ -7,8 +7,6 @@ query getUsageStats($days: Int! = 30) {
activationCohort activationCohort
activationActivated activationActivated
payingUsers payingUsers
pastDueUsers
newPaidToday
newPaid7d newPaid7d
newPaid30d newPaid30d
retentionPrevActive retentionPrevActive
@@ -20,7 +18,6 @@ query getUsageStats($days: Int! = 30) {
activated7d activated7d
paid7d paid7d
activatedNotPaid7d activatedNotPaid7d
paidTotal
} }
totalUsers totalUsers
totalVideos totalVideos

View File

@@ -214,7 +214,6 @@ type CohortStatsGQL {
activated7d: Int! activated7d: Int!
paid7d: Int! paid7d: Int!
activatedNotPaid7d: Int! activatedNotPaid7d: Int!
paidTotal: Int!
} }
type CommentGQL { type CommentGQL {
@@ -250,11 +249,6 @@ input CreatePoolHallCameraInput {
claimTermsText: String = null claimTermsText: String = null
} }
input CreateShotShareLinkInput {
shotIds: [Int!]!
paddingSeconds: Float = null
}
input CreatePoolHallInput { input CreatePoolHallInput {
name: String! name: String!
address: String = null address: String = null
@@ -470,8 +464,6 @@ type FunnelStatsGQL {
activationCohort: Int! activationCohort: Int!
activationActivated: Int! activationActivated: Int!
payingUsers: Int! payingUsers: Int!
pastDueUsers: Int!
newPaidToday: Int!
newPaid7d: Int! newPaid7d: Int!
newPaid30d: Int! newPaid30d: Int!
retentionPrevActive: Int! retentionPrevActive: Int!
@@ -736,11 +728,6 @@ type Mutation {
shotId: Int! shotId: Int!
fieldsToEdit: EditableShotFieldInputGQL! fieldsToEdit: EditableShotFieldInputGQL!
): EditShotReturn! ): EditShotReturn!
submitSessionCoachFeedback(
videoId: Int!
generationId: ID!
response: SessionCoachFeedbackResponseEnum!
): SessionCoachFeedbackGQL!
requestSessionCoachGeneration(videoId: Int!): SessionCoachGQL! requestSessionCoachGeneration(videoId: Int!): SessionCoachGQL!
getProfileImageUploadLink( getProfileImageUploadLink(
fileExt: String = ".png" fileExt: String = ".png"
@@ -1081,10 +1068,6 @@ type Query {
limit: Int! = 500 limit: Int! = 500
countRespectsLimit: Boolean! = false countRespectsLimit: Boolean! = false
): GetRunsResult! ): GetRunsResult!
getSessionCoachGenerationStatus(
videoId: Int!
generationId: ID!
): SessionCoachGenerationStatusGQL
getSessionCoach(videoId: Int!): SessionCoachGQL! getSessionCoach(videoId: Int!): SessionCoachGQL!
videoPlayerClusters(videoId: Int!): [PlayerClusterGQL!]! videoPlayerClusters(videoId: Int!): [PlayerClusterGQL!]!
getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]! getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]!
@@ -1404,18 +1387,6 @@ type SessionCoachEvidenceGQL {
baselineMakePercentage: Float baselineMakePercentage: Float
} }
type SessionCoachFeedbackGQL {
response: SessionCoachFeedbackResponseEnum!
updatedAt: DateTime!
}
enum SessionCoachFeedbackResponseEnum {
HELPFUL
WRONG_FOCUS
ALREADY_WORKING_ON_THIS
NOT_ENOUGH_EVIDENCE
}
type SessionCoachGQL { type SessionCoachGQL {
videoId: Int! videoId: Int!
processingId: Int processingId: Int
@@ -1467,7 +1438,6 @@ type SessionCoachGenerationGQL {
completedAt: DateTime completedAt: DateTime
decision: SessionCoachDecisionGQL decision: SessionCoachDecisionGQL
diagnostics: SessionCoachGenerationDiagnosticsGQL diagnostics: SessionCoachGenerationDiagnosticsGQL
feedback: SessionCoachFeedbackGQL
} }
enum SessionCoachGenerationStateEnum { enum SessionCoachGenerationStateEnum {
@@ -1477,17 +1447,6 @@ enum SessionCoachGenerationStateEnum {
FAILED FAILED
} }
type SessionCoachGenerationStatusGQL {
id: ID!
state: SessionCoachGenerationStateEnum!
createdAt: DateTime!
updatedAt: DateTime!
startedAt: DateTime
lastEnqueuedAt: DateTime
enqueueCount: Int!
completedAt: DateTime
}
enum SessionCoachIneligibilityReasonEnum { enum SessionCoachIneligibilityReasonEnum {
MULTIPLAYER MULTIPLAYER
} }
@@ -1966,11 +1925,6 @@ type UserSubscriptionStatusGQL {
stripeSubscriptionId: String stripeSubscriptionId: String
} }
type ShareLinkGQL {
slug: String!
url: String!
}
type VideoExportJobGQL { type VideoExportJobGQL {
id: Int! id: Int!
videoId: Int! videoId: Int!
@@ -1981,7 +1935,7 @@ type VideoExportJobGQL {
shotIds: [Int!] shotIds: [Int!]
runId: Int runId: Int
downloadUrl: String downloadUrl: String
fileSizeBytes: BigInt fileSizeBytes: Int
expiresAt: DateTime expiresAt: DateTime
createdAt: DateTime createdAt: DateTime
} }