Compare commits
5 Commits
dean/video
...
shot-simul
| Author | SHA1 | Date | |
|---|---|---|---|
| 4ff2db1ef4 | |||
| b6adae4949 | |||
| 459e89d8b8 | |||
| fa2ff19572 | |||
| 428286fa5a |
162
src/index.tsx
162
src/index.tsx
@@ -88,6 +88,12 @@ export type AppleIapSubscriptionOptionsGql = {
|
||||
productIds: Array<Scalars["String"]["output"]>;
|
||||
};
|
||||
|
||||
export type BallTrajectoryGql = {
|
||||
__typename?: "BallTrajectoryGQL";
|
||||
ballId: Scalars["Int"]["output"];
|
||||
points: Array<TrajectoryPointGql>;
|
||||
};
|
||||
|
||||
export type BankFeaturesGql = {
|
||||
__typename?: "BankFeaturesGQL";
|
||||
bankAngle: Scalars["Float"]["output"];
|
||||
@@ -268,6 +274,14 @@ export type CueObjectFeaturesGql = {
|
||||
spinType?: Maybe<SpinTypeEnum>;
|
||||
};
|
||||
|
||||
export type CueStrikeInputGql = {
|
||||
a?: Scalars["Float"]["input"];
|
||||
b?: Scalars["Float"]["input"];
|
||||
phi: Scalars["Float"]["input"];
|
||||
theta?: Scalars["Float"]["input"];
|
||||
v0: Scalars["Float"]["input"];
|
||||
};
|
||||
|
||||
export type DateRangeFilter = {
|
||||
greaterThan?: InputMaybe<Scalars["Date"]["input"]>;
|
||||
greaterThanEqualTo?: InputMaybe<Scalars["Date"]["input"]>;
|
||||
@@ -300,6 +314,7 @@ export type DeployedConfigGql = {
|
||||
firebase: Scalars["Boolean"]["output"];
|
||||
minimumAllowedAppVersion: Scalars["String"]["output"];
|
||||
quotaEnforcementEnabled: Scalars["Boolean"]["output"];
|
||||
storageLimitEnforcementEnabled: Scalars["Boolean"]["output"];
|
||||
subscriptionGatingEnabled: Scalars["Boolean"]["output"];
|
||||
};
|
||||
|
||||
@@ -2287,7 +2302,7 @@ export type GetShotsResult = {
|
||||
|
||||
export type GetUploadLinkErrors = {
|
||||
__typename?: "GetUploadLinkErrors";
|
||||
error: MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErr;
|
||||
error: MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr;
|
||||
};
|
||||
|
||||
export type GetUploadLinkReturn = {
|
||||
@@ -2391,13 +2406,14 @@ export type MustHaveSetForUploadLinkErr = {
|
||||
resolution?: Maybe<Scalars["Boolean"]["output"]>;
|
||||
};
|
||||
|
||||
export type MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErr =
|
||||
export type MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr =
|
||||
|
||||
| InitUploadAlreadyCompletedErr
|
||||
| MustHaveSetForUploadLinkErr
|
||||
| NoInitForChunkedUploadErr
|
||||
| ProcessingFailedErr
|
||||
| SegmentAlreadyUploadedErr
|
||||
| StorageLimitExceededErr
|
||||
| TooManyInitUploadsErr
|
||||
| TooManyProfileImageUploadsErr;
|
||||
|
||||
@@ -2420,7 +2436,6 @@ export type Mutation = {
|
||||
deleteUser: Scalars["Boolean"]["output"];
|
||||
deleteVideo: Scalars["Boolean"]["output"];
|
||||
dismissChallenge: Scalars["Boolean"]["output"];
|
||||
dismissVideoExport: Scalars["Boolean"]["output"];
|
||||
editComment: Scalars["Boolean"]["output"];
|
||||
editProfileImageUri: UserGql;
|
||||
editShot: EditShotReturn;
|
||||
@@ -2529,10 +2544,6 @@ export type MutationDismissChallengeArgs = {
|
||||
challengeId: Scalars["ID"]["input"];
|
||||
};
|
||||
|
||||
export type MutationDismissVideoExportArgs = {
|
||||
jobId: Scalars["Int"]["input"];
|
||||
};
|
||||
|
||||
export type MutationEditCommentArgs = {
|
||||
commentId: Scalars["Int"]["input"];
|
||||
newMessage: Scalars["String"]["input"];
|
||||
@@ -2891,6 +2902,7 @@ export type Query = {
|
||||
myVideoExports: Array<VideoExportJobGql>;
|
||||
notifications: NotificationConnection;
|
||||
ruleSets: Array<RuleSet>;
|
||||
simulateShot: ShotProjectionGql;
|
||||
unreadNotificationCount: Scalars["Int"]["output"];
|
||||
videoExportJob?: Maybe<VideoExportJobGql>;
|
||||
videoPlayerClusters: Array<PlayerClusterGql>;
|
||||
@@ -3080,6 +3092,10 @@ export type QueryNotificationsArgs = {
|
||||
offset?: Scalars["Int"]["input"];
|
||||
};
|
||||
|
||||
export type QuerySimulateShotArgs = {
|
||||
simulationInput: SimulateShotInputGql;
|
||||
};
|
||||
|
||||
export type QueryVideoExportJobArgs = {
|
||||
jobId: Scalars["Int"]["input"];
|
||||
};
|
||||
@@ -3343,6 +3359,14 @@ export type ShotMoveInput = {
|
||||
shotId: Scalars["Int"]["input"];
|
||||
};
|
||||
|
||||
export type ShotProjectionGql = {
|
||||
__typename?: "ShotProjectionGQL";
|
||||
events: Array<SimulationEventGql>;
|
||||
finalState: Array<SimulationBallStateGql>;
|
||||
pottedBallIds: Array<Scalars["Int"]["output"]>;
|
||||
trajectories: Array<BallTrajectoryGql>;
|
||||
};
|
||||
|
||||
export type ShotsOrderingComponent =
|
||||
| {
|
||||
difficulty: FloatOrdering;
|
||||
@@ -3393,6 +3417,42 @@ export type ShotsOrderingComponent =
|
||||
videoId: IntOrdering;
|
||||
};
|
||||
|
||||
export type SimulateShotInputGql = {
|
||||
b64Image?: InputMaybe<Scalars["String"]["input"]>;
|
||||
balls?: InputMaybe<Array<SimulationBallStateInputGql>>;
|
||||
cueBallId: Scalars["Int"]["input"];
|
||||
strike: CueStrikeInputGql;
|
||||
tableSize?: InputMaybe<Scalars["Float"]["input"]>;
|
||||
useHomography?: InputMaybe<HomographyInputGql>;
|
||||
};
|
||||
|
||||
export type SimulationBallStateGql = {
|
||||
__typename?: "SimulationBallStateGQL";
|
||||
ballId: Scalars["Int"]["output"];
|
||||
position: Array<Scalars["Float"]["output"]>;
|
||||
};
|
||||
|
||||
export type SimulationBallStateInputGql = {
|
||||
ballId: Scalars["Int"]["input"];
|
||||
position: Array<Scalars["Float"]["input"]>;
|
||||
};
|
||||
|
||||
export type SimulationEventGql = {
|
||||
__typename?: "SimulationEventGQL";
|
||||
ballIds: Array<Scalars["Int"]["output"]>;
|
||||
eventType: SimulationEventType;
|
||||
position?: Maybe<Array<Scalars["Float"]["output"]>>;
|
||||
time: Scalars["Float"]["output"];
|
||||
};
|
||||
|
||||
export enum SimulationEventType {
|
||||
BallBall = "BALL_BALL",
|
||||
BallCushion = "BALL_CUSHION",
|
||||
BallPocket = "BALL_POCKET",
|
||||
BallStop = "BALL_STOP",
|
||||
StickBall = "STICK_BALL",
|
||||
}
|
||||
|
||||
export type SpinTypeBreakdownGql = {
|
||||
__typename?: "SpinTypeBreakdownGQL";
|
||||
center: Scalars["Int"]["output"];
|
||||
@@ -3415,6 +3475,15 @@ export enum SpinTypeEnum {
|
||||
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 = {
|
||||
__typename?: "StorageStatusGQL";
|
||||
isNearLimit: Scalars["Boolean"]["output"];
|
||||
@@ -3560,6 +3629,12 @@ export type TooManyProfileImageUploadsErr = {
|
||||
linksRequested: Scalars["Int"]["output"];
|
||||
};
|
||||
|
||||
export type TrajectoryPointGql = {
|
||||
__typename?: "TrajectoryPointGQL";
|
||||
position: Array<Scalars["Float"]["output"]>;
|
||||
time: Scalars["Float"]["output"];
|
||||
};
|
||||
|
||||
export type UpdateAnnotationInputGql = {
|
||||
name: Scalars["String"]["input"];
|
||||
notes?: InputMaybe<Scalars["String"]["input"]>;
|
||||
@@ -7108,15 +7183,6 @@ export type RequestVideoExportMutation = {
|
||||
};
|
||||
};
|
||||
|
||||
export type DismissVideoExportMutationVariables = Exact<{
|
||||
jobId: Scalars["Int"]["input"];
|
||||
}>;
|
||||
|
||||
export type DismissVideoExportMutation = {
|
||||
__typename?: "Mutation";
|
||||
dismissVideoExport: boolean;
|
||||
};
|
||||
|
||||
export type VideoExportJobQueryVariables = Exact<{
|
||||
jobId: Scalars["Int"]["input"];
|
||||
}>;
|
||||
@@ -7205,6 +7271,7 @@ export type GetUploadLinkMutation = {
|
||||
};
|
||||
}
|
||||
| { __typename?: "SegmentAlreadyUploadedErr"; segmentId: number }
|
||||
| { __typename?: "StorageLimitExceededErr" }
|
||||
| { __typename?: "TooManyInitUploadsErr" }
|
||||
| { __typename?: "TooManyProfileImageUploadsErr" };
|
||||
}
|
||||
@@ -7247,6 +7314,14 @@ export type GetHlsInitUploadLinkMutation = {
|
||||
}
|
||||
| { __typename?: "ProcessingFailedErr" }
|
||||
| { __typename?: "SegmentAlreadyUploadedErr" }
|
||||
| {
|
||||
__typename?: "StorageLimitExceededErr";
|
||||
reason: string;
|
||||
tierName: string;
|
||||
retainedStorageUsedBytes: any;
|
||||
retainedStorageLimitBytes?: any | null;
|
||||
remainingStorageBytes?: any | null;
|
||||
}
|
||||
| { __typename?: "TooManyInitUploadsErr"; linksRequested: number }
|
||||
| { __typename?: "TooManyProfileImageUploadsErr" };
|
||||
}
|
||||
@@ -15201,54 +15276,6 @@ export type RequestVideoExportMutationOptions = Apollo.BaseMutationOptions<
|
||||
RequestVideoExportMutation,
|
||||
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`
|
||||
query VideoExportJob($jobId: Int!) {
|
||||
videoExportJob(jobId: $jobId) {
|
||||
@@ -15558,6 +15585,13 @@ export const GetHlsInitUploadLinkDocument = gql`
|
||||
... on TooManyInitUploadsErr {
|
||||
linksRequested
|
||||
}
|
||||
... on StorageLimitExceededErr {
|
||||
reason
|
||||
tierName
|
||||
retainedStorageUsedBytes
|
||||
retainedStorageLimitBytes
|
||||
remainingStorageBytes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,10 +17,6 @@ mutation RequestVideoExport($input: RequestVideoExportInput!) {
|
||||
}
|
||||
}
|
||||
|
||||
mutation DismissVideoExport($jobId: Int!) {
|
||||
dismissVideoExport(jobId: $jobId)
|
||||
}
|
||||
|
||||
query VideoExportJob($jobId: Int!) {
|
||||
videoExportJob(jobId: $jobId) {
|
||||
...VideoExportJobFields
|
||||
|
||||
@@ -67,6 +67,13 @@ mutation GetHlsInitUploadLink($videoId: Int!) {
|
||||
... on TooManyInitUploadsErr {
|
||||
linksRequested
|
||||
}
|
||||
... on StorageLimitExceededErr {
|
||||
reason
|
||||
tierName
|
||||
retainedStorageUsedBytes
|
||||
retainedStorageLimitBytes
|
||||
remainingStorageBytes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,6 +66,7 @@ type Query {
|
||||
tableSize: Float = 100
|
||||
useHomography: HomographyInputGQL = null
|
||||
): TableStateGQL!
|
||||
simulateShot(simulationInput: SimulateShotInputGQL!): ShotProjectionGQL!
|
||||
getOrderedShots(
|
||||
filterInput: FilterInput!
|
||||
ids: [Int!] = null
|
||||
@@ -714,6 +715,7 @@ type DeployedConfigGQL {
|
||||
minimumAllowedAppVersion: String!
|
||||
subscriptionGatingEnabled: Boolean!
|
||||
quotaEnforcementEnabled: Boolean!
|
||||
storageLimitEnforcementEnabled: Boolean!
|
||||
bannerMessages: [BannerGQL!]!
|
||||
defaultAndroidRecordingFormat: StreamSegmentTypeEnum!
|
||||
bucketUrl: String!
|
||||
@@ -969,6 +971,65 @@ input IntPoint2DInput {
|
||||
y: Int!
|
||||
}
|
||||
|
||||
type ShotProjectionGQL {
|
||||
trajectories: [BallTrajectoryGQL!]!
|
||||
events: [SimulationEventGQL!]!
|
||||
finalState: [SimulationBallStateGQL!]!
|
||||
pottedBallIds: [Int!]!
|
||||
}
|
||||
|
||||
type BallTrajectoryGQL {
|
||||
ballId: Int!
|
||||
points: [TrajectoryPointGQL!]!
|
||||
}
|
||||
|
||||
type TrajectoryPointGQL {
|
||||
time: Float!
|
||||
position: [Float!]!
|
||||
}
|
||||
|
||||
type SimulationEventGQL {
|
||||
eventType: SimulationEventType!
|
||||
time: Float!
|
||||
ballIds: [Int!]!
|
||||
position: [Float!]
|
||||
}
|
||||
|
||||
enum SimulationEventType {
|
||||
STICK_BALL
|
||||
BALL_BALL
|
||||
BALL_CUSHION
|
||||
BALL_POCKET
|
||||
BALL_STOP
|
||||
}
|
||||
|
||||
type SimulationBallStateGQL {
|
||||
ballId: Int!
|
||||
position: [Float!]!
|
||||
}
|
||||
|
||||
input SimulateShotInputGQL {
|
||||
cueBallId: Int!
|
||||
strike: CueStrikeInputGQL!
|
||||
balls: [SimulationBallStateInputGQL!] = null
|
||||
b64Image: String = null
|
||||
useHomography: HomographyInputGQL = null
|
||||
tableSize: Float = null
|
||||
}
|
||||
|
||||
input CueStrikeInputGQL {
|
||||
v0: Float!
|
||||
phi: Float!
|
||||
theta: Float! = 0
|
||||
a: Float! = 0
|
||||
b: Float! = 0
|
||||
}
|
||||
|
||||
input SimulationBallStateInputGQL {
|
||||
ballId: Int!
|
||||
position: [Float!]!
|
||||
}
|
||||
|
||||
type GetShotsResult {
|
||||
shots: [ShotGQL!]!
|
||||
count: Int
|
||||
@@ -1297,7 +1358,6 @@ type Mutation {
|
||||
metadata: CancellationFeedbackMetadataInput = null
|
||||
): Boolean!
|
||||
requestVideoExport(input: RequestVideoExportInput!): VideoExportJobGQL!
|
||||
dismissVideoExport(jobId: Int!): Boolean!
|
||||
findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL
|
||||
createUploadStream(
|
||||
videoMetadata: VideoMetadataInput!
|
||||
@@ -1526,10 +1586,10 @@ type GetUploadLinkReturn {
|
||||
union UploadLinkGetUploadLinkErrors = UploadLink | GetUploadLinkErrors
|
||||
|
||||
type GetUploadLinkErrors {
|
||||
error: MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErr!
|
||||
error: MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr!
|
||||
}
|
||||
|
||||
union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErr =
|
||||
union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr =
|
||||
MustHaveSetForUploadLinkErr
|
||||
| SegmentAlreadyUploadedErr
|
||||
| ProcessingFailedErr
|
||||
@@ -1537,6 +1597,7 @@ union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoI
|
||||
| TooManyProfileImageUploadsErr
|
||||
| InitUploadAlreadyCompletedErr
|
||||
| TooManyInitUploadsErr
|
||||
| StorageLimitExceededErr
|
||||
|
||||
type MustHaveSetForUploadLinkErr {
|
||||
resolution: Boolean
|
||||
@@ -1562,3 +1623,11 @@ type InitUploadAlreadyCompletedErr {
|
||||
type TooManyInitUploadsErr {
|
||||
linksRequested: Int!
|
||||
}
|
||||
|
||||
type StorageLimitExceededErr {
|
||||
reason: String!
|
||||
tierName: String!
|
||||
retainedStorageUsedBytes: BigInt!
|
||||
retainedStorageLimitBytes: BigInt
|
||||
remainingStorageBytes: BigInt
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user