Compare commits

..

1 Commits

Author SHA1 Message Date
2c0f74f840 id in homographyinfo fragment 2024-11-22 10:59:23 -08:00
15 changed files with 100 additions and 1736 deletions

View File

@ -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",

View File

@ -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 {

File diff suppressed because it is too large Load Diff

View File

@ -27,8 +27,6 @@ fragment VideoCardFields on VideoGQL {
totalShotsMade totalShotsMade
totalShots totalShots
makePercentage makePercentage
averageTimeBetweenShots
averageDifficulty
createdAt createdAt
updatedAt updatedAt
startTime startTime
@ -38,7 +36,6 @@ fragment VideoCardFields on VideoGQL {
screenshotUri screenshotUri
stream { stream {
id id
lastIntendedSegmentBound
isCompleted isCompleted
} }
tableSize tableSize
@ -58,20 +55,6 @@ fragment VideoCardFields on VideoGQL {
status status
} }
} }
reactions {
videoId
user {
id
username
profileImageUri
followers {
id
username
profileImageUri
}
}
reaction
}
} }
query GetVideoFeed( query GetVideoFeed(
@ -79,16 +62,12 @@ query GetVideoFeed(
$after: String = null $after: String = null
$filters: VideoFilterInput = null $filters: VideoFilterInput = null
$includeCallersVideos: Boolean = null $includeCallersVideos: Boolean = null
$includePrivate: IncludePrivateEnum = MINE
$feedInput: VideoFeedInputGQL = null
) { ) {
getFeedVideos( getFeedVideos(
limit: $limit limit: $limit
after: $after after: $after
filters: $filters filters: $filters
includeCallersVideos: $includeCallersVideos includeCallersVideos: $includeCallersVideos
includePrivate: $includePrivate
feedInput: $feedInput
) { ) {
videos { videos {
...VideoCardFields ...VideoCardFields

View File

@ -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
}
}
}
}

View File

@ -5,6 +5,9 @@ fragment MedalFields on MedalGQL {
query getMedals($scope: MedalScope!, $userId: Int) { query getMedals($scope: MedalScope!, $userId: Int) {
getMedals(scope: $scope, userId: $userId) { getMedals(scope: $scope, userId: $userId) {
distanceOver66 {
...MedalFields
}
distanceOver78 { distanceOver78 {
...MedalFields ...MedalFields
} }
@ -44,18 +47,19 @@ query getMedals($scope: MedalScope!, $userId: Int) {
totalMakes100 { totalMakes100 {
...MedalFields ...MedalFields
} }
totalMakes500 { # missing assets
...MedalFields # totalMakes500 {
} # ...MedalFields
totalMakes1000 { # }
...MedalFields # totalMakes1000 {
} # ...MedalFields
totalMakes5000 { # }
...MedalFields # totalMakes5000 {
} # ...MedalFields
totalMakes10000 { # }
...MedalFields # totalMakes10000 {
} # ...MedalFields
# }
dailyMakes50 { dailyMakes50 {
...MedalFields ...MedalFields
} }
@ -68,8 +72,9 @@ query getMedals($scope: MedalScope!, $userId: Int) {
dailyMakes200 { dailyMakes200 {
...MedalFields ...MedalFields
} }
dailyMakes250 { # missing asset
...MedalFields # dailyMakes250 {
} # ...MedalFields
# }
} }
} }

View File

@ -1,3 +0,0 @@
mutation ReactToVideo($videoId: Int!, $reaction: ReactionEnum) {
reactToVideo(videoId: $videoId, reaction: $reaction)
}

View File

@ -1,28 +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
}
}

View File

@ -139,14 +139,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
} }
@ -186,15 +178,3 @@ fragment ShotWithAllFeatures on ShotGQL {
notes notes
} }
} }
mutation EditShot($shotId: Int!, $fieldsToEdit: EditableShotFieldInputGQL!) {
editShot(shotId: $shotId, fieldsToEdit: $fieldsToEdit) {
error {
shotId
msg
}
shot {
...ShotWithAllFeatures
}
}
}

View File

