All checks were successful
Tests / Tests (pull_request) Successful in 10s
Backs the multi-player vs UI: feed cards and the detail page both
read `video.playerSummaries`, a per-cluster rollup with username,
profile image, representative full-frame URL, makes/total/percentage.
- PlayerSummaryFields fragment in shooter.gql
- VideoCardFields (feed) and GetVideoDetails (detail) include
playerSummaries via the new fragment
- VideoCardFields tag selection extended to include tagClasses,
needed for the FE's player_count detection
Generated by `just gql` from the BE additions in railbird PR
dean/video-player-summaries.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
130 lines
2.1 KiB
GraphQL
130 lines
2.1 KiB
GraphQL
# DO NOT USE: use getVideoFeed instead
|
|
query GetFeed(
|
|
$limit: Int! = 5
|
|
$after: String = null
|
|
$filters: VideoFilterInput = null
|
|
) {
|
|
getUserVideos(limit: $limit, after: $after, filters: $filters) {
|
|
videos {
|
|
...VideoCardFields
|
|
}
|
|
pageInfo {
|
|
hasNextPage
|
|
endCursor
|
|
}
|
|
}
|
|
}
|
|
|
|
fragment UserSocialsFields on UserGQL {
|
|
id
|
|
username
|
|
profileImageUri
|
|
isFollowedByCurrentUser
|
|
}
|
|
|
|
fragment VideoCardFields on VideoGQL {
|
|
id
|
|
owner {
|
|
id
|
|
username
|
|
profileImageUri
|
|
}
|
|
name
|
|
screenshotUri
|
|
totalShots
|
|
makePercentage
|
|
averageTimeBetweenShots
|
|
averageDifficulty
|
|
startTime
|
|
private
|
|
elapsedTime
|
|
stream {
|
|
id
|
|
lastIntendedSegmentBound
|
|
streamSegmentType
|
|
}
|
|
tableSize
|
|
pocketSize
|
|
tags {
|
|
name
|
|
tagClasses {
|
|
name
|
|
}
|
|
}
|
|
playerSummaries {
|
|
...PlayerSummaryFields
|
|
}
|
|
currentProcessing {
|
|
id
|
|
status
|
|
}
|
|
reactions {
|
|
videoId
|
|
user {
|
|
...UserSocialsFields
|
|
}
|
|
reaction
|
|
}
|
|
comments {
|
|
id
|
|
message
|
|
user {
|
|
...UserSocialsFields
|
|
}
|
|
replies {
|
|
id
|
|
message
|
|
user {
|
|
...UserSocialsFields
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Lightweight version of GetVideoFeed for counting sessions only
|
|
query GetVideoFeedSessionCount(
|
|
$limit: Int! = 100
|
|
$filters: VideoFilterInput = null
|
|
$includePrivate: IncludePrivateEnum = MINE
|
|
$feedInput: VideoFeedInputGQL = null
|
|
) {
|
|
getFeedVideos(
|
|
limit: $limit
|
|
filters: $filters
|
|
includePrivate: $includePrivate
|
|
feedInput: $feedInput
|
|
) {
|
|
videos {
|
|
id
|
|
totalShots
|
|
}
|
|
}
|
|
}
|
|
|
|
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 {
|
|
hasNextPage
|
|
endCursor
|
|
}
|
|
hasFollowing
|
|
}
|
|
}
|