Add createShotShareLink for short share links

Schema and hooks regenerated with the standard pipeline (export ->
graphql-codegen -> prettier) rather than hand-edited, so schema.gql
matches what the exporter emits. That normalises some ordering drift left
by earlier hand-grafted edits, which is why the diff touches a few
unrelated declarations; the schema is semantically identical to the
backend export (verified via lexicographic_sort_schema).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-25 09:56:00 -07:00
parent 9104a312b1
commit 568f7f7889
3 changed files with 123 additions and 17 deletions

View File

@@ -315,6 +315,11 @@ export type CreatePoolHallInput = {
timezone?: InputMaybe<Scalars["String"]["input"]>; timezone?: InputMaybe<Scalars["String"]["input"]>;
}; };
export type CreateShotShareLinkInput = {
paddingSeconds?: InputMaybe<Scalars["Float"]["input"]>;
shotIds: Array<Scalars["Int"]["input"]>;
};
export type CreateSubscriptionResultGql = { export type CreateSubscriptionResultGql = {
__typename?: "CreateSubscriptionResultGQL"; __typename?: "CreateSubscriptionResultGQL";
checkoutUrl: Scalars["String"]["output"]; checkoutUrl: Scalars["String"]["output"];
@@ -2530,6 +2535,7 @@ export type Mutation = {
createPoolHall: PoolHall; createPoolHall: PoolHall;
createPoolHallCamera: PoolHallCameraStreamCredentials; createPoolHallCamera: PoolHallCameraStreamCredentials;
createRuleSet: RuleSet; createRuleSet: RuleSet;
createShotShareLink: ShareLinkGql;
createSubscription: CreateSubscriptionResultGql; createSubscription: CreateSubscriptionResultGql;
createUploadStream: CreateUploadStreamReturn; createUploadStream: CreateUploadStreamReturn;
deleteComment: Scalars["Boolean"]["output"]; deleteComment: Scalars["Boolean"]["output"];
@@ -2644,6 +2650,10 @@ export type MutationCreateRuleSetArgs = {
name: Scalars["String"]["input"]; name: Scalars["String"]["input"];
}; };
export type MutationCreateShotShareLinkArgs = {
input: CreateShotShareLinkInput;
};
export type MutationCreateSubscriptionArgs = { export type MutationCreateSubscriptionArgs = {
priceId: Scalars["String"]["input"]; priceId: Scalars["String"]["input"];
}; };
@@ -3750,6 +3760,12 @@ export enum SessionCoachStateEnum {
Ready = "READY", Ready = "READY",
} }
export type ShareLinkGql = {
__typename?: "ShareLinkGQL";
slug: Scalars["String"]["output"];
url: Scalars["String"]["output"];
};
export type ShotAnnotationGql = { export type ShotAnnotationGql = {
__typename?: "ShotAnnotationGQL"; __typename?: "ShotAnnotationGQL";
createdAt?: Maybe<Scalars["DateTime"]["output"]>; createdAt?: Maybe<Scalars["DateTime"]["output"]>;
@@ -7321,6 +7337,20 @@ export type SessionCoachGenerationFieldsFragment = {
} | null; } | null;
}; };
export type CreateShotShareLinkMutationVariables = Exact<{
shotIds: Array<Scalars["Int"]["input"]> | Scalars["Int"]["input"];
paddingSeconds?: InputMaybe<Scalars["Float"]["input"]>;
}>;
export type CreateShotShareLinkMutation = {
__typename?: "Mutation";
createShotShareLink: {
__typename?: "ShareLinkGQL";
slug: string;
url: string;
};
};
export type PlayerSummaryFieldsFragment = { export type PlayerSummaryFieldsFragment = {
__typename?: "PlayerSummaryGQL"; __typename?: "PlayerSummaryGQL";
clusterId: number; clusterId: number;
@@ -15688,6 +15718,63 @@ export type RequestSessionCoachGenerationMutationOptions =
RequestSessionCoachGenerationMutation, RequestSessionCoachGenerationMutation,
RequestSessionCoachGenerationMutationVariables RequestSessionCoachGenerationMutationVariables
>; >;
export const CreateShotShareLinkDocument = gql`
mutation CreateShotShareLink(
$shotIds: [Int!]!
$paddingSeconds: Float = null
) {
createShotShareLink(
input: { shotIds: $shotIds, paddingSeconds: $paddingSeconds }
) {
slug
url
}
}
`;
export type CreateShotShareLinkMutationFn = Apollo.MutationFunction<
CreateShotShareLinkMutation,
CreateShotShareLinkMutationVariables
>;
/**
* __useCreateShotShareLinkMutation__
*
* To run a mutation, you first call `useCreateShotShareLinkMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useCreateShotShareLinkMutation` 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 [createShotShareLinkMutation, { data, loading, error }] = useCreateShotShareLinkMutation({
* variables: {
* shotIds: // value for 'shotIds'
* paddingSeconds: // value for 'paddingSeconds'
* },
* });
*/
export function useCreateShotShareLinkMutation(
baseOptions?: Apollo.MutationHookOptions<
CreateShotShareLinkMutation,
CreateShotShareLinkMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<
CreateShotShareLinkMutation,
CreateShotShareLinkMutationVariables
>(CreateShotShareLinkDocument, options);
}
export type CreateShotShareLinkMutationHookResult = ReturnType<
typeof useCreateShotShareLinkMutation
>;
export type CreateShotShareLinkMutationResult =
Apollo.MutationResult<CreateShotShareLinkMutation>;
export type CreateShotShareLinkMutationOptions = Apollo.BaseMutationOptions<
CreateShotShareLinkMutation,
CreateShotShareLinkMutationVariables
>;
export const VideoPlayerClustersDocument = gql` export const VideoPlayerClustersDocument = gql`
query VideoPlayerClusters($videoId: Int!) { query VideoPlayerClusters($videoId: Int!) {
videoPlayerClusters(videoId: $videoId) { videoPlayerClusters(videoId: $videoId) {

View File

@@ -0,0 +1,8 @@
mutation CreateShotShareLink($shotIds: [Int!]!, $paddingSeconds: Float = null) {
createShotShareLink(
input: { shotIds: $shotIds, paddingSeconds: $paddingSeconds }
) {
slug
url
}
}

View File

@@ -259,6 +259,11 @@ input CreatePoolHallInput {
timezone: String = null timezone: String = null
} }
input CreateShotShareLinkInput {
shotIds: [Int!]!
paddingSeconds: Float = null
}
type CreateSubscriptionResultGQL { type CreateSubscriptionResultGQL {
checkoutUrl: String! checkoutUrl: String!
sessionId: String! sessionId: String!
@@ -341,7 +346,7 @@ type DoesNotOwnShotErr {
} }
union DoesNotOwnShotErrOtherErrorNeedsNote = union DoesNotOwnShotErrOtherErrorNeedsNote =
DoesNotOwnShotErr | DoesNotOwnShotErr
| OtherErrorNeedsNote | OtherErrorNeedsNote
type DrillRunLeaderboardGQL { type DrillRunLeaderboardGQL {
@@ -531,19 +536,6 @@ type GetUploadLinksReturn {
stream: UploadStreamGQL stream: UploadStreamGQL
} }
type SegmentUploadLink {
segmentIndex: Int!
uploadUrl: String!
headers: [Header]!
}
type UploadLinkBatch {
links: [SegmentUploadLink!]!
alreadyUploaded: [Int!]!
}
union UploadLinkBatchGetUploadLinkErrors = UploadLinkBatch | GetUploadLinkErrors
type HLSPlaylistGQL { type HLSPlaylistGQL {
videoId: Int! videoId: Int!
m3u8Text: String! m3u8Text: String!
@@ -644,7 +636,7 @@ type MustHaveSetForUploadLinkErr {
} }
union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr = union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr =
MustHaveSetForUploadLinkErr | MustHaveSetForUploadLinkErr
| SegmentAlreadyUploadedErr | SegmentAlreadyUploadedErr
| ProcessingFailedErr | ProcessingFailedErr
| NoInitForChunkedUploadErr | NoInitForChunkedUploadErr
@@ -719,6 +711,7 @@ type Mutation {
cancelCameraClaimSession(claimSessionId: ID!): CameraClaimSession! cancelCameraClaimSession(claimSessionId: ID!): CameraClaimSession!
endCameraLease(leaseId: ID!): CameraLease! endCameraLease(leaseId: ID!): CameraLease!
extendCameraLease(leaseId: ID!, additionalMinutes: Int! = 60): CameraLease! extendCameraLease(leaseId: ID!, additionalMinutes: Int! = 60): CameraLease!
createShotShareLink(input: CreateShotShareLinkInput!): ShareLinkGQL!
finalizePlayerAssignments( finalizePlayerAssignments(
input: FinalizePlayerAssignmentsInput! input: FinalizePlayerAssignmentsInput!
): [PlayerClusterGQL!]! ): [PlayerClusterGQL!]!
@@ -1308,6 +1301,12 @@ type SegmentAlreadyUploadedErr {
segmentId: Int! segmentId: Int!
} }
type SegmentUploadLink {
segmentIndex: Int!
uploadUrl: String!
headers: [Header]!
}
type SerializedShotPathsGQL { type SerializedShotPathsGQL {
b64EncodedBuffer: String b64EncodedBuffer: String
} }
@@ -1460,6 +1459,11 @@ enum SessionCoachStateEnum {
FAILED FAILED
} }
type ShareLinkGQL {
slug: String!
url: String!
}
type ShotAnnotationGQL { type ShotAnnotationGQL {
shotId: Int! shotId: Int!
type: ShotAnnotationTypeGQL! type: ShotAnnotationTypeGQL!
@@ -1682,7 +1686,7 @@ type SuccessfulAdd {
} }
union SuccessfulAddAddShotAnnotationErrors = union SuccessfulAddAddShotAnnotationErrors =
SuccessfulAdd | SuccessfulAdd
| AddShotAnnotationErrors | AddShotAnnotationErrors
input SyncAppleSubscriptionInputGQL { input SyncAppleSubscriptionInputGQL {
@@ -1794,8 +1798,15 @@ type UploadLink {
headers: [Header]! headers: [Header]!
} }
type UploadLinkBatch {
links: [SegmentUploadLink!]!
alreadyUploaded: [Int!]!
}
union UploadLinkBatchGetUploadLinkErrors = UploadLinkBatch | GetUploadLinkErrors
union UploadLinkGetProfileUploadLinkErrors = union UploadLinkGetProfileUploadLinkErrors =
UploadLink | UploadLink
| GetProfileUploadLinkErrors | GetProfileUploadLinkErrors
union UploadLinkGetUploadLinkErrors = UploadLink | GetUploadLinkErrors union UploadLinkGetUploadLinkErrors = UploadLink | GetUploadLinkErrors