@ -1,7 +0,0 @@
mutation RetireTags($tagIds: [Int!]!) {
retireTags(tagIds: $tagIds)
}
mutation DeleteTags($videoId: Int!, $tagsToDelete: [VideoTagInput!]!) {
deleteTags(videoId: $videoId, tagsToDelete: $tagsToDelete)
}

View File

@ -21,19 +21,27 @@ 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
query GetUser($userId: Int!) { profileImageUri
getUser(userId: $userId) { fargoRating
...UserFragment activeVideoId
createdAt
updatedAt
videosPrivateByDefault
} }
} }
@ -66,7 +74,6 @@ query getUserRelationshipsMatching(
relationships { relationships {
toUser { toUser {
username username
profileImageUri
id id
} }
toUserFollows toUserFollows
@ -79,10 +86,6 @@ query GetUserTags {
getUserTags { getUserTags {
id id
name name
tagClasses {
id
name
}
} }
} }
@ -122,12 +125,10 @@ query getUserFollowingFollowers {
following { following {
id id
username username
profileImageUri
} }
followers { followers {
id id
username username
profileImageUri
} }
} }
} }
@ -156,16 +157,3 @@ mutation editUser(
videosPrivateByDefault videosPrivateByDefault
} }
} }
fragment UserFragment on UserGQL {
id
firebaseUid
username
isAdmin
profileImageUri
fargoRating
activeVideoId
createdAt
updatedAt
videosPrivateByDefault
}

View File

