Compare commits

..

1 Commits

Author SHA1 Message Date
Dean Wenstrand
8207b47fcc Add DismissVideoExport mutation (soft-hide exports)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 14:15:31 -07:00
4 changed files with 71 additions and 48 deletions

View File

@@ -300,7 +300,6 @@ export type DeployedConfigGql = {
firebase: Scalars["Boolean"]["output"]; firebase: Scalars["Boolean"]["output"];
minimumAllowedAppVersion: Scalars["String"]["output"]; minimumAllowedAppVersion: Scalars["String"]["output"];
quotaEnforcementEnabled: Scalars["Boolean"]["output"]; quotaEnforcementEnabled: Scalars["Boolean"]["output"];
storageLimitEnforcementEnabled: Scalars["Boolean"]["output"];
subscriptionGatingEnabled: Scalars["Boolean"]["output"]; subscriptionGatingEnabled: Scalars["Boolean"]["output"];
}; };
@@ -2288,7 +2287,7 @@ export type GetShotsResult = {
export type GetUploadLinkErrors = { export type GetUploadLinkErrors = {
__typename?: "GetUploadLinkErrors"; __typename?: "GetUploadLinkErrors";
error: MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr; error: MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErr;
}; };
export type GetUploadLinkReturn = { export type GetUploadLinkReturn = {
@@ -2392,14 +2391,13 @@ export type MustHaveSetForUploadLinkErr = {
resolution?: Maybe<Scalars["Boolean"]["output"]>; resolution?: Maybe<Scalars["Boolean"]["output"]>;
}; };
export type MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr = export type MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErr =
| InitUploadAlreadyCompletedErr | InitUploadAlreadyCompletedErr
| MustHaveSetForUploadLinkErr | MustHaveSetForUploadLinkErr
| NoInitForChunkedUploadErr | NoInitForChunkedUploadErr
| ProcessingFailedErr | ProcessingFailedErr
| SegmentAlreadyUploadedErr | SegmentAlreadyUploadedErr
| StorageLimitExceededErr
| TooManyInitUploadsErr | TooManyInitUploadsErr
| TooManyProfileImageUploadsErr; | TooManyProfileImageUploadsErr;
@@ -2422,6 +2420,7 @@ export type Mutation = {
deleteUser: Scalars["Boolean"]["output"]; deleteUser: Scalars["Boolean"]["output"];
deleteVideo: Scalars["Boolean"]["output"]; deleteVideo: Scalars["Boolean"]["output"];
dismissChallenge: Scalars["Boolean"]["output"]; dismissChallenge: Scalars["Boolean"]["output"];
dismissVideoExport: Scalars["Boolean"]["output"];
editComment: Scalars["Boolean"]["output"]; editComment: Scalars["Boolean"]["output"];
editProfileImageUri: UserGql; editProfileImageUri: UserGql;
editShot: EditShotReturn; editShot: EditShotReturn;
@@ -2530,6 +2529,10 @@ export type MutationDismissChallengeArgs = {
challengeId: Scalars["ID"]["input"]; challengeId: Scalars["ID"]["input"];
}; };
export type MutationDismissVideoExportArgs = {
jobId: Scalars["Int"]["input"];
};
export type MutationEditCommentArgs = { export type MutationEditCommentArgs = {
commentId: Scalars["Int"]["input"]; commentId: Scalars["Int"]["input"];
newMessage: Scalars["String"]["input"]; newMessage: Scalars["String"]["input"];
@@ -3412,15 +3415,6 @@ export enum SpinTypeEnum {
Unknown = "UNKNOWN", Unknown = "UNKNOWN",
} }
export type StorageLimitExceededErr = {
__typename?: "StorageLimitExceededErr";
reason: Scalars["String"]["output"];
remainingStorageBytes?: Maybe<Scalars["BigInt"]["output"]>;
retainedStorageLimitBytes?: Maybe<Scalars["BigInt"]["output"]>;
retainedStorageUsedBytes: Scalars["BigInt"]["output"];
tierName: Scalars["String"]["output"];
};
export type StorageStatusGql = { export type StorageStatusGql = {
__typename?: "StorageStatusGQL"; __typename?: "StorageStatusGQL";
isNearLimit: Scalars["Boolean"]["output"]; isNearLimit: Scalars["Boolean"]["output"];
@@ -7114,6 +7108,15 @@ export type RequestVideoExportMutation = {
}; };
}; };
export type DismissVideoExportMutationVariables = Exact<{
jobId: Scalars["Int"]["input"];
}>;
export type DismissVideoExportMutation = {
__typename?: "Mutation";
dismissVideoExport: boolean;
};
export type VideoExportJobQueryVariables = Exact<{ export type VideoExportJobQueryVariables = Exact<{
jobId: Scalars["Int"]["input"]; jobId: Scalars["Int"]["input"];
}>; }>;
@@ -7202,7 +7205,6 @@ export type GetUploadLinkMutation = {
}; };
} }
| { __typename?: "SegmentAlreadyUploadedErr"; segmentId: number } | { __typename?: "SegmentAlreadyUploadedErr"; segmentId: number }
| { __typename?: "StorageLimitExceededErr" }
| { __typename?: "TooManyInitUploadsErr" } | { __typename?: "TooManyInitUploadsErr" }
| { __typename?: "TooManyProfileImageUploadsErr" }; | { __typename?: "TooManyProfileImageUploadsErr" };
} }
@@ -7245,14 +7247,6 @@ export type GetHlsInitUploadLinkMutation = {
} }
| { __typename?: "ProcessingFailedErr" } | { __typename?: "ProcessingFailedErr" }
| { __typename?: "SegmentAlreadyUploadedErr" } | { __typename?: "SegmentAlreadyUploadedErr" }
| {
__typename?: "StorageLimitExceededErr";
reason: string;
tierName: string;
retainedStorageUsedBytes: any;
retainedStorageLimitBytes?: any | null;
remainingStorageBytes?: any | null;
}
| { __typename?: "TooManyInitUploadsErr"; linksRequested: number } | { __typename?: "TooManyInitUploadsErr"; linksRequested: number }
| { __typename?: "TooManyProfileImageUploadsErr" }; | { __typename?: "TooManyProfileImageUploadsErr" };
} }
@@ -15207,6 +15201,54 @@ export type RequestVideoExportMutationOptions = Apollo.BaseMutationOptions<
RequestVideoExportMutation, RequestVideoExportMutation,
RequestVideoExportMutationVariables RequestVideoExportMutationVariables
>; >;
export const DismissVideoExportDocument = gql`
mutation DismissVideoExport($jobId: Int!) {
dismissVideoExport(jobId: $jobId)
}
`;
export type DismissVideoExportMutationFn = Apollo.MutationFunction<
DismissVideoExportMutation,
DismissVideoExportMutationVariables
>;
/**
* __useDismissVideoExportMutation__
*
* To run a mutation, you first call `useDismissVideoExportMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useDismissVideoExportMutation` 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 [dismissVideoExportMutation, { data, loading, error }] = useDismissVideoExportMutation({
* variables: {
* jobId: // value for 'jobId'
* },
* });
*/
export function useDismissVideoExportMutation(
baseOptions?: Apollo.MutationHookOptions<
DismissVideoExportMutation,
DismissVideoExportMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<
DismissVideoExportMutation,
DismissVideoExportMutationVariables
>(DismissVideoExportDocument, options);
}
export type DismissVideoExportMutationHookResult = ReturnType<
typeof useDismissVideoExportMutation
>;
export type DismissVideoExportMutationResult =
Apollo.MutationResult<DismissVideoExportMutation>;
export type DismissVideoExportMutationOptions = Apollo.BaseMutationOptions<
DismissVideoExportMutation,
DismissVideoExportMutationVariables
>;
export const VideoExportJobDocument = gql` export const VideoExportJobDocument = gql`
query VideoExportJob($jobId: Int!) { query VideoExportJob($jobId: Int!) {
videoExportJob(jobId: $jobId) { videoExportJob(jobId: $jobId) {
@@ -15516,13 +15558,6 @@ export const GetHlsInitUploadLinkDocument = gql`
... on TooManyInitUploadsErr { ... on TooManyInitUploadsErr {
linksRequested linksRequested
} }
... on StorageLimitExceededErr {
reason
tierName
retainedStorageUsedBytes
retainedStorageLimitBytes
remainingStorageBytes
}
} }
} }
} }

View File

@@ -17,6 +17,10 @@ mutation RequestVideoExport($input: RequestVideoExportInput!) {
} }
} }
mutation DismissVideoExport($jobId: Int!) {
dismissVideoExport(jobId: $jobId)
}
query VideoExportJob($jobId: Int!) { query VideoExportJob($jobId: Int!) {
videoExportJob(jobId: $jobId) { videoExportJob(jobId: $jobId) {
...VideoExportJobFields ...VideoExportJobFields

View File

@@ -67,13 +67,6 @@ mutation GetHlsInitUploadLink($videoId: Int!) {
... on TooManyInitUploadsErr { ... on TooManyInitUploadsErr {
linksRequested linksRequested
} }
... on StorageLimitExceededErr {
reason
tierName
retainedStorageUsedBytes
retainedStorageLimitBytes
remainingStorageBytes
}
} }
} }
} }

View File

@@ -714,7 +714,6 @@ type DeployedConfigGQL {
minimumAllowedAppVersion: String! minimumAllowedAppVersion: String!
subscriptionGatingEnabled: Boolean! subscriptionGatingEnabled: Boolean!
quotaEnforcementEnabled: Boolean! quotaEnforcementEnabled: Boolean!
storageLimitEnforcementEnabled: Boolean!
bannerMessages: [BannerGQL!]! bannerMessages: [BannerGQL!]!
defaultAndroidRecordingFormat: StreamSegmentTypeEnum! defaultAndroidRecordingFormat: StreamSegmentTypeEnum!
bucketUrl: String! bucketUrl: String!
@@ -1298,6 +1297,7 @@ type Mutation {
metadata: CancellationFeedbackMetadataInput = null metadata: CancellationFeedbackMetadataInput = null
): Boolean! ): Boolean!
requestVideoExport(input: RequestVideoExportInput!): VideoExportJobGQL! requestVideoExport(input: RequestVideoExportInput!): VideoExportJobGQL!
dismissVideoExport(jobId: Int!): Boolean!
findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL
createUploadStream( createUploadStream(
videoMetadata: VideoMetadataInput! videoMetadata: VideoMetadataInput!
@@ -1526,10 +1526,10 @@ type GetUploadLinkReturn {
union UploadLinkGetUploadLinkErrors = UploadLink | GetUploadLinkErrors union UploadLinkGetUploadLinkErrors = UploadLink | GetUploadLinkErrors
type GetUploadLinkErrors { type GetUploadLinkErrors {
error: MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr! error: MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErr!
} }
union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr = union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErr =
MustHaveSetForUploadLinkErr MustHaveSetForUploadLinkErr
| SegmentAlreadyUploadedErr | SegmentAlreadyUploadedErr
| ProcessingFailedErr | ProcessingFailedErr
@@ -1537,7 +1537,6 @@ union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoI
| TooManyProfileImageUploadsErr | TooManyProfileImageUploadsErr
| InitUploadAlreadyCompletedErr | InitUploadAlreadyCompletedErr
| TooManyInitUploadsErr | TooManyInitUploadsErr
| StorageLimitExceededErr
type MustHaveSetForUploadLinkErr { type MustHaveSetForUploadLinkErr {
resolution: Boolean resolution: Boolean
@@ -1563,11 +1562,3 @@ type InitUploadAlreadyCompletedErr {
type TooManyInitUploadsErr { type TooManyInitUploadsErr {
linksRequested: Int! linksRequested: Int!
} }
type StorageLimitExceededErr {
reason: String!
tierName: String!
retainedStorageUsedBytes: BigInt!
retainedStorageLimitBytes: BigInt
remainingStorageBytes: BigInt
}