Merge pull request 'Speed up Shot Lab video source queries' (#304) from codex/fix-shot-lab-video-picker into master

Reviewed-on: #304
This commit is contained in:
2026-07-22 01:08:33 +00:00
2 changed files with 12 additions and 55 deletions

View File

@@ -6696,6 +6696,7 @@ export type ReactToVideoMutation = {
}; };
export type GetShotLabVideosQueryVariables = Exact<{ export type GetShotLabVideosQueryVariables = Exact<{
userId: Scalars["Int"]["input"];
limit?: Scalars["Int"]["input"]; limit?: Scalars["Int"]["input"];
}>; }>;
@@ -6746,29 +6747,13 @@ export type GetRecordedStreamShotsQuery = {
__typename?: "SerializedShotPathsGQL"; __typename?: "SerializedShotPathsGQL";
b64EncodedBuffer?: string | null; b64EncodedBuffer?: string | null;
} | null; } | null;
cueObjectFeatures?: {
__typename?: "CueObjectFeaturesGQL";
cueObjectDistance?: number | null;
cueObjectAngle?: number | null;
cueBallSpeed?: number | null;
shotDirection?: ShotDirectionEnum | null;
spinType?: SpinTypeEnum | null;
} | null;
pocketingIntentionFeatures?: { pocketingIntentionFeatures?: {
__typename?: "PocketingIntentionFeaturesGQL"; __typename?: "PocketingIntentionFeaturesGQL";
make?: boolean | null; make?: boolean | null;
targetPocketDistance?: number | null;
targetPocketAngle?: number | null;
targetPocketAngleDirection?: ShotDirectionEnum | null;
marginOfErrorInDegrees?: number | null;
intendedPocketType?: PocketEnum | null;
difficulty?: number | null;
} | null; } | null;
pocketingIntentionInfo?: { pocketingIntentionInfo?: {
__typename?: "PocketingIntentionInfoGQL"; __typename?: "PocketingIntentionInfoGQL";
ballId: number;
pocketId: PocketIdentifier; pocketId: PocketIdentifier;
pathMetadataIndex: number;
} | null; } | null;
}>; }>;
}; };
@@ -14468,11 +14453,12 @@ export type ReactToVideoMutationOptions = Apollo.BaseMutationOptions<
ReactToVideoMutationVariables ReactToVideoMutationVariables
>; >;
export const GetShotLabVideosDocument = gql` export const GetShotLabVideosDocument = gql`
query GetShotLabVideos($limit: Int! = 25) { query GetShotLabVideos($userId: Int!, $limit: Int! = 25) {
getFeedVideos( getFeedVideos(
limit: $limit limit: $limit
includeCallersVideos: false
includePrivate: MINE includePrivate: MINE
feedInput: { allUsers: true } feedInput: { userId: $userId }
) { ) {
videos { videos {
id id
@@ -14508,12 +14494,13 @@ export const GetShotLabVideosDocument = gql`
* @example * @example
* const { data, loading, error } = useGetShotLabVideosQuery({ * const { data, loading, error } = useGetShotLabVideosQuery({
* variables: { * variables: {
* userId: // value for 'userId'
* limit: // value for 'limit' * limit: // value for 'limit'
* }, * },
* }); * });
*/ */
export function useGetShotLabVideosQuery( export function useGetShotLabVideosQuery(
baseOptions?: Apollo.QueryHookOptions< baseOptions: Apollo.QueryHookOptions<
GetShotLabVideosQuery, GetShotLabVideosQuery,
GetShotLabVideosQueryVariables GetShotLabVideosQueryVariables
>, >,
@@ -14576,26 +14563,11 @@ export const GetRecordedStreamShotsDocument = gql`
serializedShotPaths { serializedShotPaths {
b64EncodedBuffer b64EncodedBuffer
} }
cueObjectFeatures {
cueObjectDistance
cueObjectAngle
cueBallSpeed
shotDirection
spinType
}
pocketingIntentionFeatures { pocketingIntentionFeatures {
make make
targetPocketDistance
targetPocketAngle
targetPocketAngleDirection
marginOfErrorInDegrees
intendedPocketType
difficulty
} }
pocketingIntentionInfo { pocketingIntentionInfo {
ballId
pocketId pocketId
pathMetadataIndex
} }
} }
} }

View File

@@ -1,12 +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 (completed or still uploading — no completion gate, so an in-progress # caller's recent videos (completed or still uploading), then that video's
# recording with no shots yet still appears), then that video's shots. The # shots. The stream fields hint at "actively updating" without gating.
# stream fields let the client hint at "actively updating" without gating. query GetShotLabVideos($userId: Int!, $limit: Int! = 25) {
query GetShotLabVideos($limit: Int! = 25) {
getFeedVideos( getFeedVideos(
limit: $limit limit: $limit
includeCallersVideos: false
includePrivate: MINE includePrivate: MINE
feedInput: { allUsers: true } feedInput: { userId: $userId }
) { ) {
videos { videos {
id id
@@ -43,26 +43,11 @@ query GetRecordedStreamShots($videoId: Int!, $limit: Int! = 200) {
serializedShotPaths { serializedShotPaths {
b64EncodedBuffer b64EncodedBuffer
} }
cueObjectFeatures {
cueObjectDistance
cueObjectAngle
cueBallSpeed
shotDirection
spinType
}
pocketingIntentionFeatures { pocketingIntentionFeatures {
make make
targetPocketDistance
targetPocketAngle
targetPocketAngleDirection
marginOfErrorInDegrees
intendedPocketType
difficulty
} }
pocketingIntentionInfo { pocketingIntentionInfo {
ballId
pocketId pocketId
pathMetadataIndex
} }
} }
} }