@ -36,7 +36,6 @@ query GetVideoUpdatePageDetails($videoId: Int!) {
makePercentage makePercentage
elapsedTime elapsedTime
tableSize tableSize
private
tags { tags {
tagClasses { tagClasses {
name name
@ -66,7 +65,6 @@ query GetVideoDetails($videoId: Int!) {
createdAt createdAt
updatedAt updatedAt
tableSize tableSize
private
owner { owner {
id id
firebaseUid firebaseUid
@ -216,23 +214,6 @@ 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!) { mutation FindPrerecordTableLayout($b64Image: String!, $videoId: Int!) {
findPrerecordTableLayout(b64Image: $b64Image, videoId: $videoId) { findPrerecordTableLayout(b64Image: $b64Image, videoId: $videoId) {

View File

@ -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

View File

@ -60,27 +60,15 @@ type Query {
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( getFeedVideos(
limit: Int! = 5 limit: Int! = 5
after: String = null after: String = null
includePrivate: IncludePrivateEnum! = MINE
includeCallersVideos: Boolean = true includeCallersVideos: Boolean = true
filters: VideoFilterInput = null filters: VideoFilterInput = null
feedInput: VideoFeedInputGQL = null
): VideoHistoryGQL! ): VideoHistoryGQL!
getLongestRunsLeaderboard(
interval: TimeInterval = null
when: DateTime = null
limit: Int! = 100
requiredTags: [String!] = null
): RunLeaderboardGQL!
getMakesLeaderboard(
interval: TimeInterval = null
when: DateTime = null
): CountLeaderboardGQL!
} }
type AggregateResultGQL { type AggregateResultGQL {
@ -183,7 +171,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!]
@ -195,7 +182,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
@ -334,8 +320,6 @@ type MedalGQL {
input MedalScope @oneOf { input MedalScope @oneOf {
videoId: Int videoId: Int
interval: TimeInterval interval: TimeInterval
@deprecated(reason: "NO LONGER SUPPORTED, USE DATETIME_RANGE")
datetimeRange: DatetimeRangeAggregationInput
} }
type GetRunsResult { type GetRunsResult {
@ -350,8 +334,6 @@ type RunGQL {
videoId: Int! videoId: Int!
userId: Int! userId: Int!
shots: [ShotGQL!]! shots: [ShotGQL!]!
video: VideoGQL!
user: UserGQL!
} }
type ShotGQL { type ShotGQL {
@ -370,8 +352,6 @@ type ShotGQL {
annotations: [ShotAnnotationGQL!]! annotations: [ShotAnnotationGQL!]!
falsePositiveScore: Float falsePositiveScore: Float
video: VideoGQL video: VideoGQL
run: RunGQL
runFeatures: RunFeaturesGQL
} }
type CueObjectFeaturesGQL { type CueObjectFeaturesGQL {
@ -463,7 +443,6 @@ type VideoGQL {
makePercentage: Float! makePercentage: Float!
medianRun: Float medianRun: Float
averageTimeBetweenShots: Float averageTimeBetweenShots: Float
averageDifficulty: Float
createdAt: DateTime createdAt: DateTime
updatedAt: DateTime updatedAt: DateTime
shots: [ShotGQL!]! shots: [ShotGQL!]!
@ -479,7 +458,6 @@ type VideoGQL {
currentHomography: HomographyInfoGQL currentHomography: HomographyInfoGQL
homographyHistory: [HomographyInfoGQL!]! homographyHistory: [HomographyInfoGQL!]!
currentProcessing: VideoProcessingGQL currentProcessing: VideoProcessingGQL
reactions: [ReactionGQL!]!
} }
type UploadStreamGQL { type UploadStreamGQL {
@ -613,26 +591,6 @@ 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 RunFeaturesGQL {
runId: Int!
indexInRun: Int!
}
input RunFilterInput { input RunFilterInput {
videoId: [Int!] videoId: [Int!]
userId: [Int!] userId: [Int!]
@ -678,7 +636,6 @@ input GetShotsOrdering {
input ShotsOrderingComponent @oneOf { input ShotsOrderingComponent @oneOf {
videoCreation: DatetimeOrdering videoCreation: DatetimeOrdering
marginOfError: FloatOrdering marginOfError: FloatOrdering
difficulty: FloatOrdering
videoId: IntOrdering videoId: IntOrdering
startFrame: IntOrdering startFrame: IntOrdering
runLength: IntOrdering runLength: IntOrdering
@ -732,15 +689,9 @@ type PageInfoGQL {
} }
type TagGQL { type TagGQL {
id: Int!
name: String! name: String!
tagClasses: [TagClassGQL!]
retired: Boolean!
}
type TagClassGQL {
id: Int! id: Int!
name: String! group: String
} }
""" """
@ -751,41 +702,9 @@ scalar JSON
url: "https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf" url: "https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf"
) )
enum IncludePrivateEnum {
ALL
MINE
NONE
}
input VideoFeedInputGQL @oneOf {
followedByUserId: Int
userId: Int
allUsers: Boolean
}
type RunLeaderboardGQL {
entries: [RunGQL!]!
}
type CountLeaderboardGQL {
entries: [UserShotCountEntry!]!
}
type UserShotCountEntry {
user: UserGQL!
value: Int!
total: Int!
proportionMade: Float!
videos: Int!
}
type Mutation { type Mutation {
createBucketSet(params: CreateBucketSetInput!): BucketSetGQL! createBucketSet(params: CreateBucketSetInput!): BucketSetGQL!
setLoggerLevel(path: String!, level: String!): Boolean! setLoggerLevel(path: String!, level: String!): Boolean!
editShot(
shotId: Int!
fieldsToEdit: EditableShotFieldInputGQL!
): EditShotReturn!
addAnnotationToShot( addAnnotationToShot(
shotId: Int! shotId: Int!
annotationName: String! annotationName: String!
@ -802,7 +721,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!
findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL
createUploadStream( createUploadStream(
videoMetadata: VideoMetadataInput! videoMetadata: VideoMetadataInput!
@ -816,8 +734,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!
reactToVideo(videoId: Int!, reaction: ReactionEnum): Boolean!
} }
input CreateBucketSetInput { input CreateBucketSetInput {
@ -826,27 +742,6 @@ input CreateBucketSetInput {
buckets: [BucketInputGQL!]! 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 { type AddShotAnnotationReturn {
value: SuccessfulAddAddShotAnnotationErrors! value: SuccessfulAddAddShotAnnotationErrors!
} }
@ -867,6 +762,11 @@ union DoesNotOwnShotErrOtherErrorNeedsNote =
DoesNotOwnShotErr DoesNotOwnShotErr
| OtherErrorNeedsNote | OtherErrorNeedsNote
type DoesNotOwnShotErr {
shotId: Int!
msg: String
}
type OtherErrorNeedsNote { type OtherErrorNeedsNote {
msg: String msg: String
} }
@ -922,12 +822,6 @@ 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

View File

@ -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"