Video export client operations + myVideoExports list query

RequestVideoExport mutation, VideoExportJob + MyVideoExports queries (with the
VideoExportJobFields fragment) for the mobile fire-and-list flow.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dean Wenstrand
2026-06-30 13:54:29 -07:00
parent 3ec3e3d081
commit f1594b8492
3 changed files with 317 additions and 0 deletions

View File

@@ -2883,6 +2883,7 @@ export type Query = {
myChallengeEntries: Array<ChallengeEntry>; myChallengeEntries: Array<ChallengeEntry>;
myChallengeInvitations: Array<ChallengeInvitation>; myChallengeInvitations: Array<ChallengeInvitation>;
myDismissedChallenges: Array<Challenge>; myDismissedChallenges: Array<Challenge>;
myVideoExports: Array<VideoExportJobGql>;
notifications: NotificationConnection; notifications: NotificationConnection;
ruleSets: Array<RuleSet>; ruleSets: Array<RuleSet>;
unreadNotificationCount: Scalars["Int"]["output"]; unreadNotificationCount: Scalars["Int"]["output"];
@@ -3063,6 +3064,11 @@ export type QueryIsChallengeDismissedArgs = {
challengeId: Scalars["ID"]["input"]; challengeId: Scalars["ID"]["input"];
}; };
export type QueryMyVideoExportsArgs = {
limit?: Scalars["Int"]["input"];
offset?: Scalars["Int"]["input"];
};
export type QueryNotificationsArgs = { export type QueryNotificationsArgs = {
filters?: InputMaybe<NotificationFilters>; filters?: InputMaybe<NotificationFilters>;
limit?: Scalars["Int"]["input"]; limit?: Scalars["Int"]["input"];
@@ -7060,6 +7066,76 @@ export type HomographyInfoFragment = {
}; };
}; };
export type VideoExportJobFieldsFragment = {
__typename?: "VideoExportJobGQL";
id: number;
videoId: number;
mode: VideoExportModeEnum;
status: VideoExportStatusEnum;
downloadUrl?: string | null;
fileSizeBytes?: number | null;
expiresAt?: any | null;
createdAt?: any | null;
};
export type RequestVideoExportMutationVariables = Exact<{
input: RequestVideoExportInput;
}>;
export type RequestVideoExportMutation = {
__typename?: "Mutation";
requestVideoExport: {
__typename?: "VideoExportJobGQL";
id: number;
videoId: number;
mode: VideoExportModeEnum;
status: VideoExportStatusEnum;
downloadUrl?: string | null;
fileSizeBytes?: number | null;
expiresAt?: any | null;
createdAt?: any | null;
};
};
export type VideoExportJobQueryVariables = Exact<{
jobId: Scalars["Int"]["input"];
}>;
export type VideoExportJobQuery = {
__typename?: "Query";
videoExportJob?: {
__typename?: "VideoExportJobGQL";
id: number;
videoId: number;
mode: VideoExportModeEnum;
status: VideoExportStatusEnum;
downloadUrl?: string | null;
fileSizeBytes?: number | null;
expiresAt?: any | null;
createdAt?: any | null;
} | null;
};
export type MyVideoExportsQueryVariables = Exact<{
limit?: InputMaybe<Scalars["Int"]["input"]>;
offset?: InputMaybe<Scalars["Int"]["input"]>;
}>;
export type MyVideoExportsQuery = {
__typename?: "Query";
myVideoExports: Array<{
__typename?: "VideoExportJobGQL";
id: number;
videoId: number;
mode: VideoExportModeEnum;
status: VideoExportStatusEnum;
downloadUrl?: string | null;
fileSizeBytes?: number | null;
expiresAt?: any | null;
createdAt?: any | null;
}>;
};
export type CreateUploadStreamMutationVariables = Exact<{ export type CreateUploadStreamMutationVariables = Exact<{
videoMetadataInput: VideoMetadataInput; videoMetadataInput: VideoMetadataInput;
expectedDurationSeconds?: InputMaybe<Scalars["Float"]["input"]>; expectedDurationSeconds?: InputMaybe<Scalars["Float"]["input"]>;
@@ -7625,6 +7701,18 @@ export const HomographyInfoFragmentDoc = gql`
} }
} }
`; `;
export const VideoExportJobFieldsFragmentDoc = gql`
fragment VideoExportJobFields on VideoExportJobGQL {
id
videoId
mode
status
downloadUrl
fileSizeBytes
expiresAt
createdAt
}
`;
export const UploadStreamWithDetailsFragmentDoc = gql` export const UploadStreamWithDetailsFragmentDoc = gql`
fragment UploadStreamWithDetails on VideoGQL { fragment UploadStreamWithDetails on VideoGQL {
id id
@@ -15036,6 +15124,206 @@ export type FindPrerecordTableLayoutMutationOptions =
FindPrerecordTableLayoutMutation, FindPrerecordTableLayoutMutation,
FindPrerecordTableLayoutMutationVariables FindPrerecordTableLayoutMutationVariables
>; >;
export const RequestVideoExportDocument = gql`
mutation RequestVideoExport($input: RequestVideoExportInput!) {
requestVideoExport(input: $input) {
...VideoExportJobFields
}
}
${VideoExportJobFieldsFragmentDoc}
`;
export type RequestVideoExportMutationFn = Apollo.MutationFunction<
RequestVideoExportMutation,
RequestVideoExportMutationVariables
>;
/**
* __useRequestVideoExportMutation__
*
* To run a mutation, you first call `useRequestVideoExportMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useRequestVideoExportMutation` 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 [requestVideoExportMutation, { data, loading, error }] = useRequestVideoExportMutation({
* variables: {
* input: // value for 'input'
* },
* });
*/
export function useRequestVideoExportMutation(
baseOptions?: Apollo.MutationHookOptions<
RequestVideoExportMutation,
RequestVideoExportMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<
RequestVideoExportMutation,
RequestVideoExportMutationVariables
>(RequestVideoExportDocument, options);
}
export type RequestVideoExportMutationHookResult = ReturnType<
typeof useRequestVideoExportMutation
>;
export type RequestVideoExportMutationResult =
Apollo.MutationResult<RequestVideoExportMutation>;
export type RequestVideoExportMutationOptions = Apollo.BaseMutationOptions<
RequestVideoExportMutation,
RequestVideoExportMutationVariables
>;
export const VideoExportJobDocument = gql`
query VideoExportJob($jobId: Int!) {
videoExportJob(jobId: $jobId) {
...VideoExportJobFields
}
}
${VideoExportJobFieldsFragmentDoc}
`;
/**
* __useVideoExportJobQuery__
*
* To run a query within a React component, call `useVideoExportJobQuery` and pass it any options that fit your needs.
* When your component renders, `useVideoExportJobQuery` 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 } = useVideoExportJobQuery({
* variables: {
* jobId: // value for 'jobId'
* },
* });
*/
export function useVideoExportJobQuery(
baseOptions: Apollo.QueryHookOptions<
VideoExportJobQuery,
VideoExportJobQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<VideoExportJobQuery, VideoExportJobQueryVariables>(
VideoExportJobDocument,
options,
);
}
export function useVideoExportJobLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
VideoExportJobQuery,
VideoExportJobQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<VideoExportJobQuery, VideoExportJobQueryVariables>(
VideoExportJobDocument,
options,
);
}
export function useVideoExportJobSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
VideoExportJobQuery,
VideoExportJobQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
VideoExportJobQuery,
VideoExportJobQueryVariables
>(VideoExportJobDocument, options);
}
export type VideoExportJobQueryHookResult = ReturnType<
typeof useVideoExportJobQuery
>;
export type VideoExportJobLazyQueryHookResult = ReturnType<
typeof useVideoExportJobLazyQuery
>;
export type VideoExportJobSuspenseQueryHookResult = ReturnType<
typeof useVideoExportJobSuspenseQuery
>;
export type VideoExportJobQueryResult = Apollo.QueryResult<
VideoExportJobQuery,
VideoExportJobQueryVariables
>;
export const MyVideoExportsDocument = gql`
query MyVideoExports($limit: Int = 30, $offset: Int = 0) {
myVideoExports(limit: $limit, offset: $offset) {
...VideoExportJobFields
}
}
${VideoExportJobFieldsFragmentDoc}
`;
/**
* __useMyVideoExportsQuery__
*
* To run a query within a React component, call `useMyVideoExportsQuery` and pass it any options that fit your needs.
* When your component renders, `useMyVideoExportsQuery` 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 } = useMyVideoExportsQuery({
* variables: {
* limit: // value for 'limit'
* offset: // value for 'offset'
* },
* });
*/
export function useMyVideoExportsQuery(
baseOptions?: Apollo.QueryHookOptions<
MyVideoExportsQuery,
MyVideoExportsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<MyVideoExportsQuery, MyVideoExportsQueryVariables>(
MyVideoExportsDocument,
options,
);
}
export function useMyVideoExportsLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
MyVideoExportsQuery,
MyVideoExportsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<MyVideoExportsQuery, MyVideoExportsQueryVariables>(
MyVideoExportsDocument,
options,
);
}
export function useMyVideoExportsSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
MyVideoExportsQuery,
MyVideoExportsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
MyVideoExportsQuery,
MyVideoExportsQueryVariables
>(MyVideoExportsDocument, options);
}
export type MyVideoExportsQueryHookResult = ReturnType<
typeof useMyVideoExportsQuery
>;
export type MyVideoExportsLazyQueryHookResult = ReturnType<
typeof useMyVideoExportsLazyQuery
>;
export type MyVideoExportsSuspenseQueryHookResult = ReturnType<
typeof useMyVideoExportsSuspenseQuery
>;
export type MyVideoExportsQueryResult = Apollo.QueryResult<
MyVideoExportsQuery,
MyVideoExportsQueryVariables
>;
export const CreateUploadStreamDocument = gql` export const CreateUploadStreamDocument = gql`
mutation CreateUploadStream( mutation CreateUploadStream(
$videoMetadataInput: VideoMetadataInput! $videoMetadataInput: VideoMetadataInput!

View File

@@ -0,0 +1,28 @@
fragment VideoExportJobFields on VideoExportJobGQL {
id
videoId
mode
status
downloadUrl
fileSizeBytes
expiresAt
createdAt
}
mutation RequestVideoExport($input: RequestVideoExportInput!) {
requestVideoExport(input: $input) {
...VideoExportJobFields
}
}
query VideoExportJob($jobId: Int!) {
videoExportJob(jobId: $jobId) {
...VideoExportJobFields
}
}
query MyVideoExports($limit: Int = 30, $offset: Int = 0) {
myVideoExports(limit: $limit, offset: $offset) {
...VideoExportJobFields
}
}

View File

@@ -122,6 +122,7 @@ type Query {
getUserTags(includeRetiredTags: Boolean = false): [TagGQL!]! getUserTags(includeRetiredTags: Boolean = false): [TagGQL!]!
getGameTypeTagMetrics(input: GameTypeTagMetricsInput!): [GameTypeTagMetric!]! getGameTypeTagMetrics(input: GameTypeTagMetricsInput!): [GameTypeTagMetric!]!
videoExportJob(jobId: Int!): VideoExportJobGQL videoExportJob(jobId: Int!): VideoExportJobGQL
myVideoExports(limit: Int! = 30, offset: Int! = 0): [VideoExportJobGQL!]!
getVideo(videoId: Int!, debuggingJson: JSON = null): VideoGQL! getVideo(videoId: Int!, debuggingJson: JSON = null): VideoGQL!
getVideos(videoIds: [Int!]!): [VideoGQL!]! getVideos(videoIds: [Int!]!): [VideoGQL!]!
} }