Compare commits
	
		
			1 Commits
		
	
	
		
			master
			...
			volodymyr/
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 0259284544 | 
| @@ -12,7 +12,7 @@ | |||||||
|   "author": "Ivan Malison <IvanMalison@gmail.com>", |   "author": "Ivan Malison <IvanMalison@gmail.com>", | ||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@apollo/client": "^3.11.10", |     "@apollo/client": "^3.9.2", | ||||||
|     "@graphql-codegen/cli": "^5.0.0", |     "@graphql-codegen/cli": "^5.0.0", | ||||||
|     "@graphql-codegen/typescript": "^4.0.1", |     "@graphql-codegen/typescript": "^4.0.1", | ||||||
|     "@graphql-codegen/typescript-operations": "^4.0.1", |     "@graphql-codegen/typescript-operations": "^4.0.1", | ||||||
|   | |||||||
| @@ -1,16 +1,9 @@ | |||||||
| # see: https://www.apollographql.com/docs/react/local-state/managing-state-with-field-policies/ | # see: https://www.apollographql.com/docs/react/local-state/managing-state-with-field-policies/ | ||||||
| directive @client on FIELD | directive @client on FIELD | ||||||
|  |  | ||||||
| type SegmentInfo { |  | ||||||
|   index: Int! |  | ||||||
|   time: Float! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| extend type ShotGQL { | extend type ShotGQL { | ||||||
|   startTime: Float! |   startTime: Float! | ||||||
|   endTime: Float! |   endTime: Float! | ||||||
|   startSegment: SegmentInfo! |  | ||||||
|   endSegment: SegmentInfo! |  | ||||||
| } | } | ||||||
|  |  | ||||||
| extend type UploadStreamGQL { | extend type UploadStreamGQL { | ||||||
|   | |||||||
							
								
								
									
										11153
									
								
								src/index.tsx
									
									
									
									
									
								
							
							
						
						
									
										11153
									
								
								src/index.tsx
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,19 +0,0 @@ | |||||||
| mutation CommentOnVideo( |  | ||||||
|   $videoId: Int! |  | ||||||
|   $message: String! |  | ||||||
|   $parentCommentId: Int |  | ||||||
| ) { |  | ||||||
|   commentOnVideo( |  | ||||||
|     videoId: $videoId |  | ||||||
|     message: $message |  | ||||||
|     parentCommentId: $parentCommentId |  | ||||||
|   ) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mutation EditComment($videoId: Int!, $commentId: Int!, $newMessage: String!) { |  | ||||||
|   editComment(videoId: $videoId, commentId: $commentId, newMessage: $newMessage) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mutation DeleteComment($videoId: Int!, $commentId: Int!) { |  | ||||||
|   deleteComment(videoId: $videoId, commentId: $commentId) |  | ||||||
| } |  | ||||||
| @@ -5,14 +5,5 @@ query getDeployedConfig { | |||||||
|     environment |     environment | ||||||
|     firebase |     firebase | ||||||
|     minimumAllowedAppVersion |     minimumAllowedAppVersion | ||||||
|     subscriptionGatingEnabled |  | ||||||
|     bannerMessages { |  | ||||||
|       color |  | ||||||
|       dismissible |  | ||||||
|       id |  | ||||||
|       kind |  | ||||||
|       message |  | ||||||
|       priority |  | ||||||
|     } |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,15 +0,0 @@ | |||||||
| mutation blockContent($videoId: Int!) { |  | ||||||
|   blockContent(videoId: $videoId) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mutation blockUser($userId: Int!) { |  | ||||||
|   blockUser(userId: $userId) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mutation reportContent( |  | ||||||
|   $videoId: Int! |  | ||||||
|   $reason: ReportReasonEnum! |  | ||||||
|   $customReason: String = null |  | ||||||
| ) { |  | ||||||
|   reportContent(videoId: $videoId, reason: $reason, customReason: $customReason) |  | ||||||
| } |  | ||||||
| @@ -1,4 +1,3 @@ | |||||||
| # DO NOT USE: use getVideoFeed instead |  | ||||||
| query GetFeed( | query GetFeed( | ||||||
|   $limit: Int! = 5 |   $limit: Int! = 5 | ||||||
|   $after: String = null |   $after: String = null | ||||||
| @@ -6,112 +5,33 @@ query GetFeed( | |||||||
| ) { | ) { | ||||||
|   getUserVideos(limit: $limit, after: $after, filters: $filters) { |   getUserVideos(limit: $limit, after: $after, filters: $filters) { | ||||||
|     videos { |     videos { | ||||||
|       ...VideoCardFields |  | ||||||
|     } |  | ||||||
|     pageInfo { |  | ||||||
|       hasNextPage |  | ||||||
|       endCursor |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| fragment UserSocialsFields on UserGQL { |  | ||||||
|   id |  | ||||||
|   username |  | ||||||
|   profileImageUri |  | ||||||
|   followers { |  | ||||||
|     id |  | ||||||
|     username |  | ||||||
|     profileImageUri |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| fragment VideoCardFields on VideoGQL { |  | ||||||
|   id |  | ||||||
|   owner { |  | ||||||
|     id |  | ||||||
|     username |  | ||||||
|     profileImageUri |  | ||||||
|   } |  | ||||||
|   name |  | ||||||
|   screenshotUri |  | ||||||
|   totalShotsMade |  | ||||||
|   totalShots |  | ||||||
|   makePercentage |  | ||||||
|   averageTimeBetweenShots |  | ||||||
|   averageDifficulty |  | ||||||
|   createdAt |  | ||||||
|   updatedAt |  | ||||||
|   startTime |  | ||||||
|   endTime |  | ||||||
|   private |  | ||||||
|   elapsedTime |  | ||||||
|   screenshotUri |  | ||||||
|   stream { |  | ||||||
|     id |  | ||||||
|     lastIntendedSegmentBound |  | ||||||
|     isCompleted |  | ||||||
|     streamSegmentType |  | ||||||
|   } |  | ||||||
|   tableSize |  | ||||||
|   tags { |  | ||||||
|     tagClasses { |  | ||||||
|       name |  | ||||||
|     } |  | ||||||
|     name |  | ||||||
|   } |  | ||||||
|   currentProcessing { |  | ||||||
|     id |  | ||||||
|     errors { |  | ||||||
|       message |  | ||||||
|     } |  | ||||||
|     status |  | ||||||
|     statuses { |  | ||||||
|       status |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   reactions { |  | ||||||
|     videoId |  | ||||||
|     user { |  | ||||||
|       ...UserSocialsFields |  | ||||||
|     } |  | ||||||
|     reaction |  | ||||||
|   } |  | ||||||
|   comments { |  | ||||||
|     id |  | ||||||
|     message |  | ||||||
|     user { |  | ||||||
|       ...UserSocialsFields |  | ||||||
|     } |  | ||||||
|     replies { |  | ||||||
|       id |       id | ||||||
|       message |       owner { | ||||||
|       user { |         username | ||||||
|         ...UserSocialsFields |       } | ||||||
|  |       name | ||||||
|  |       screenshotUri | ||||||
|  |       totalShotsMade | ||||||
|  |       totalShots | ||||||
|  |       makePercentage | ||||||
|  |       createdAt | ||||||
|  |       updatedAt | ||||||
|  |       startTime | ||||||
|  |       endTime | ||||||
|  |       elapsedTime | ||||||
|  |       screenshotUri | ||||||
|  |       stream { | ||||||
|  |         id | ||||||
|  |         isCompleted | ||||||
|  |       } | ||||||
|  |       tableSize | ||||||
|  |       tags { | ||||||
|  |         tagClasses { | ||||||
|  |           name | ||||||
|  |         } | ||||||
|  |         name | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| query GetVideoFeed( |  | ||||||
|   $limit: Int! = 5 |  | ||||||
|   $after: String = null |  | ||||||
|   $filters: VideoFilterInput = null |  | ||||||
|   $includeCallersVideos: Boolean = null |  | ||||||
|   $includePrivate: IncludePrivateEnum = MINE |  | ||||||
|   $feedInput: VideoFeedInputGQL = null |  | ||||||
| ) { |  | ||||||
|   getFeedVideos( |  | ||||||
|     limit: $limit |  | ||||||
|     after: $after |  | ||||||
|     filters: $filters |  | ||||||
|     includeCallersVideos: $includeCallersVideos |  | ||||||
|     includePrivate: $includePrivate |  | ||||||
|     feedInput: $feedInput |  | ||||||
|   ) { |  | ||||||
|     videos { |  | ||||||
|       ...VideoCardFields |  | ||||||
|     } |  | ||||||
|     pageInfo { |     pageInfo { | ||||||
|       hasNextPage |       hasNextPage | ||||||
|       endCursor |       endCursor | ||||||
|   | |||||||
| @@ -1,32 +0,0 @@ | |||||||
| query GetMakesLeaderboard($interval: TimeInterval, $when: DateTime) { |  | ||||||
|   getMakesLeaderboard(interval: $interval, when: $when) { |  | ||||||
|     entries { |  | ||||||
|       user { |  | ||||||
|         id |  | ||||||
|         username |  | ||||||
|         profileImageUri |  | ||||||
|       } |  | ||||||
|       value |  | ||||||
|       proportionMade |  | ||||||
|       total |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| query GetRunsLeaderboard($interval: TimeInterval, $when: DateTime) { |  | ||||||
|   getLongestRunsLeaderboard(interval: $interval, when: $when) { |  | ||||||
|     entries { |  | ||||||
|       id |  | ||||||
|       runLength |  | ||||||
|       video { |  | ||||||
|         name |  | ||||||
|         createdAt |  | ||||||
|       } |  | ||||||
|       user { |  | ||||||
|         id |  | ||||||
|         username |  | ||||||
|         profileImageUri |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -1,75 +0,0 @@ | |||||||
| fragment MedalFields on MedalGQL { |  | ||||||
|   count |  | ||||||
|   nickname |  | ||||||
| } |  | ||||||
|  |  | ||||||
| query getMedals($scope: MedalScope!, $userId: Int) { |  | ||||||
|   getMedals(scope: $scope, userId: $userId) { |  | ||||||
|     distanceOver78 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     distanceOver90 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     runLength3 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     runLength5 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     runLength8 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     runLength10 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     runLength15 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     runLength20 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     runLength25 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     runLength30 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     runLength40 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     runLength50 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     totalMakes100 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     totalMakes500 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     totalMakes1000 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     totalMakes5000 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     totalMakes10000 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     dailyMakes50 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     dailyMakes100 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     dailyMakes150 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     dailyMakes200 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|     dailyMakes250 { |  | ||||||
|       ...MedalFields |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -1,65 +0,0 @@ | |||||||
| mutation EnsureStripeCustomerExists { |  | ||||||
|   ensureStripeCustomerExists { |  | ||||||
|     id |  | ||||||
|     firebaseUid |  | ||||||
|     username |  | ||||||
|     stripeCustomerId |  | ||||||
|     profileImageUri |  | ||||||
|     isAdmin |  | ||||||
|     fargoRating |  | ||||||
|     videosPrivateByDefault |  | ||||||
|     createdAt |  | ||||||
|     updatedAt |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mutation CreateSubscription($priceId: String!) { |  | ||||||
|   createSubscription(priceId: $priceId) { |  | ||||||
|     checkoutUrl |  | ||||||
|     sessionId |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| query GetAvailableSubscriptionOptions { |  | ||||||
|   getAvailableSubscriptionOptions { |  | ||||||
|     products { |  | ||||||
|       id |  | ||||||
|       name |  | ||||||
|       description |  | ||||||
|       active |  | ||||||
|       prices { |  | ||||||
|         id |  | ||||||
|         currency |  | ||||||
|         unitAmount |  | ||||||
|         recurringInterval |  | ||||||
|         recurringIntervalCount |  | ||||||
|         type |  | ||||||
|         active |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| query GetSubscriptionStatus { |  | ||||||
|   getUserSubscriptionStatus { |  | ||||||
|     hasActiveSubscription |  | ||||||
|     subscriptionStatus |  | ||||||
|     currentPeriodStart |  | ||||||
|     currentPeriodEnd |  | ||||||
|     validUntil |  | ||||||
|     stripePriceId |  | ||||||
|     stripeSubscriptionId |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mutation CancelSubscription { |  | ||||||
|   cancelSubscription { |  | ||||||
|     hasActiveSubscription |  | ||||||
|     subscriptionStatus |  | ||||||
|     currentPeriodStart |  | ||||||
|     currentPeriodEnd |  | ||||||
|     validUntil |  | ||||||
|     stripePriceId |  | ||||||
|     stripeSubscriptionId |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -1,3 +0,0 @@ | |||||||
| mutation ReactToVideo($videoId: Int!, $reaction: ReactionEnum) { |  | ||||||
|   reactToVideo(videoId: $videoId, reaction: $reaction) |  | ||||||
| } |  | ||||||
| @@ -1,67 +0,0 @@ | |||||||
| query GetRunsForHighlights( |  | ||||||
|   $filterInput: RunFilterInput! |  | ||||||
|   $runIds: [Int!] = null |  | ||||||
|   $runsOrdering: GetRunsOrdering |  | ||||||
|   $limit: Int! = 500 |  | ||||||
|   $countRespectsLimit: Boolean! = false |  | ||||||
| ) { |  | ||||||
|   getRuns( |  | ||||||
|     filterInput: $filterInput |  | ||||||
|     runIds: $runIds |  | ||||||
|     runsOrdering: $runsOrdering |  | ||||||
|     limit: $limit |  | ||||||
|     countRespectsLimit: $countRespectsLimit |  | ||||||
|   ) { |  | ||||||
|     count |  | ||||||
|     runs { |  | ||||||
|       id |  | ||||||
|       runLength |  | ||||||
|       userId |  | ||||||
|       videoId |  | ||||||
|       shots { |  | ||||||
|         videoId |  | ||||||
|         id |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     runIds |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| fragment PocketingIntentionFragment on PocketingIntentionFeaturesGQL { |  | ||||||
|   make |  | ||||||
|   targetPocketDistance |  | ||||||
|   targetPocketAngle |  | ||||||
|   targetPocketAngleDirection |  | ||||||
|   marginOfErrorInDegrees |  | ||||||
|   intendedPocketType |  | ||||||
|   difficulty |  | ||||||
| } |  | ||||||
|  |  | ||||||
| query GetRunsWithTimestamps( |  | ||||||
|   $filterInput: RunFilterInput! |  | ||||||
|   $runIds: [Int!] = null |  | ||||||
|   $runsOrdering: GetRunsOrdering |  | ||||||
| ) { |  | ||||||
|   getRuns( |  | ||||||
|     filterInput: $filterInput |  | ||||||
|     runIds: $runIds |  | ||||||
|     runsOrdering: $runsOrdering |  | ||||||
|   ) { |  | ||||||
|     count |  | ||||||
|     runs { |  | ||||||
|       id |  | ||||||
|       runLength |  | ||||||
|       userId |  | ||||||
|       videoId |  | ||||||
|       shots { |  | ||||||
|         videoId |  | ||||||
|         id |  | ||||||
|         createdAt |  | ||||||
|         pocketingIntentionFeatures { |  | ||||||
|           ...PocketingIntentionFragment |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     runIds |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -40,7 +40,6 @@ mutation UpdateShotAnnotations( | |||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| ## Should be deprecated |  | ||||||
| query GetShotsWithVideoGql( | query GetShotsWithVideoGql( | ||||||
|   $filterInput: FilterInput! |   $filterInput: FilterInput! | ||||||
|   $shotsOrdering: GetShotsOrdering |   $shotsOrdering: GetShotsOrdering | ||||||
| @@ -62,40 +61,18 @@ query GetShotsWithVideoGql( | |||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| query GetShotsWithJustIds( |  | ||||||
|   $filterInput: FilterInput! |  | ||||||
|   $shotsOrdering: GetShotsOrdering |  | ||||||
|   $limit: Int |  | ||||||
|   $countRespectsLimit: Boolean |  | ||||||
| ) { |  | ||||||
|   getOrderedShots( |  | ||||||
|     filterInput: $filterInput |  | ||||||
|     shotsOrdering: $shotsOrdering |  | ||||||
|     limit: $limit |  | ||||||
|     countRespectsLimit: $countRespectsLimit |  | ||||||
|   ) { |  | ||||||
|     count |  | ||||||
|     shots { |  | ||||||
|       id |  | ||||||
|       videoId |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| ## Reserved for playlists (which are created from a filter) | ## Reserved for playlists (which are created from a filter) | ||||||
| query GetShotsWithMetadataFilterResult( | query GetShotsWithMetadataFilterResult( | ||||||
|   $filterInput: FilterInput! |   $filterInput: FilterInput! | ||||||
|   $shotsOrdering: GetShotsOrdering |   $shotsOrdering: GetShotsOrdering | ||||||
|   $limit: Int |   $limit: Int | ||||||
|   $ids: [Int!] |   $ids: [Int!] | ||||||
|   $countRespectsLimit: Boolean |  | ||||||
| ) { | ) { | ||||||
|   getOrderedShots( |   getOrderedShots( | ||||||
|     filterInput: $filterInput |     filterInput: $filterInput | ||||||
|     shotsOrdering: $shotsOrdering |     shotsOrdering: $shotsOrdering | ||||||
|     limit: $limit |     limit: $limit | ||||||
|     ids: $ids |     ids: $ids | ||||||
|     countRespectsLimit: $countRespectsLimit |  | ||||||
|   ) { |   ) { | ||||||
|     count |     count | ||||||
|     shots { |     shots { | ||||||
| @@ -139,14 +116,6 @@ fragment ShotWithAllFeatures on ShotGQL { | |||||||
|   endFrame |   endFrame | ||||||
|   startTime @client |   startTime @client | ||||||
|   endTime @client |   endTime @client | ||||||
|   startSegment @client { |  | ||||||
|     index |  | ||||||
|     time |  | ||||||
|   } |  | ||||||
|   endSegment @client { |  | ||||||
|     index |  | ||||||
|     time |  | ||||||
|   } |  | ||||||
|   user { |   user { | ||||||
|     id |     id | ||||||
|   } |   } | ||||||
| @@ -167,7 +136,6 @@ fragment ShotWithAllFeatures on ShotGQL { | |||||||
|     targetPocketAngleDirection |     targetPocketAngleDirection | ||||||
|     marginOfErrorInDegrees |     marginOfErrorInDegrees | ||||||
|     intendedPocketType |     intendedPocketType | ||||||
|     difficulty |  | ||||||
|   } |   } | ||||||
|   pocketingIntentionInfo { |   pocketingIntentionInfo { | ||||||
|     ballId |     ballId | ||||||
| @@ -185,23 +153,4 @@ fragment ShotWithAllFeatures on ShotGQL { | |||||||
|     } |     } | ||||||
|     notes |     notes | ||||||
|   } |   } | ||||||
|   video { |  | ||||||
|     id |  | ||||||
|     stream { |  | ||||||
|       id |  | ||||||
|       streamSegmentType |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mutation EditShot($shotId: Int!, $fieldsToEdit: EditableShotFieldInputGQL!) { |  | ||||||
|   editShot(shotId: $shotId, fieldsToEdit: $fieldsToEdit) { |  | ||||||
|     error { |  | ||||||
|       shotId |  | ||||||
|       msg |  | ||||||
|     } |  | ||||||
|     shot { |  | ||||||
|       ...ShotWithAllFeatures |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,7 +0,0 @@ | |||||||
| mutation RetireTags($tagIds: [Int!]!) { |  | ||||||
|   retireTags(tagIds: $tagIds) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mutation DeleteTags($videoId: Int!, $tagsToDelete: [VideoTagInput!]!) { |  | ||||||
|   deleteTags(videoId: $videoId, tagsToDelete: $tagsToDelete) |  | ||||||
| } |  | ||||||
| @@ -21,24 +21,31 @@ mutation getProfileImageUploadLink($fileExt: String = ".png") { | |||||||
|  |  | ||||||
| mutation editProfileImageUri($profileImageUri: String!) { | mutation editProfileImageUri($profileImageUri: String!) { | ||||||
|   editProfileImageUri(profileImageUri: $profileImageUri) { |   editProfileImageUri(profileImageUri: $profileImageUri) { | ||||||
|     ...UserFragment |     id | ||||||
|  |     firebaseUid | ||||||
|  |     username | ||||||
|  |     profileImageUri | ||||||
|  |     createdAt | ||||||
|  |     updatedAt | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| query getLoggedInUser { | query getLoggedInUser { | ||||||
|   getLoggedInUser { |   getLoggedInUser { | ||||||
|     ...UserFragment |     id | ||||||
|  |     firebaseUid | ||||||
|  |     username | ||||||
|  |     isAdmin | ||||||
|  |     profileImageUri | ||||||
|  |     fargoRating | ||||||
|  |     activeVideoId | ||||||
|  |     createdAt | ||||||
|  |     updatedAt | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| query GetUser($userId: Int!) { | query GetUserPlayTime($userId: Int!) { | ||||||
|   getUser(userId: $userId) { |   getPlayTime(userId: $userId) { | ||||||
|     ...UserFragment |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| query GetUserPlayTime($userId: Int!, $filters: VideoFilterInput) { |  | ||||||
|   getPlayTime(userId: $userId, filters: $filters) { |  | ||||||
|     totalSeconds |     totalSeconds | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @@ -66,7 +73,6 @@ query getUserRelationshipsMatching( | |||||||
|     relationships { |     relationships { | ||||||
|       toUser { |       toUser { | ||||||
|         username |         username | ||||||
|         profileImageUri |  | ||||||
|         id |         id | ||||||
|       } |       } | ||||||
|       toUserFollows |       toUserFollows | ||||||
| @@ -79,10 +85,6 @@ query GetUserTags { | |||||||
|   getUserTags { |   getUserTags { | ||||||
|     id |     id | ||||||
|     name |     name | ||||||
|     tagClasses { |  | ||||||
|       id |  | ||||||
|       name |  | ||||||
|     } |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -122,58 +124,14 @@ query getUserFollowingFollowers { | |||||||
|     following { |     following { | ||||||
|       id |       id | ||||||
|       username |       username | ||||||
|       profileImageUri |  | ||||||
|     } |     } | ||||||
|     followers { |     followers { | ||||||
|       id |       id | ||||||
|       username |       username | ||||||
|       profileImageUri |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| query doesUsernameExist($candidateUsername: String!) { | query doesUsernameExist($candidateUsername: String!) { | ||||||
|   doesUsernameExist(candidateUsername: $candidateUsername) |   doesUsernameExist(candidateUsername: $candidateUsername) | ||||||
| } | } | ||||||
|  |  | ||||||
| mutation editUser( |  | ||||||
|   $username: String |  | ||||||
|   $fargoRating: Int |  | ||||||
|   $videosPrivateByDefault: Boolean |  | ||||||
|   $agreesToMarketing: Boolean |  | ||||||
| ) { |  | ||||||
|   editUser( |  | ||||||
|     input: { |  | ||||||
|       username: $username |  | ||||||
|       fargoRating: $fargoRating |  | ||||||
|       videosPrivateByDefault: $videosPrivateByDefault |  | ||||||
|       agreesToMarketing: $agreesToMarketing |  | ||||||
|     } |  | ||||||
|   ) { |  | ||||||
|     id |  | ||||||
|     firebaseUid |  | ||||||
|     username |  | ||||||
|     fargoRating |  | ||||||
|     updatedAt |  | ||||||
|     videosPrivateByDefault |  | ||||||
|     agreesToMarketing |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mutation deleteUser { |  | ||||||
|   deleteUser |  | ||||||
| } |  | ||||||
|  |  | ||||||
| fragment UserFragment on UserGQL { |  | ||||||
|   id |  | ||||||
|   firebaseUid |  | ||||||
|   username |  | ||||||
|   isAdmin |  | ||||||
|   profileImageUri |  | ||||||
|   fargoRating |  | ||||||
|   activeVideoId |  | ||||||
|   createdAt |  | ||||||
|   updatedAt |  | ||||||
|   videosPrivateByDefault |  | ||||||
|   agreesToMarketing |  | ||||||
| } |  | ||||||
| @@ -5,7 +5,44 @@ query GetStreamMonitoringDetails($videoId: Int!, $debuggingJson: JSON) { | |||||||
|     makePercentage |     makePercentage | ||||||
|     elapsedTime |     elapsedTime | ||||||
|     currentHomography { |     currentHomography { | ||||||
|       ...HomographyInfo |       crop { | ||||||
|  |         left | ||||||
|  |         top | ||||||
|  |         width | ||||||
|  |         height | ||||||
|  |       } | ||||||
|  |       pockets { | ||||||
|  |         left | ||||||
|  |         top | ||||||
|  |         width | ||||||
|  |         height | ||||||
|  |       } | ||||||
|  |       sourcePoints { | ||||||
|  |         topLeft { | ||||||
|  |           x | ||||||
|  |           y | ||||||
|  |         } | ||||||
|  |         topSide { | ||||||
|  |           x | ||||||
|  |           y | ||||||
|  |         } | ||||||
|  |         topRight { | ||||||
|  |           x | ||||||
|  |           y | ||||||
|  |         } | ||||||
|  |         bottomLeft { | ||||||
|  |           x | ||||||
|  |           y | ||||||
|  |         } | ||||||
|  |         bottomSide { | ||||||
|  |           x | ||||||
|  |           y | ||||||
|  |         } | ||||||
|  |         bottomRight { | ||||||
|  |           x | ||||||
|  |           y | ||||||
|  |         } | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|     stream { |     stream { | ||||||
|       id |       id | ||||||
| @@ -18,7 +55,6 @@ query GetStreamMonitoringDetails($videoId: Int!, $debuggingJson: JSON) { | |||||||
|       initPlaylistUploadStatus |       initPlaylistUploadStatus | ||||||
|     } |     } | ||||||
|     currentProcessing { |     currentProcessing { | ||||||
|       id |  | ||||||
|       errors { |       errors { | ||||||
|         message |         message | ||||||
|         startSegmentIndex |         startSegmentIndex | ||||||
| @@ -36,7 +72,6 @@ query GetVideoUpdatePageDetails($videoId: Int!) { | |||||||
|     makePercentage |     makePercentage | ||||||
|     elapsedTime |     elapsedTime | ||||||
|     tableSize |     tableSize | ||||||
|     private |  | ||||||
|     tags { |     tags { | ||||||
|       tagClasses { |       tagClasses { | ||||||
|         name |         name | ||||||
| @@ -66,7 +101,6 @@ query GetVideoDetails($videoId: Int!) { | |||||||
|     createdAt |     createdAt | ||||||
|     updatedAt |     updatedAt | ||||||
|     tableSize |     tableSize | ||||||
|     private |  | ||||||
|     owner { |     owner { | ||||||
|       id |       id | ||||||
|       firebaseUid |       firebaseUid | ||||||
| @@ -82,57 +116,6 @@ query GetVideoDetails($videoId: Int!) { | |||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| fragment UserSocialsFields on UserGQL { |  | ||||||
|   id |  | ||||||
|   username |  | ||||||
|   profileImageUri |  | ||||||
|   followers { |  | ||||||
|     id |  | ||||||
|     username |  | ||||||
|     profileImageUri |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| query GetVideoSocialDetailsById($videoId: Int!) { |  | ||||||
|   getVideo(videoId: $videoId) { |  | ||||||
|     id |  | ||||||
|     name |  | ||||||
|     owner { |  | ||||||
|       id |  | ||||||
|       firebaseUid |  | ||||||
|       username |  | ||||||
|       profileImageUri |  | ||||||
|     } |  | ||||||
|     tags { |  | ||||||
|       tagClasses { |  | ||||||
|         name |  | ||||||
|       } |  | ||||||
|       name |  | ||||||
|     } |  | ||||||
|     reactions { |  | ||||||
|       videoId |  | ||||||
|       user { |  | ||||||
|         ...UserSocialsFields |  | ||||||
|       } |  | ||||||
|       reaction |  | ||||||
|     } |  | ||||||
|     comments { |  | ||||||
|       id |  | ||||||
|       message |  | ||||||
|       user { |  | ||||||
|         ...UserSocialsFields |  | ||||||
|       } |  | ||||||
|       replies { |  | ||||||
|         id |  | ||||||
|         message |  | ||||||
|         user { |  | ||||||
|           ...UserSocialsFields |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| query GetVideos($videoIds: [Int!]!) { | query GetVideos($videoIds: [Int!]!) { | ||||||
|   getVideos(videoIds: $videoIds) { |   getVideos(videoIds: $videoIds) { | ||||||
|     ...VideoStreamMetadata |     ...VideoStreamMetadata | ||||||
| @@ -171,7 +154,45 @@ query GetVideo($videoId: Int!) { | |||||||
|       segmentDurations |       segmentDurations | ||||||
|     } |     } | ||||||
|     homographyHistory { |     homographyHistory { | ||||||
|       ...HomographyInfo |       frameIndex | ||||||
|  |       crop { | ||||||
|  |         left | ||||||
|  |         top | ||||||
|  |         width | ||||||
|  |         height | ||||||
|  |       } | ||||||
|  |       pockets { | ||||||
|  |         left | ||||||
|  |         top | ||||||
|  |         width | ||||||
|  |         height | ||||||
|  |       } | ||||||
|  |       sourcePoints { | ||||||
|  |         topLeft { | ||||||
|  |           x | ||||||
|  |           y | ||||||
|  |         } | ||||||
|  |         topSide { | ||||||
|  |           x | ||||||
|  |           y | ||||||
|  |         } | ||||||
|  |         topRight { | ||||||
|  |           x | ||||||
|  |           y | ||||||
|  |         } | ||||||
|  |         bottomLeft { | ||||||
|  |           x | ||||||
|  |           y | ||||||
|  |         } | ||||||
|  |         bottomSide { | ||||||
|  |           x | ||||||
|  |           y | ||||||
|  |         } | ||||||
|  |         bottomRight { | ||||||
|  |           x | ||||||
|  |           y | ||||||
|  |         } | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|     stream { |     stream { | ||||||
|       id |       id | ||||||
| @@ -267,69 +288,3 @@ query GetHeaderInfoByVideoId($videoId: Int!) { | |||||||
|     startTime |     startTime | ||||||
|   } |   } | ||||||
| } | } | ||||||
| query GetBannerInfoByVideoId($videoId: Int!) { |  | ||||||
|   getVideo(videoId: $videoId) { |  | ||||||
|     id |  | ||||||
|     name |  | ||||||
|     stream { |  | ||||||
|       id |  | ||||||
|       lastIntendedSegmentBound |  | ||||||
|     } |  | ||||||
|     owner { |  | ||||||
|       id |  | ||||||
|     } |  | ||||||
|     currentProcessing { |  | ||||||
|       id |  | ||||||
|       status |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mutation FindPrerecordTableLayout($b64Image: String!, $videoId: Int!) { |  | ||||||
|   findPrerecordTableLayout(b64Image: $b64Image, videoId: $videoId) { |  | ||||||
|     ...HomographyInfo |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| fragment HomographyInfo on HomographyInfoGQL { |  | ||||||
|   id |  | ||||||
|   frameIndex |  | ||||||
|   crop { |  | ||||||
|     left |  | ||||||
|     top |  | ||||||
|     width |  | ||||||
|     height |  | ||||||
|   } |  | ||||||
|   pockets { |  | ||||||
|     left |  | ||||||
|     top |  | ||||||
|     width |  | ||||||
|     height |  | ||||||
|   } |  | ||||||
|   sourcePoints { |  | ||||||
|     topLeft { |  | ||||||
|       x |  | ||||||
|       y |  | ||||||
|     } |  | ||||||
|     topSide { |  | ||||||
|       x |  | ||||||
|       y |  | ||||||
|     } |  | ||||||
|     topRight { |  | ||||||
|       x |  | ||||||
|       y |  | ||||||
|     } |  | ||||||
|     bottomLeft { |  | ||||||
|       x |  | ||||||
|       y |  | ||||||
|     } |  | ||||||
|     bottomSide { |  | ||||||
|       x |  | ||||||
|       y |  | ||||||
|     } |  | ||||||
|     bottomRight { |  | ||||||
|       x |  | ||||||
|       y |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -101,19 +101,6 @@ query GetUploadStreams( | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| fragment UploadStreamWithDetails on VideoGQL { |  | ||||||
|   id |  | ||||||
|   name |  | ||||||
|   startTime |  | ||||||
|   stream { |  | ||||||
|     isCompleted |  | ||||||
|     lastIntendedSegmentBound |  | ||||||
|     uploadCompletionCursor |  | ||||||
|     uploadsCompleted |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| query GetUploadStreamsWithDetails( | query GetUploadStreamsWithDetails( | ||||||
|   $limit: Int! = 5 |   $limit: Int! = 5 | ||||||
|   $after: String = null |   $after: String = null | ||||||
| @@ -121,7 +108,15 @@ query GetUploadStreamsWithDetails( | |||||||
| ) { | ) { | ||||||
|   getUserVideos(limit: $limit, after: $after, filters: $filters) { |   getUserVideos(limit: $limit, after: $after, filters: $filters) { | ||||||
|     videos { |     videos { | ||||||
|       ...UploadStreamWithDetails |       id | ||||||
|  |       name | ||||||
|  |       startTime | ||||||
|  |       stream { | ||||||
|  |         isCompleted | ||||||
|  |         lastIntendedSegmentBound | ||||||
|  |         uploadCompletionCursor | ||||||
|  |         uploadsCompleted | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|     pageInfo { |     pageInfo { | ||||||
|       hasNextPage |       hasNextPage | ||||||
|   | |||||||
							
								
								
									
										573
									
								
								src/schema.gql
									
									
									
									
									
								
							
							
						
						
									
										573
									
								
								src/schema.gql
									
									
									
									
									
								
							| @@ -5,63 +5,30 @@ type Query { | |||||||
|   getBucketSet(keyName: String!): BucketSetGQL |   getBucketSet(keyName: String!): BucketSetGQL | ||||||
|   getDeployedConfig: DeployedConfigGQL! |   getDeployedConfig: DeployedConfigGQL! | ||||||
|   waitFor(duration: Float!): Float! |   waitFor(duration: Float!): Float! | ||||||
|   getFeedVideos( |  | ||||||
|     limit: Int! = 5 |  | ||||||
|     after: String = null |  | ||||||
|     includePrivate: IncludePrivateEnum! = MINE |  | ||||||
|     includeCallersVideos: Boolean = true |  | ||||||
|     filters: VideoFilterInput = null |  | ||||||
|     feedInput: VideoFeedInputGQL = null |  | ||||||
|   ): VideoHistoryGQL! |  | ||||||
|   getVideoMakePercentageIntervals( |   getVideoMakePercentageIntervals( | ||||||
|     videoId: ID! |     videoId: ID! | ||||||
|     intervalDuration: Int! = 300 |     intervalDuration: Int! = 300 | ||||||
|   ): [MakePercentageIntervalGQL!]! |   ): [MakePercentageIntervalGQL!]! | ||||||
|   getLongestRunsLeaderboard( |  | ||||||
|     interval: TimeInterval = null |  | ||||||
|     when: DateTime = null |  | ||||||
|     limit: Int! = 100 |  | ||||||
|     requiredTags: [String!] = null |  | ||||||
|   ): RunLeaderboardGQL! |  | ||||||
|   getMakesLeaderboard( |  | ||||||
|     interval: TimeInterval = null |  | ||||||
|     when: DateTime = null |  | ||||||
|   ): CountLeaderboardGQL! |  | ||||||
|   getMedals(scope: MedalScope!, userId: Int = null): RequestedMedalsGQL! |   getMedals(scope: MedalScope!, userId: Int = null): RequestedMedalsGQL! | ||||||
|   getRuns( |  | ||||||
|     filterInput: RunFilterInput! |  | ||||||
|     runIds: [Int!] = null |  | ||||||
|     runsOrdering: GetRunsOrdering = null |  | ||||||
|     limit: Int! = 500 |  | ||||||
|     countRespectsLimit: Boolean! = false |  | ||||||
|   ): GetRunsResult! |  | ||||||
|   getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]! |  | ||||||
|   getTableState( |  | ||||||
|     b64Image: String! |  | ||||||
|     tableSize: Float = 100 |  | ||||||
|     useHomography: HomographyInputGQL = null |  | ||||||
|   ): TableStateGQL! |  | ||||||
|   getOrderedShots( |   getOrderedShots( | ||||||
|     filterInput: FilterInput! |     filterInput: FilterInput! | ||||||
|     ids: [Int!] = null |     ids: [Int!] = null | ||||||
|     shotsOrdering: GetShotsOrdering = null |     shotsOrdering: GetShotsOrdering = null | ||||||
|     limit: Int! = 500 |     limit: Int! = 500 | ||||||
|     countRespectsLimit: Boolean! = false |  | ||||||
|   ): GetShotsResult! |   ): GetShotsResult! | ||||||
|   getShotsWithMetadata( |   getShotsWithMetadata( | ||||||
|     filterInput: FilterInput! |     filterInput: FilterInput! | ||||||
|     ids: [Int!] = null |     ids: [Int!] = null | ||||||
|     shotsPagination: GetShotsPagination = null |     shotsPagination: GetShotsPagination = null | ||||||
|     limit: Int! = 500 |     limit: Int! = 500 | ||||||
|     countRespectsLimit: Boolean! = false |  | ||||||
|   ): GetShotsResult! |   ): GetShotsResult! | ||||||
|   getShots( |   getShots( | ||||||
|     filterInput: FilterInput! |     filterInput: FilterInput! | ||||||
|     shotsPagination: GetShotsPagination = null |     shotsPagination: GetShotsPagination = null | ||||||
|     limit: Int! = 500 |     limit: Int! = 500 | ||||||
|     countRespectsLimit: Boolean! = false |  | ||||||
|   ): [ShotGQL!]! |   ): [ShotGQL!]! | ||||||
|   getShotsByIds(ids: [Int!]!): [ShotGQL!]! |   getShotsByIds(ids: [Int!]!): [ShotGQL!]! | ||||||
|  |   getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]! | ||||||
|   getUser(userId: Int!): UserGQL |   getUser(userId: Int!): UserGQL | ||||||
|   doesUsernameExist(candidateUsername: String!): Boolean! |   doesUsernameExist(candidateUsername: String!): Boolean! | ||||||
|   getLoggedInUser: UserGQL |   getLoggedInUser: UserGQL | ||||||
| @@ -70,29 +37,27 @@ type Query { | |||||||
|     limit: Int = null |     limit: Int = null | ||||||
|     after: String = null |     after: String = null | ||||||
|   ): [String!]! |   ): [String!]! | ||||||
|   getUsersMatching( |  | ||||||
|     matchString: String = null |  | ||||||
|     limit: Int = null |  | ||||||
|     after: String = null |  | ||||||
|   ): [UserGQL!]! |  | ||||||
|   getUserRelationshipsMatching( |   getUserRelationshipsMatching( | ||||||
|     userId: Int! |     userId: Int! | ||||||
|     matchString: String = null |     matchString: String = null | ||||||
|     limit: Int = 100 |     limit: Int = 100 | ||||||
|     after: String = null |     after: String = null | ||||||
|   ): UserRelationshipsResult! |   ): UserRelationshipsResult! | ||||||
|   getAvailableSubscriptionOptions: StripeSubscriptionOptionsGQL! |   getPlayTime(userId: Int!): UserPlayTimeGQL! | ||||||
|   getUserSubscriptionStatus: UserSubscriptionStatusGQL! |  | ||||||
|   getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL! |  | ||||||
|   getUserVideos( |   getUserVideos( | ||||||
|     userId: Int = null |     userId: Int = null | ||||||
|     limit: Int! = 5 |     limit: Int! = 5 | ||||||
|     after: String = null |     after: String = null | ||||||
|     filters: VideoFilterInput = null |     filters: VideoFilterInput = null | ||||||
|   ): VideoHistoryGQL! |   ): VideoHistoryGQL! | ||||||
|   getUserTags(includeRetiredTags: Boolean = false): [TagGQL!]! |   getUserTags: [TagGQL!]! | ||||||
|   getVideo(videoId: Int!, debuggingJson: JSON = null): VideoGQL! |   getVideo(videoId: Int!, debuggingJson: JSON = null): VideoGQL! | ||||||
|   getVideos(videoIds: [Int!]!): [VideoGQL!]! |   getVideos(videoIds: [Int!]!): [VideoGQL!]! | ||||||
|  |   getFeedVideos( | ||||||
|  |     limit: Int! = 5 | ||||||
|  |     after: String = null | ||||||
|  |     filters: VideoFilterInput = null | ||||||
|  |   ): VideoHistoryGQL! | ||||||
| } | } | ||||||
|  |  | ||||||
| type AggregateResultGQL { | type AggregateResultGQL { | ||||||
| @@ -195,7 +160,6 @@ input FilterInput @oneOf { | |||||||
|   shotDirection: [ShotDirectionEnum!] |   shotDirection: [ShotDirectionEnum!] | ||||||
|   videoId: [Int!] |   videoId: [Int!] | ||||||
|   userId: [Int!] |   userId: [Int!] | ||||||
|   runId: [Int!] |  | ||||||
|   username: [String!] |   username: [String!] | ||||||
|   fargoRating: FloatRangeFilter |   fargoRating: FloatRangeFilter | ||||||
|   make: [Boolean!] |   make: [Boolean!] | ||||||
| @@ -207,7 +171,6 @@ input FilterInput @oneOf { | |||||||
|   isLeftMiss: [Boolean!] |   isLeftMiss: [Boolean!] | ||||||
|   isRightMiss: [Boolean!] |   isRightMiss: [Boolean!] | ||||||
|   isDirect: [Boolean!] |   isDirect: [Boolean!] | ||||||
|   isBreakHeuristic: [Boolean!] |  | ||||||
|   tableSize: FloatRangeFilter |   tableSize: FloatRangeFilter | ||||||
|   bankAngle: FloatRangeFilter |   bankAngle: FloatRangeFilter | ||||||
|   bankDistance: FloatRangeFilter |   bankDistance: FloatRangeFilter | ||||||
| @@ -298,75 +261,63 @@ type DeployedConfigGQL { | |||||||
|   devMode: Boolean! |   devMode: Boolean! | ||||||
|   environment: String! |   environment: String! | ||||||
|   minimumAllowedAppVersion: String! |   minimumAllowedAppVersion: String! | ||||||
|   subscriptionGatingEnabled: Boolean! |  | ||||||
|   bannerMessages: [BannerGQL!]! |  | ||||||
| } | } | ||||||
|  |  | ||||||
| type BannerGQL { | type MakePercentageIntervalGQL { | ||||||
|   id: Int! |  | ||||||
|   message: String! |  | ||||||
|   color: String! |  | ||||||
|   kind: BannerKindEnum! |  | ||||||
|   dismissible: Boolean! |  | ||||||
|   priority: Int! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| enum BannerKindEnum { |  | ||||||
|   INFO |  | ||||||
|   WARNING |  | ||||||
|   ERROR |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type VideoHistoryGQL { |  | ||||||
|   videos: [VideoGQL!]! |  | ||||||
|   pageInfo: PageInfoGQL! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type VideoGQL { |  | ||||||
|   id: Int! |  | ||||||
|   owner: UserGQL |  | ||||||
|   name: String |  | ||||||
|   screenshotUri: String |  | ||||||
|   totalShotsMade: Int! |  | ||||||
|   totalShots: Int! |  | ||||||
|   makePercentage: Float! |   makePercentage: Float! | ||||||
|   medianRun: Float |   elapsedTime: Float! | ||||||
|   averageTimeBetweenShots: Float |  | ||||||
|   averageDifficulty: Float |  | ||||||
|   createdAt: DateTime |  | ||||||
|   updatedAt: DateTime |  | ||||||
|   shots: [ShotGQL!]! |  | ||||||
|   startTime: DateTime |  | ||||||
|   endTime: DateTime |  | ||||||
|   elapsedTime: Float |  | ||||||
|   framesPerSecond: Float! |  | ||||||
|   tableSize: Float! |  | ||||||
|   private: Boolean! |  | ||||||
|   stream: UploadStreamGQL |  | ||||||
|   playlist: HLSPlaylistGQL |  | ||||||
|   tags: [VideoTag!]! |  | ||||||
|   currentHomography: HomographyInfoGQL |  | ||||||
|   homographyHistory: [HomographyInfoGQL!]! |  | ||||||
|   currentProcessing: VideoProcessingGQL |  | ||||||
|   reactions: [ReactionGQL!]! |  | ||||||
|   comments: [CommentGQL!]! |  | ||||||
| } | } | ||||||
|  |  | ||||||
| type UserGQL { | type RequestedMedalsGQL { | ||||||
|   id: Int! |   distanceOver66: MedalGQL | ||||||
|   firebaseUid: String |   distanceOver78: MedalGQL | ||||||
|   username: String! |   distanceOver90: MedalGQL | ||||||
|   isAdmin: Boolean |   runLength3: MedalGQL | ||||||
|   fargoRating: Int |   runLength5: MedalGQL | ||||||
|   activeVideoId: Int |   runLength8: MedalGQL | ||||||
|   stripeCustomerId: String |   runLength10: MedalGQL | ||||||
|   profileImageUri: String |   runLength15: MedalGQL | ||||||
|   createdAt: DateTime |   runLength20: MedalGQL | ||||||
|   updatedAt: DateTime |   runLength25: MedalGQL | ||||||
|   videosPrivateByDefault: Boolean |   runLength30: MedalGQL | ||||||
|   agreesToMarketing: Boolean |   runLength40: MedalGQL | ||||||
|   following: [UserGQL!] |   runLength50: MedalGQL | ||||||
|   followers: [UserGQL!] |   totalMakes25: MedalGQL | ||||||
|  |   totalMakes50: MedalGQL | ||||||
|  |   totalMakes75: MedalGQL | ||||||
|  |   totalMakes100: MedalGQL | ||||||
|  |   totalMakes200: MedalGQL | ||||||
|  |   totalMakes300: MedalGQL | ||||||
|  |   totalMakes400: MedalGQL | ||||||
|  |   totalMakes500: MedalGQL | ||||||
|  |   totalMakes750: MedalGQL | ||||||
|  |   totalMakes1000: MedalGQL | ||||||
|  |   dayStreak2: MedalGQL | ||||||
|  |   dayStreak3: MedalGQL | ||||||
|  |   dayStreak4: MedalGQL | ||||||
|  |   dayStreak5: MedalGQL | ||||||
|  |   dayStreak6: MedalGQL | ||||||
|  |   dayStreak7: MedalGQL | ||||||
|  |   dayStreak14: MedalGQL | ||||||
|  |   dayStreak21: MedalGQL | ||||||
|  |   dayStreak30: MedalGQL | ||||||
|  |   dayStreak60: MedalGQL | ||||||
|  |   dayStreak90: MedalGQL | ||||||
|  | } | ||||||
|  |  | ||||||
|  | type MedalGQL { | ||||||
|  |   count: Int! | ||||||
|  | } | ||||||
|  |  | ||||||
|  | input MedalScope @oneOf { | ||||||
|  |   videoId: Int | ||||||
|  |   interval: TimeInterval | ||||||
|  | } | ||||||
|  |  | ||||||
|  | type GetShotsResult { | ||||||
|  |   shots: [ShotGQL!]! | ||||||
|  |   count: Int | ||||||
|  |   ids: [Int!]! | ||||||
| } | } | ||||||
|  |  | ||||||
| type ShotGQL { | type ShotGQL { | ||||||
| @@ -385,8 +336,6 @@ type ShotGQL { | |||||||
|   annotations: [ShotAnnotationGQL!]! |   annotations: [ShotAnnotationGQL!]! | ||||||
|   falsePositiveScore: Float |   falsePositiveScore: Float | ||||||
|   video: VideoGQL |   video: VideoGQL | ||||||
|   run: RunGQL |  | ||||||
|   runFeatures: RunFeaturesGQL |  | ||||||
| } | } | ||||||
|  |  | ||||||
| type CueObjectFeaturesGQL { | type CueObjectFeaturesGQL { | ||||||
| @@ -438,6 +387,20 @@ type SerializedShotPathsGQL { | |||||||
|   b64EncodedBuffer: String |   b64EncodedBuffer: String | ||||||
| } | } | ||||||
|  |  | ||||||
|  | type UserGQL { | ||||||
|  |   id: Int! | ||||||
|  |   firebaseUid: String | ||||||
|  |   username: String! | ||||||
|  |   isAdmin: Boolean | ||||||
|  |   fargoRating: Int | ||||||
|  |   activeVideoId: Int | ||||||
|  |   profileImageUri: String | ||||||
|  |   createdAt: DateTime | ||||||
|  |   updatedAt: DateTime | ||||||
|  |   following: [UserGQL!] | ||||||
|  |   followers: [UserGQL!] | ||||||
|  | } | ||||||
|  |  | ||||||
| type ShotAnnotationGQL { | type ShotAnnotationGQL { | ||||||
|   shotId: Int! |   shotId: Int! | ||||||
|   type: ShotAnnotationTypeGQL! |   type: ShotAnnotationTypeGQL! | ||||||
| @@ -453,19 +416,30 @@ type ShotAnnotationTypeGQL { | |||||||
|   name: String! |   name: String! | ||||||
| } | } | ||||||
|  |  | ||||||
| type RunGQL { | type VideoGQL { | ||||||
|   id: Int! |   id: Int! | ||||||
|   runLength: Int! |   owner: UserGQL | ||||||
|   videoId: Int! |   name: String | ||||||
|   userId: Int! |   screenshotUri: String | ||||||
|  |   totalShotsMade: Int! | ||||||
|  |   totalShots: Int! | ||||||
|  |   makePercentage: Float! | ||||||
|  |   medianRun: Float | ||||||
|  |   averageTimeBetweenShots: Float | ||||||
|  |   createdAt: DateTime | ||||||
|  |   updatedAt: DateTime | ||||||
|   shots: [ShotGQL!]! |   shots: [ShotGQL!]! | ||||||
|   video: VideoGQL! |   startTime: DateTime | ||||||
|   user: UserGQL! |   endTime: DateTime | ||||||
| } |   elapsedTime: Float | ||||||
|  |   framesPerSecond: Float! | ||||||
| type RunFeaturesGQL { |   tableSize: Float! | ||||||
|   runId: Int! |   stream: UploadStreamGQL | ||||||
|   indexInRun: Int! |   playlist: HLSPlaylistGQL | ||||||
|  |   tags: [VideoTag!]! | ||||||
|  |   currentHomography: HomographyInfoGQL | ||||||
|  |   homographyHistory: [HomographyInfoGQL!]! | ||||||
|  |   currentProcessing: VideoProcessingGQL | ||||||
| } | } | ||||||
|  |  | ||||||
| type UploadStreamGQL { | type UploadStreamGQL { | ||||||
| @@ -482,7 +456,6 @@ type UploadStreamGQL { | |||||||
|   createdAt: DateTime! |   createdAt: DateTime! | ||||||
|   updatedAt: DateTime! |   updatedAt: DateTime! | ||||||
|   segments: [UploadSegmentGQL!]! |   segments: [UploadSegmentGQL!]! | ||||||
|   clientUploadStatus: ClientUploadStatusEnum |  | ||||||
|   resolution: VideoResolutionGQL! |   resolution: VideoResolutionGQL! | ||||||
|   streamSegmentType: StreamSegmentTypeEnum! |   streamSegmentType: StreamSegmentTypeEnum! | ||||||
| } | } | ||||||
| @@ -507,11 +480,6 @@ type UploadSegmentGQL { | |||||||
|   linksRequested: Int! |   linksRequested: Int! | ||||||
| } | } | ||||||
|  |  | ||||||
| enum ClientUploadStatusEnum { |  | ||||||
|   UPLOAD_ENABLED |  | ||||||
|   UPLOAD_DISABLED |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type VideoResolutionGQL { | type VideoResolutionGQL { | ||||||
|   width: Int |   width: Int | ||||||
|   height: Int |   height: Int | ||||||
| @@ -538,7 +506,6 @@ type VideoTagClass { | |||||||
| } | } | ||||||
|  |  | ||||||
| type HomographyInfoGQL { | type HomographyInfoGQL { | ||||||
|   id: Int! |  | ||||||
|   frameIndex: Int! |   frameIndex: Int! | ||||||
|   crop: BoundingBoxGQL! |   crop: BoundingBoxGQL! | ||||||
|   pockets: [BoundingBoxGQL!]! |   pockets: [BoundingBoxGQL!]! | ||||||
| @@ -568,13 +535,9 @@ type IntPoint2D { | |||||||
| } | } | ||||||
|  |  | ||||||
| type VideoProcessingGQL { | type VideoProcessingGQL { | ||||||
|   id: Int! |  | ||||||
|   errors: [VideoProcessingErrorGQL!]! |   errors: [VideoProcessingErrorGQL!]! | ||||||
|   status: ProcessingStatusEnum! |   status: ProcessingStatusEnum! | ||||||
|   statuses: [VideoProcessingStatusGQL!]! |   statuses: [VideoProcessingStatusGQL!]! | ||||||
|   framesProcessed: Int |  | ||||||
|   currentSegment: Int |  | ||||||
|   progressPercentage: Float |  | ||||||
| } | } | ||||||
|  |  | ||||||
| type VideoProcessingErrorGQL { | type VideoProcessingErrorGQL { | ||||||
| @@ -602,213 +565,33 @@ type VideoProcessingStatusGQL { | |||||||
|   updatedAt: DateTime |   updatedAt: DateTime | ||||||
| } | } | ||||||
|  |  | ||||||
| type ReactionGQL { |  | ||||||
|   videoId: Int! |  | ||||||
|   user: UserGQL! |  | ||||||
|   reaction: ReactionEnum! |  | ||||||
|   createdAt: DateTime |  | ||||||
|   updatedAt: DateTime |  | ||||||
| } |  | ||||||
|  |  | ||||||
| enum ReactionEnum { |  | ||||||
|   LIKE |  | ||||||
|   HEART |  | ||||||
|   BULLSEYE |  | ||||||
|   HUNDRED |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type CommentGQL { |  | ||||||
|   id: Int! |  | ||||||
|   user: UserGQL! |  | ||||||
|   message: String! |  | ||||||
|   replies: [CommentGQL!]! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type PageInfoGQL { |  | ||||||
|   hasNextPage: Boolean! |  | ||||||
|   endCursor: String |  | ||||||
| } |  | ||||||
|  |  | ||||||
| enum IncludePrivateEnum { |  | ||||||
|   ALL |  | ||||||
|   MINE |  | ||||||
|   NONE |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input VideoFilterInput { |  | ||||||
|   isStreamCompleted: Boolean = null |  | ||||||
|   requireCursorCompletion: Boolean! = true |  | ||||||
|   createdAt: DateRangeFilter = null |  | ||||||
|   excludeVideosWithNoShots: Boolean = null |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input VideoFeedInputGQL @oneOf { |  | ||||||
|   followedByUserId: Int |  | ||||||
|   userId: Int |  | ||||||
|   allUsers: Boolean |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type MakePercentageIntervalGQL { |  | ||||||
|   makePercentage: Float! |  | ||||||
|   elapsedTime: Float! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type RunLeaderboardGQL { |  | ||||||
|   entries: [RunGQL!]! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type CountLeaderboardGQL { |  | ||||||
|   entries: [UserShotCountEntry!]! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type UserShotCountEntry { |  | ||||||
|   user: UserGQL! |  | ||||||
|   value: Int! |  | ||||||
|   total: Int! |  | ||||||
|   proportionMade: Float! |  | ||||||
|   videos: Int! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type RequestedMedalsGQL { |  | ||||||
|   distanceOver66: MedalGQL |  | ||||||
|   distanceOver78: MedalGQL |  | ||||||
|   distanceOver90: MedalGQL |  | ||||||
|   runLength3: MedalGQL |  | ||||||
|   runLength5: MedalGQL |  | ||||||
|   runLength8: MedalGQL |  | ||||||
|   runLength10: MedalGQL |  | ||||||
|   runLength15: MedalGQL |  | ||||||
|   runLength20: MedalGQL |  | ||||||
|   runLength25: MedalGQL |  | ||||||
|   runLength30: MedalGQL |  | ||||||
|   runLength40: MedalGQL |  | ||||||
|   runLength50: MedalGQL |  | ||||||
|   totalMakes25: MedalGQL @deprecated(reason: "no longer supported") |  | ||||||
|   totalMakes50: MedalGQL @deprecated(reason: "no longer supported") |  | ||||||
|   totalMakes75: MedalGQL @deprecated(reason: "no longer supported") |  | ||||||
|   totalMakes200: MedalGQL @deprecated(reason: "no longer supported") |  | ||||||
|   totalMakes300: MedalGQL @deprecated(reason: "no longer supported") |  | ||||||
|   totalMakes400: MedalGQL @deprecated(reason: "no longer supported") |  | ||||||
|   totalMakes750: MedalGQL @deprecated(reason: "no longer supported") |  | ||||||
|   totalMakes100: MedalGQL |  | ||||||
|   totalMakes500: MedalGQL |  | ||||||
|   totalMakes1000: MedalGQL |  | ||||||
|   totalMakes5000: MedalGQL |  | ||||||
|   totalMakes10000: MedalGQL |  | ||||||
|   dailyMakes50: MedalGQL |  | ||||||
|   dailyMakes100: MedalGQL |  | ||||||
|   dailyMakes150: MedalGQL |  | ||||||
|   dailyMakes200: MedalGQL |  | ||||||
|   dailyMakes250: MedalGQL |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type MedalGQL { |  | ||||||
|   count: Int! |  | ||||||
|   nickname: String |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input MedalScope @oneOf { |  | ||||||
|   videoId: Int |  | ||||||
|   interval: TimeInterval |  | ||||||
|     @deprecated(reason: "NO LONGER SUPPORTED, USE DATETIME_RANGE") |  | ||||||
|   datetimeRange: DatetimeRangeAggregationInput |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type GetRunsResult { |  | ||||||
|   runs: [RunGQL!]! |  | ||||||
|   count: Int |  | ||||||
|   runIds: [Int!]! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input RunFilterInput { |  | ||||||
|   videoId: [Int!] |  | ||||||
|   userId: [Int!] |  | ||||||
|   username: [String!] |  | ||||||
|   andFilters: [RunFilterInput!] |  | ||||||
|   orFilters: [RunFilterInput!] |  | ||||||
|   notFilter: RunFilterInput |  | ||||||
|   tableSize: FloatRangeFilter |  | ||||||
|   createdAt: DateRangeFilter |  | ||||||
|   runLength: FloatRangeFilter |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input GetRunsOrdering { |  | ||||||
|   orderings: [RunsOrderingComponent!]! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input RunsOrderingComponent @oneOf { |  | ||||||
|   runLength: IntOrdering |  | ||||||
|   videoId: IntOrdering |  | ||||||
|   videoCreation: DatetimeOrdering |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input IntOrdering { |  | ||||||
|   descending: Boolean! = true |  | ||||||
|   startingAt: Int = null |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input DatetimeOrdering { |  | ||||||
|   descending: Boolean! = true |  | ||||||
|   startingAt: DateTime = null |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type TableStateGQL { |  | ||||||
|   identifierToPosition: [[Float!]!]! |  | ||||||
|   homography: HomographyInfoGQL |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input HomographyInputGQL { |  | ||||||
|   crop: BoundingBoxInputGQL! |  | ||||||
|   pockets: [BoundingBoxInputGQL!]! |  | ||||||
|   sourcePoints: PocketPointsInputGQL! |  | ||||||
|   destPoints: PocketPointsInputGQL! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input BoundingBoxInputGQL { |  | ||||||
|   left: Float! |  | ||||||
|   top: Float! |  | ||||||
|   width: Float! |  | ||||||
|   height: Float! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input PocketPointsInputGQL { |  | ||||||
|   topLeft: IntPoint2DInput! |  | ||||||
|   topSide: IntPoint2DInput! |  | ||||||
|   topRight: IntPoint2DInput! |  | ||||||
|   bottomLeft: IntPoint2DInput! |  | ||||||
|   bottomSide: IntPoint2DInput! |  | ||||||
|   bottomRight: IntPoint2DInput! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input IntPoint2DInput { |  | ||||||
|   x: Int! |  | ||||||
|   y: Int! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type GetShotsResult { |  | ||||||
|   shots: [ShotGQL!]! |  | ||||||
|   count: Int |  | ||||||
|   ids: [Int!]! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input GetShotsOrdering { | input GetShotsOrdering { | ||||||
|   orderings: [ShotsOrderingComponent!]! |   orderings: [ShotsOrderingComponent!]! | ||||||
| } | } | ||||||
|  |  | ||||||
| input ShotsOrderingComponent @oneOf { | input ShotsOrderingComponent @oneOf { | ||||||
|   videoCreation: DatetimeOrdering |   videoCreation: DatetimeShotOrdering | ||||||
|   marginOfError: FloatOrdering |   marginOfError: FloatShotOrdering | ||||||
|   difficulty: FloatOrdering |   videoId: IntShotOrdering | ||||||
|   videoId: IntOrdering |   startFrame: IntShotOrdering | ||||||
|   startFrame: IntOrdering |   runLength: IntShotOrdering | ||||||
|   runLength: IntOrdering |  | ||||||
| } | } | ||||||
|  |  | ||||||
| input FloatOrdering { | input DatetimeShotOrdering { | ||||||
|  |   descending: Boolean! = true | ||||||
|  |   startingAt: DateTime = null | ||||||
|  | } | ||||||
|  |  | ||||||
|  | input FloatShotOrdering { | ||||||
|   descending: Boolean! = true |   descending: Boolean! = true | ||||||
|   startingAt: Float = null |   startingAt: Float = null | ||||||
| } | } | ||||||
|  |  | ||||||
|  | input IntShotOrdering { | ||||||
|  |   descending: Boolean! = true | ||||||
|  |   startingAt: Int = null | ||||||
|  | } | ||||||
|  |  | ||||||
| input GetShotsPagination { | input GetShotsPagination { | ||||||
|   createdAfter: CreatedAfter! |   createdAfter: CreatedAfter! | ||||||
|   startFrameAfter: Int! |   startFrameAfter: Int! | ||||||
| @@ -830,63 +613,29 @@ type UserRelationship { | |||||||
|   toUserIsFollowedBy: Boolean! |   toUserIsFollowedBy: Boolean! | ||||||
| } | } | ||||||
|  |  | ||||||
| type StripeSubscriptionOptionsGQL { |  | ||||||
|   products: [StripeProductGQL!]! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type StripeProductGQL { |  | ||||||
|   id: String! |  | ||||||
|   name: String! |  | ||||||
|   description: String |  | ||||||
|   active: Boolean! |  | ||||||
|   prices: [StripePriceGQL!]! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type StripePriceGQL { |  | ||||||
|   id: String! |  | ||||||
|   currency: String! |  | ||||||
|   unitAmount: Int |  | ||||||
|   recurringInterval: String |  | ||||||
|   recurringIntervalCount: Int |  | ||||||
|   type: String! |  | ||||||
|   active: Boolean! |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type UserSubscriptionStatusGQL { |  | ||||||
|   hasActiveSubscription: Boolean! |  | ||||||
|   subscriptionStatus: StripeSubscriptionStatusEnum |  | ||||||
|   currentPeriodStart: DateTime |  | ||||||
|   currentPeriodEnd: DateTime |  | ||||||
|   validUntil: DateTime |  | ||||||
|   stripePriceId: String |  | ||||||
|   stripeSubscriptionId: String |  | ||||||
| } |  | ||||||
|  |  | ||||||
| enum StripeSubscriptionStatusEnum { |  | ||||||
|   INCOMPLETE |  | ||||||
|   INCOMPLETE_EXPIRED |  | ||||||
|   TRIALING |  | ||||||
|   ACTIVE |  | ||||||
|   PAST_DUE |  | ||||||
|   CANCELED |  | ||||||
|   UNPAID |  | ||||||
|   PAUSED |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type UserPlayTimeGQL { | type UserPlayTimeGQL { | ||||||
|   totalSeconds: Float! |   totalSeconds: Float! | ||||||
| } | } | ||||||
|  |  | ||||||
| type TagGQL { | type VideoHistoryGQL { | ||||||
|   id: Int! |   videos: [VideoGQL!]! | ||||||
|   name: String! |   pageInfo: PageInfoGQL! | ||||||
|   tagClasses: [TagClassGQL!] |  | ||||||
|   retired: Boolean! |  | ||||||
| } | } | ||||||
|  |  | ||||||
| type TagClassGQL { | type PageInfoGQL { | ||||||
|   id: Int! |   hasNextPage: Boolean! | ||||||
|  |   endCursor: String | ||||||
|  | } | ||||||
|  |  | ||||||
|  | input VideoFilterInput { | ||||||
|  |   isStreamCompleted: Boolean = null | ||||||
|  |   requireCursorCompletion: Boolean! = true | ||||||
|  | } | ||||||
|  |  | ||||||
|  | type TagGQL { | ||||||
|   name: String! |   name: String! | ||||||
|  |   id: Int! | ||||||
|  |   group: String | ||||||
| } | } | ||||||
|  |  | ||||||
| """ | """ | ||||||
| @@ -900,21 +649,6 @@ scalar JSON | |||||||
| type Mutation { | type Mutation { | ||||||
|   createBucketSet(params: CreateBucketSetInput!): BucketSetGQL! |   createBucketSet(params: CreateBucketSetInput!): BucketSetGQL! | ||||||
|   setLoggerLevel(path: String!, level: String!): Boolean! |   setLoggerLevel(path: String!, level: String!): Boolean! | ||||||
|   reactToVideo(videoId: Int!, reaction: ReactionEnum): Boolean! |  | ||||||
|   commentOnVideo( |  | ||||||
|     videoId: Int! |  | ||||||
|     message: String! |  | ||||||
|     parentCommentId: Int |  | ||||||
|   ): Boolean! |  | ||||||
|   editComment(videoId: Int!, commentId: Int!, newMessage: String!): Boolean! |  | ||||||
|   deleteComment(videoId: Int!, commentId: Int!): Boolean! |  | ||||||
|   blockContent(videoId: Int!): Boolean! |  | ||||||
|   blockUser(userId: Int!): Boolean! |  | ||||||
|   reportContent( |  | ||||||
|     videoId: Int! |  | ||||||
|     reason: ReportReasonEnum! |  | ||||||
|     customReason: String = null |  | ||||||
|   ): Boolean! |  | ||||||
|   addAnnotationToShot( |   addAnnotationToShot( | ||||||
|     shotId: Int! |     shotId: Int! | ||||||
|     annotationName: String! |     annotationName: String! | ||||||
| @@ -924,10 +658,6 @@ type Mutation { | |||||||
|     shotId: Int! |     shotId: Int! | ||||||
|     annotations: [UpdateAnnotationInputGQL!]! |     annotations: [UpdateAnnotationInputGQL!]! | ||||||
|   ): UpdateShotAnnotationReturn! |   ): UpdateShotAnnotationReturn! | ||||||
|   editShot( |  | ||||||
|     shotId: Int! |  | ||||||
|     fieldsToEdit: EditableShotFieldInputGQL! |  | ||||||
|   ): EditShotReturn! |  | ||||||
|   getProfileImageUploadLink( |   getProfileImageUploadLink( | ||||||
|     fileExt: String = ".png" |     fileExt: String = ".png" | ||||||
|   ): GetProfileUploadLinkReturn! |   ): GetProfileUploadLinkReturn! | ||||||
| @@ -935,12 +665,6 @@ type Mutation { | |||||||
|   editUser(input: EditUserInputGQL!): UserGQL! |   editUser(input: EditUserInputGQL!): UserGQL! | ||||||
|   followUser(followedUserId: Int!): UserGQL! |   followUser(followedUserId: Int!): UserGQL! | ||||||
|   unfollowUser(followedUserId: Int!): UserGQL! |   unfollowUser(followedUserId: Int!): UserGQL! | ||||||
|   retireTags(tagIds: [Int!]!): Boolean! |  | ||||||
|   ensureStripeCustomerExists: UserGQL! |  | ||||||
|   deleteUser: Boolean! |  | ||||||
|   createSubscription(priceId: String!): CreateSubscriptionResultGQL! |  | ||||||
|   cancelSubscription: UserSubscriptionStatusGQL! |  | ||||||
|   findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL |  | ||||||
|   createUploadStream( |   createUploadStream( | ||||||
|     videoMetadata: VideoMetadataInput! |     videoMetadata: VideoMetadataInput! | ||||||
|   ): CreateUploadStreamReturn! |   ): CreateUploadStreamReturn! | ||||||
| @@ -953,7 +677,6 @@ type Mutation { | |||||||
|   ): Boolean! |   ): Boolean! | ||||||
|   editUploadStream(videoId: Int!, videoMetadata: VideoMetadataInput!): Boolean! |   editUploadStream(videoId: Int!, videoMetadata: VideoMetadataInput!): Boolean! | ||||||
|   deleteVideo(videoId: Int!): Boolean! |   deleteVideo(videoId: Int!): Boolean! | ||||||
|   deleteTags(videoId: Int!, tagsToDelete: [VideoTagInput!]!): Boolean! |  | ||||||
| } | } | ||||||
|  |  | ||||||
| input CreateBucketSetInput { | input CreateBucketSetInput { | ||||||
| @@ -962,15 +685,6 @@ input CreateBucketSetInput { | |||||||
|   buckets: [BucketInputGQL!]! |   buckets: [BucketInputGQL!]! | ||||||
| } | } | ||||||
|  |  | ||||||
| enum ReportReasonEnum { |  | ||||||
|   SPAM |  | ||||||
|   NUDITY |  | ||||||
|   VIOLENCE |  | ||||||
|   HATE |  | ||||||
|   COPYRIGHT |  | ||||||
|   OTHER |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type AddShotAnnotationReturn { | type AddShotAnnotationReturn { | ||||||
|   value: SuccessfulAddAddShotAnnotationErrors! |   value: SuccessfulAddAddShotAnnotationErrors! | ||||||
| } | } | ||||||
| @@ -1010,22 +724,6 @@ input UpdateAnnotationInputGQL { | |||||||
|   notes: String = null |   notes: String = null | ||||||
| } | } | ||||||
|  |  | ||||||
| type EditShotReturn { |  | ||||||
|   shot: ShotGQL |  | ||||||
|   error: DoesNotOwnShotErr |  | ||||||
| } |  | ||||||
|  |  | ||||||
| input EditableShotFieldInputGQL { |  | ||||||
|   intendedPocketType: PocketEnum |  | ||||||
|   shotDirection: ShotDirectionEnum |  | ||||||
|   spinType: SpinTypeEnum |  | ||||||
|   targetPocketAngleDirection: ShotDirectionEnum |  | ||||||
|   make: Boolean |  | ||||||
|   backcut: Boolean |  | ||||||
|   excludeFromStats: Boolean |  | ||||||
|   notes: String |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type GetProfileUploadLinkReturn { | type GetProfileUploadLinkReturn { | ||||||
|   value: UploadLinkGetProfileUploadLinkErrors! |   value: UploadLinkGetProfileUploadLinkErrors! | ||||||
| } | } | ||||||
| @@ -1055,13 +753,6 @@ type TooManyProfileImageUploadsErr { | |||||||
| input EditUserInputGQL { | input EditUserInputGQL { | ||||||
|   username: String = null |   username: String = null | ||||||
|   fargoRating: Int = null |   fargoRating: Int = null | ||||||
|   videosPrivateByDefault: Boolean = null |  | ||||||
|   agreesToMarketing: Boolean = null |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type CreateSubscriptionResultGQL { |  | ||||||
|   checkoutUrl: String! |  | ||||||
|   sessionId: String! |  | ||||||
| } | } | ||||||
|  |  | ||||||
| type CreateUploadStreamReturn { | type CreateUploadStreamReturn { | ||||||
| @@ -1073,18 +764,10 @@ input VideoMetadataInput { | |||||||
|   startTime: DateTime = null |   startTime: DateTime = null | ||||||
|   endTime: DateTime = null |   endTime: DateTime = null | ||||||
|   gameType: String = null |   gameType: String = null | ||||||
|     @deprecated(reason: "`game_type` is deprecated. Use `tags` instead.") |  | ||||||
|  |  | ||||||
|   """ |  | ||||||
|   A list of tags associated with the video. Replace `game_type` |  | ||||||
|   """ |  | ||||||
|   tags: [VideoTagInput!] = null |  | ||||||
|   tableSize: Float = null |   tableSize: Float = null | ||||||
|   lastIntendedSegmentBound: Int = null |   lastIntendedSegmentBound: Int = null | ||||||
|   streamSegmentType: StreamSegmentTypeEnum = null |   streamSegmentType: StreamSegmentTypeEnum = null | ||||||
|   private: Boolean = null |  | ||||||
|   endStream: Boolean! = false |   endStream: Boolean! = false | ||||||
|   clientUploadStatus: ClientUploadStatusEnum = null |  | ||||||
|   resolution: VideoResolution = null |   resolution: VideoResolution = null | ||||||
|   framesPerSecond: Float = null |   framesPerSecond: Float = null | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								yarn.lock
									
									
									
									
									
								
							| @@ -10,10 +10,10 @@ | |||||||
|     "@jridgewell/gen-mapping" "^0.3.0" |     "@jridgewell/gen-mapping" "^0.3.0" | ||||||
|     "@jridgewell/trace-mapping" "^0.3.9" |     "@jridgewell/trace-mapping" "^0.3.9" | ||||||
|  |  | ||||||
| "@apollo/client@^3.11.10": | "@apollo/client@^3.9.2": | ||||||
|   version "3.12.3" |   version "3.9.2" | ||||||
|   resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.12.3.tgz#0d252749baad8328e06883fe118dc7e73e3bbb1f" |   resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.9.2.tgz#96edf2c212f828bad1ef3d84234fa473c5a27ff8" | ||||||
|   integrity sha512-KZ5zymRdb8bMbGUb1wP2U04ff7qIGgaC1BCdCVC+IPFiXkxEhHBc5fDEQOwAUT+vUo9KbBh3g7QK/JCOswn59w== |   integrity sha512-Zw9WvXjqhpbgkvAvnj52vstOWwM0iedKWtn1hSq1cODQyoe1CF2uFwMYFI7l56BrAY9CzLi6MQA0AhxpgJgvxw== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@graphql-typed-document-node/core" "^3.1.1" |     "@graphql-typed-document-node/core" "^3.1.1" | ||||||
|     "@wry/caches" "^1.0.0" |     "@wry/caches" "^1.0.0" | ||||||
| @@ -23,7 +23,7 @@ | |||||||
|     hoist-non-react-statics "^3.3.2" |     hoist-non-react-statics "^3.3.2" | ||||||
|     optimism "^0.18.0" |     optimism "^0.18.0" | ||||||
|     prop-types "^15.7.2" |     prop-types "^15.7.2" | ||||||
|     rehackt "^0.1.0" |     rehackt "0.0.3" | ||||||
|     response-iterator "^0.2.6" |     response-iterator "^0.2.6" | ||||||
|     symbol-observable "^4.0.0" |     symbol-observable "^4.0.0" | ||||||
|     ts-invariant "^0.10.3" |     ts-invariant "^0.10.3" | ||||||
| @@ -2633,10 +2633,10 @@ regenerator-runtime@^0.14.0: | |||||||
|   resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" |   resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" | ||||||
|   integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== |   integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== | ||||||
|  |  | ||||||
| rehackt@^0.1.0: | rehackt@0.0.3: | ||||||
|   version "0.1.0" |   version "0.0.3" | ||||||
|   resolved "https://registry.yarnpkg.com/rehackt/-/rehackt-0.1.0.tgz#a7c5e289c87345f70da8728a7eb878e5d03c696b" |   resolved "https://registry.yarnpkg.com/rehackt/-/rehackt-0.0.3.tgz#1ea454620d4641db8342e2db44595cf0e7ac6aa0" | ||||||
|   integrity sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw== |   integrity sha512-aBRHudKhOWwsTvCbSoinzq+Lej/7R8e8UoPvLZo5HirZIIBLGAgdG7SL9QpdcBoQ7+3QYPi3lRLknAzXBlhZ7g== | ||||||
|  |  | ||||||
| relay-runtime@12.0.0: | relay-runtime@12.0.0: | ||||||
|   version "12.0.0" |   version "12.0.0" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user