Compare commits

...

19 Commits

Author SHA1 Message Date
8ed177b0f3 Merge pull request 'Add EditShot operation' (#149) from loewy/add-edit-shot-operation into master
Reviewed-on: #149
2024-12-09 14:33:47 -07:00
976cc66ccb add editshot operation
All checks were successful
Tests / Tests (pull_request) Successful in 17s
2024-12-09 14:00:36 -07:00
af461fff00 Merge pull request 'Add Difficulty ShotOrdering' (#148) from mk/shots-ordering-by-difficulty into master
Reviewed-on: #148
2024-12-07 15:27:08 -07:00
7a39b4ca60 Add Difficulty ShotOrdering
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-12-07 14:25:08 -08:00
9befbe3833 Merge pull request 'Add private field to video endpoints' (#147) from loewy/add-private-to-operations into master
Reviewed-on: #147
2024-12-05 16:31:25 -07:00
68a4c064f3 add private field to video endpoints
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-12-05 15:30:16 -08:00
54fd741670 Merge pull request 'Request additional medals in operations' (#146) from loewy/request-new-medals-in-operation into master
Reviewed-on: #146
2024-12-05 14:57:41 -07:00
2f9e630de4 new assets for medals
All checks were successful
Tests / Tests (pull_request) Successful in 17s
2024-12-05 13:47:47 -08:00
5efd8ef8e5 Merge pull request 'Remove distance 60 from operation' (#145) from loewy/remove-distance-60-from-request into master
Reviewed-on: #145
2024-12-04 15:00:27 -07:00
6ad3d449d8 remove distance 60 from operation
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-12-04 13:59:51 -08:00
8fe20d1c41 Merge pull request 'Add editShotData types' (#144) from mk/edit-shot-data into master
Reviewed-on: #144
2024-12-02 20:01:53 -07:00
e151f39582 Add edit shot data stuff
All checks were successful
Tests / Tests (pull_request) Successful in 5s
2024-12-02 18:57:36 -08:00
f136ddb9ca Merge pull request 'Replaces interval with datetime range' (#143) from mk/fix-medal-time-input into master
Reviewed-on: #143
2024-11-26 14:21:16 -07:00
5d05614e07 Replaces interval with datetime range
All checks were successful
Tests / Tests (pull_request) Successful in 17s
2024-11-26 13:19:33 -08:00
c4c3ccde00 id in homography 2024-11-25 14:53:41 -08:00
e137ce8ad1 Request id in Homography info 2024-11-21 17:59:29 -07:00
bd5bebb747 Merge pull request 'Update medal collection' (#142) from loewy/update-medals-operation into master
Reviewed-on: #142
2024-11-21 15:16:23 -07:00
034facebf3 update medal operation, create fragment
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-21 12:18:17 -08:00
ac1fceb648 Merge pull request 'Add new makes medals' (#141) from mk/extend-makes-medals into master
Reviewed-on: #141
2024-11-21 11:56:49 -07:00
5 changed files with 347 additions and 132 deletions

View File

@@ -186,12 +186,29 @@ export type DoesNotOwnShotErrOtherErrorNeedsNote =
| DoesNotOwnShotErr
| OtherErrorNeedsNote;
export type EditShotReturn = {
__typename?: "EditShotReturn";
error?: Maybe<DoesNotOwnShotErr>;
shot?: Maybe<ShotGql>;
};
export type EditUserInputGql = {
fargoRating?: InputMaybe<Scalars["Int"]["input"]>;
username?: InputMaybe<Scalars["String"]["input"]>;
videosPrivateByDefault?: InputMaybe<Scalars["Boolean"]["input"]>;
};
export type EditableShotFieldInputGql = {
backcut?: InputMaybe<Scalars["Boolean"]["input"]>;
excludeFromStats?: InputMaybe<Scalars["Boolean"]["input"]>;
intendedPocketType?: InputMaybe<PocketEnum>;
make?: InputMaybe<Scalars["Boolean"]["input"]>;
notes?: InputMaybe<Scalars["String"]["input"]>;
shotDirection?: InputMaybe<ShotDirectionEnum>;
spinType?: InputMaybe<SpinTypeEnum>;
targetPocketAngleDirection?: InputMaybe<ShotDirectionEnum>;
};
export type EnumAggregation = {
feature: Scalars["String"]["input"];
};
@@ -1999,8 +2016,17 @@ export type MedalGql = {
};
export type MedalScope =
| { interval: TimeInterval; videoId?: never }
| { interval?: never; videoId: Scalars["Int"]["input"] };
| {
datetimeRange: DatetimeRangeAggregationInput;
interval?: never;
videoId?: never;
} /** @deprecated NO LONGER SUPPORTED, USE DATETIME_RANGE */
| { datetimeRange?: never; interval: TimeInterval; videoId?: never }
| {
datetimeRange?: never;
interval?: never;
videoId: Scalars["Int"]["input"];
};
export type MustHaveSetForUploadLinkErr = {
__typename?: "MustHaveSetForUploadLinkErr";
@@ -2025,6 +2051,7 @@ export type Mutation = {
createUploadStream: CreateUploadStreamReturn;
deleteVideo: Scalars["Boolean"]["output"];
editProfileImageUri: UserGql;
editShot: EditShotReturn;
editUploadStream: Scalars["Boolean"]["output"];
editUser: UserGql;
findPrerecordTableLayout?: Maybe<HomographyInfoGql>;
@@ -2060,6 +2087,11 @@ export type MutationEditProfileImageUriArgs = {
profileImageUri: Scalars["String"]["input"];
};
export type MutationEditShotArgs = {
fieldsToEdit: EditableShotFieldInputGql;
shotId: Scalars["Int"]["input"];
};
export type MutationEditUploadStreamArgs = {
videoId: Scalars["Int"]["input"];
videoMetadata: VideoMetadataInput;
@@ -2469,6 +2501,15 @@ export type ShotGql = {
export type ShotsOrderingComponent =
| {
difficulty: FloatOrdering;
marginOfError?: never;
runLength?: never;
startFrame?: never;
videoCreation?: never;
videoId?: never;
}
| {
difficulty?: never;
marginOfError: FloatOrdering;
runLength?: never;
startFrame?: never;
@@ -2476,6 +2517,7 @@ export type ShotsOrderingComponent =
videoId?: never;
}
| {
difficulty?: never;
marginOfError?: never;
runLength: IntOrdering;
startFrame?: never;
@@ -2483,6 +2525,7 @@ export type ShotsOrderingComponent =
videoId?: never;
}
| {
difficulty?: never;
marginOfError?: never;
runLength?: never;
startFrame: IntOrdering;
@@ -2490,6 +2533,7 @@ export type ShotsOrderingComponent =
videoId?: never;
}
| {
difficulty?: never;
marginOfError?: never;
runLength?: never;
startFrame?: never;
@@ -2497,6 +2541,7 @@ export type ShotsOrderingComponent =
videoId?: never;
}
| {
difficulty?: never;
marginOfError?: never;
runLength?: never;
startFrame?: never;
@@ -2999,6 +3044,12 @@ export type GetVideoMakePercentageIntervalsQuery = {
}>;
};
export type MedalFieldsFragment = {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
};
export type GetMedalsQueryVariables = Exact<{
scope: MedalScope;
userId?: InputMaybe<Scalars["Int"]["input"]>;
@@ -3008,11 +3059,6 @@ export type GetMedalsQuery = {
__typename?: "Query";
getMedals: {
__typename?: "RequestedMedalsGQL";
distanceOver66?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
distanceOver78?: {
__typename?: "MedalGQL";
count: number;
@@ -3073,37 +3119,52 @@ export type GetMedalsQuery = {
count: number;
nickname?: string | null;
} | null;
totalMakes25?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
totalMakes50?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
totalMakes75?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
totalMakes100?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
totalMakes200?: {
totalMakes500?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
totalMakes300?: {
totalMakes1000?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
totalMakes400?: {
totalMakes5000?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
totalMakes10000?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
dailyMakes50?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
dailyMakes100?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
dailyMakes150?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
dailyMakes200?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
} | null;
dailyMakes250?: {
__typename?: "MedalGQL";
count: number;
nickname?: string | null;
@@ -3451,6 +3512,74 @@ export type ShotWithAllFeaturesFragment = {
}>;
};
export type EditShotMutationVariables = Exact<{
shotId: Scalars["Int"]["input"];
fieldsToEdit: EditableShotFieldInputGql;
}>;
export type EditShotMutation = {
__typename?: "Mutation";
editShot: {
__typename?: "EditShotReturn";
error?: {
__typename?: "DoesNotOwnShotErr";
shotId: number;
msg?: string | null;
} | null;
shot?: {
__typename?: "ShotGQL";
id: number;
videoId: number;
startFrame: number;
endFrame: number;
startTime: number;
endTime: number;
falsePositiveScore?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
user?: { __typename?: "UserGQL"; id: number } | null;
cueObjectFeatures?: {
__typename?: "CueObjectFeaturesGQL";
cueObjectDistance?: number | null;
cueObjectAngle?: number | null;
cueBallSpeed?: number | null;
shotDirection?: ShotDirectionEnum | null;
spinType?: SpinTypeEnum | null;
} | null;
pocketingIntentionFeatures?: {
__typename?: "PocketingIntentionFeaturesGQL";
make?: boolean | null;
targetPocketDistance?: number | null;
targetPocketAngle?: number | null;
targetPocketAngleDirection?: ShotDirectionEnum | null;
marginOfErrorInDegrees?: number | null;
intendedPocketType?: PocketEnum | null;
difficulty?: number | null;
} | null;
pocketingIntentionInfo?: {
__typename?: "PocketingIntentionInfoGQL";
ballId: number;
pocketId: PocketIdentifier;
pathMetadataIndex: number;
} | null;
serializedShotPaths?: {
__typename?: "SerializedShotPathsGQL";
b64EncodedBuffer?: string | null;
} | null;
annotations: Array<{
__typename?: "ShotAnnotationGQL";
shotId: number;
notes: string;
type: {
__typename?: "ShotAnnotationTypeGQL";
id: number;
name: string;
};
}>;
} | null;
};
};
export type GetProfileImageUploadLinkMutationVariables = Exact<{
fileExt?: InputMaybe<Scalars["String"]["input"]>;
}>;
@@ -3674,6 +3803,7 @@ export type GetStreamMonitoringDetailsQuery = {
elapsedTime?: number | null;
currentHomography?: {
__typename?: "HomographyInfoGQL";
id: number;
frameIndex: number;
crop: {
__typename?: "BoundingBoxGQL";
@@ -3737,6 +3867,7 @@ export type GetVideoUpdatePageDetailsQuery = {
makePercentage: number;
elapsedTime?: number | null;
tableSize: number;
private: boolean;
tags: Array<{
__typename?: "VideoTag";
name: string;
@@ -3776,6 +3907,7 @@ export type GetVideoDetailsQuery = {
createdAt?: any | null;
updatedAt?: any | null;
tableSize: number;
private: boolean;
owner?: {
__typename?: "UserGQL";
id: number;
@@ -3889,6 +4021,7 @@ export type GetVideoQuery = {
} | null;
homographyHistory: Array<{
__typename?: "HomographyInfoGQL";
id: number;
frameIndex: number;
crop: {
__typename?: "BoundingBoxGQL";
@@ -4099,6 +4232,7 @@ export type FindPrerecordTableLayoutMutation = {
__typename?: "Mutation";
findPrerecordTableLayout?: {
__typename?: "HomographyInfoGQL";
id: number;
frameIndex: number;
crop: {
__typename?: "BoundingBoxGQL";
@@ -4128,6 +4262,7 @@ export type FindPrerecordTableLayoutMutation = {
export type HomographyInfoFragment = {
__typename?: "HomographyInfoGQL";
id: number;
frameIndex: number;
crop: {
__typename?: "BoundingBoxGQL";
@@ -4369,6 +4504,12 @@ export const VideoCardFieldsFragmentDoc = gql`
}
}
`;
export const MedalFieldsFragmentDoc = gql`
fragment MedalFields on MedalGQL {
count
nickname
}
`;
export const ShotWithAllFeaturesFragmentDoc = gql`
fragment ShotWithAllFeatures on ShotGQL {
id
@@ -4490,6 +4631,7 @@ export const VideoDurationDataFragmentDoc = gql`
`;
export const HomographyInfoFragmentDoc = gql`
fragment HomographyInfo on HomographyInfoGQL {
id
frameIndex
crop {
left
@@ -4943,88 +5085,75 @@ export type GetVideoMakePercentageIntervalsQueryResult = Apollo.QueryResult<
export const GetMedalsDocument = gql`
query getMedals($scope: MedalScope!, $userId: Int) {
getMedals(scope: $scope, userId: $userId) {
distanceOver66 {
count
nickname
}
distanceOver78 {
count
nickname
...MedalFields
}
distanceOver90 {
count
nickname
...MedalFields
}
runLength3 {
count
nickname
...MedalFields
}
runLength5 {
count
nickname
...MedalFields
}
runLength8 {
count
nickname
...MedalFields
}
runLength10 {
count
nickname
...MedalFields
}
runLength15 {
count
nickname
...MedalFields
}
runLength20 {
count
nickname
...MedalFields
}
runLength25 {
count
nickname
...MedalFields
}
runLength30 {
count
nickname
...MedalFields
}
runLength40 {
count
nickname
...MedalFields
}
runLength50 {
count
nickname
}
totalMakes25 {
count
nickname
}
totalMakes50 {
count
nickname
}
totalMakes75 {
count
nickname
...MedalFields
}
totalMakes100 {
count
nickname
...MedalFields
}
totalMakes200 {
count
nickname
totalMakes500 {
...MedalFields
}
totalMakes300 {
count
nickname
totalMakes1000 {
...MedalFields
}
totalMakes400 {
count
nickname
totalMakes5000 {
...MedalFields
}
totalMakes10000 {
...MedalFields
}
dailyMakes50 {
...MedalFields
}
dailyMakes100 {
...MedalFields
}
dailyMakes150 {
...MedalFields
}
dailyMakes200 {
...MedalFields
}
dailyMakes250 {
...MedalFields
}
}
}
${MedalFieldsFragmentDoc}
`;
/**
@@ -5746,6 +5875,61 @@ export type GetShotsByIdsQueryResult = Apollo.QueryResult<
GetShotsByIdsQuery,
GetShotsByIdsQueryVariables
>;
export const EditShotDocument = gql`
mutation EditShot($shotId: Int!, $fieldsToEdit: EditableShotFieldInputGQL!) {
editShot(shotId: $shotId, fieldsToEdit: $fieldsToEdit) {
error {
shotId
msg
}
shot {
...ShotWithAllFeatures
}
}
}
${ShotWithAllFeaturesFragmentDoc}
`;
export type EditShotMutationFn = Apollo.MutationFunction<
EditShotMutation,
EditShotMutationVariables
>;
/**
* __useEditShotMutation__
*
* To run a mutation, you first call `useEditShotMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useEditShotMutation` 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 [editShotMutation, { data, loading, error }] = useEditShotMutation({
* variables: {
* shotId: // value for 'shotId'
* fieldsToEdit: // value for 'fieldsToEdit'
* },
* });
*/
export function useEditShotMutation(
baseOptions?: Apollo.MutationHookOptions<
EditShotMutation,
EditShotMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<EditShotMutation, EditShotMutationVariables>(
EditShotDocument,
options,
);
}
export type EditShotMutationHookResult = ReturnType<typeof useEditShotMutation>;
export type EditShotMutationResult = Apollo.MutationResult<EditShotMutation>;
export type EditShotMutationOptions = Apollo.BaseMutationOptions<
EditShotMutation,
EditShotMutationVariables
>;
export const GetProfileImageUploadLinkDocument = gql`
mutation getProfileImageUploadLink($fileExt: String = ".png") {
getProfileImageUploadLink(fileExt: $fileExt) {
@@ -6704,6 +6888,7 @@ export const GetVideoUpdatePageDetailsDocument = gql`
makePercentage
elapsedTime
tableSize
private
tags {
tagClasses {
name
@@ -6844,6 +7029,7 @@ export const GetVideoDetailsDocument = gql`
createdAt
updatedAt
tableSize
private
owner {
id
firebaseUid

View File

@@ -1,84 +1,75 @@
fragment MedalFields on MedalGQL {
count
nickname
}
query getMedals($scope: MedalScope!, $userId: Int) {
getMedals(scope: $scope, userId: $userId) {
distanceOver66 {
count
nickname
}
distanceOver78 {
count
nickname
...MedalFields
}
distanceOver90 {
count
nickname
...MedalFields
}
runLength3 {
count
nickname
...MedalFields
}
runLength5 {
count
nickname
...MedalFields
}
runLength8 {
count
nickname
...MedalFields
}
runLength10 {
count
nickname
...MedalFields
}
runLength15 {
count
nickname
...MedalFields
}
runLength20 {
count
nickname
...MedalFields
}
runLength25 {
count
nickname
...MedalFields
}
runLength30 {
count
nickname
...MedalFields
}
runLength40 {
count
nickname
...MedalFields
}
runLength50 {
count
nickname
}
totalMakes25 {
count
nickname
}
totalMakes50 {
count
nickname
}
totalMakes75 {
count
nickname
...MedalFields
}
totalMakes100 {
count
nickname
...MedalFields
}
totalMakes200 {
count
nickname
totalMakes500 {
...MedalFields
}
totalMakes300 {
count
nickname
totalMakes1000 {
...MedalFields
}
totalMakes400 {
count
nickname
totalMakes5000 {
...MedalFields
}
totalMakes10000 {
...MedalFields
}
dailyMakes50 {
...MedalFields
}
dailyMakes100 {
...MedalFields
}
dailyMakes150 {
...MedalFields
}
dailyMakes200 {
...MedalFields
}
dailyMakes250 {
...MedalFields
}
}
}

View File

@@ -178,3 +178,15 @@ fragment ShotWithAllFeatures on ShotGQL {
notes
}
}
mutation EditShot($shotId: Int!, $fieldsToEdit: EditableShotFieldInputGQL!) {
editShot(shotId: $shotId, fieldsToEdit: $fieldsToEdit) {
error {
shotId
msg
}
shot {
...ShotWithAllFeatures
}
}
}

View File

@@ -36,6 +36,7 @@ query GetVideoUpdatePageDetails($videoId: Int!) {
makePercentage
elapsedTime
tableSize
private
tags {
tagClasses {
name
@@ -65,6 +66,7 @@ query GetVideoDetails($videoId: Int!) {
createdAt
updatedAt
tableSize
private
owner {
id
firebaseUid
@@ -222,6 +224,7 @@ mutation FindPrerecordTableLayout($b64Image: String!, $videoId: Int!) {
}
fragment HomographyInfo on HomographyInfoGQL {
id
frameIndex
crop {
left

View File

@@ -320,6 +320,8 @@ type MedalGQL {
input MedalScope @oneOf {
videoId: Int
interval: TimeInterval
@deprecated(reason: "NO LONGER SUPPORTED, USE DATETIME_RANGE")
datetimeRange: DatetimeRangeAggregationInput
}
type GetRunsResult {
@@ -636,6 +638,7 @@ input GetShotsOrdering {
input ShotsOrderingComponent @oneOf {
videoCreation: DatetimeOrdering
marginOfError: FloatOrdering
difficulty: FloatOrdering
videoId: IntOrdering
startFrame: IntOrdering
runLength: IntOrdering
@@ -705,6 +708,10 @@ scalar JSON
type Mutation {
createBucketSet(params: CreateBucketSetInput!): BucketSetGQL!
setLoggerLevel(path: String!, level: String!): Boolean!
editShot(
shotId: Int!
fieldsToEdit: EditableShotFieldInputGQL!
): EditShotReturn!
addAnnotationToShot(
shotId: Int!
annotationName: String!
@@ -742,6 +749,27 @@ input CreateBucketSetInput {
buckets: [BucketInputGQL!]!
}
type EditShotReturn {
shot: ShotGQL
error: DoesNotOwnShotErr
}
type DoesNotOwnShotErr {
shotId: Int!
msg: String
}
input EditableShotFieldInputGQL {
intendedPocketType: PocketEnum
shotDirection: ShotDirectionEnum
spinType: SpinTypeEnum
targetPocketAngleDirection: ShotDirectionEnum
make: Boolean
backcut: Boolean
excludeFromStats: Boolean
notes: String
}
type AddShotAnnotationReturn {
value: SuccessfulAddAddShotAnnotationErrors!
}
@@ -762,11 +790,6 @@ union DoesNotOwnShotErrOtherErrorNeedsNote =
DoesNotOwnShotErr
| OtherErrorNeedsNote
type DoesNotOwnShotErr {
shotId: Int!
msg: String
}
type OtherErrorNeedsNote {
msg: String
}