Compare commits

...

3 Commits

Author SHA1 Message Date
Dean Wenstrand
f4c5fcedd6 Add followingCount to GetVideoFeed payload
All checks were successful
Tests / Tests (pull_request) Successful in 9s
Surfaces how many leading feed videos come from followed users so the
client can place the 'Trending' section divider in the blended home feed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 16:46:21 -07:00
07ca121a3e Merge pull request 'Add spinTypeBreakdown (draw/center/follow) to PlayerSummaryFields' (#259) from dean/player-spin-types into master
Reviewed-on: #259
2026-06-16 22:24:19 +00:00
Dean Wenstrand
66fb4d3dcc Add spinTypeBreakdown (draw/center/follow) to PlayerSummaryFields
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2026-06-16 14:36:56 -07:00
4 changed files with 66 additions and 0 deletions

View File

@@ -2754,6 +2754,7 @@ export type PlayerSummaryGql = {
representativeFullFrameUrl?: Maybe<Scalars["String"]["output"]>;
runLengths: Array<Scalars["Int"]["output"]>;
score?: Maybe<Scalars["Int"]["output"]>;
spinTypeBreakdown: SpinTypeBreakdownGql;
totalShots: Scalars["Int"]["output"];
totalShotsMade: Scalars["Int"]["output"];
userId?: Maybe<Scalars["Int"]["output"]>;
@@ -3345,6 +3346,13 @@ export type ShotsOrderingComponent =
videoId: IntOrdering;
};
export type SpinTypeBreakdownGql = {
__typename?: "SpinTypeBreakdownGQL";
center: Scalars["Int"]["output"];
draw: Scalars["Int"]["output"];
follow: Scalars["Int"]["output"];
};
export type SpinTypeCountsGql = {
__typename?: "SpinTypeCountsGQL";
center: Scalars["Int"]["output"];
@@ -3671,6 +3679,7 @@ export type VideoGql = {
export type VideoHistoryGql = {
__typename?: "VideoHistoryGQL";
followingCount: Scalars["Int"]["output"];
hasFollowing: Scalars["Boolean"]["output"];
pageInfo: PageInfoGql;
videos: Array<VideoGql>;
@@ -4292,6 +4301,12 @@ export type GetFeedQuery = {
runLengths: Array<number>;
averageDifficulty?: number | null;
averageTimeBetweenShots?: number | null;
spinTypeBreakdown: {
__typename?: "SpinTypeBreakdownGQL";
draw: number;
center: number;
follow: number;
};
}>;
currentProcessing?: {
__typename?: "VideoProcessingGQL";
@@ -4397,6 +4412,12 @@ export type VideoCardFieldsFragment = {
runLengths: Array<number>;
averageDifficulty?: number | null;
averageTimeBetweenShots?: number | null;
spinTypeBreakdown: {
__typename?: "SpinTypeBreakdownGQL";
draw: number;
center: number;
follow: number;
};
}>;
currentProcessing?: {
__typename?: "VideoProcessingGQL";
@@ -4488,6 +4509,7 @@ export type GetVideoFeedQuery = {
getFeedVideos: {
__typename?: "VideoHistoryGQL";
hasFollowing: boolean;
followingCount: number;
videos: Array<{
__typename?: "VideoGQL";
id: number;
@@ -4534,6 +4556,12 @@ export type GetVideoFeedQuery = {
runLengths: Array<number>;
averageDifficulty?: number | null;
averageTimeBetweenShots?: number | null;
spinTypeBreakdown: {
__typename?: "SpinTypeBreakdownGQL";
draw: number;
center: number;
follow: number;
};
}>;
currentProcessing?: {
__typename?: "VideoProcessingGQL";
@@ -5178,6 +5206,12 @@ export type PlayerSummaryFieldsFragment = {
runLengths: Array<number>;
averageDifficulty?: number | null;
averageTimeBetweenShots?: number | null;
spinTypeBreakdown: {
__typename?: "SpinTypeBreakdownGQL";
draw: number;
center: number;
follow: number;
};
};
export type PlayerClusterShotFieldsFragment = {
@@ -6304,6 +6338,12 @@ export type GetVideoDetailsQuery = {
runLengths: Array<number>;
averageDifficulty?: number | null;
averageTimeBetweenShots?: number | null;
spinTypeBreakdown: {
__typename?: "SpinTypeBreakdownGQL";
draw: number;
center: number;
follow: number;
};
}>;
};
};
@@ -6424,6 +6464,12 @@ export type GetVideoCardQuery = {
runLengths: Array<number>;
averageDifficulty?: number | null;
averageTimeBetweenShots?: number | null;
spinTypeBreakdown: {
__typename?: "SpinTypeBreakdownGQL";
draw: number;
center: number;
follow: number;
};
}>;
currentProcessing?: {
__typename?: "VideoProcessingGQL";
@@ -7072,6 +7118,11 @@ export const PlayerSummaryFieldsFragmentDoc = gql`
score
longestRun
runLengths
spinTypeBreakdown {
draw
center
follow
}
averageDifficulty
averageTimeBetweenShots
}
@@ -9429,6 +9480,7 @@ export const GetVideoFeedDocument = gql`
endCursor
}
hasFollowing
followingCount
}
}
${VideoCardFieldsFragmentDoc}

View File

@@ -146,5 +146,6 @@ query GetVideoFeed(
endCursor
}
hasFollowing
followingCount
}
}

View File

@@ -10,6 +10,11 @@ fragment PlayerSummaryFields on PlayerSummaryGQL {
score
longestRun
runLengths
spinTypeBreakdown {
draw
center
follow
}
averageDifficulty
averageTimeBetweenShots
}

View File

@@ -689,10 +689,17 @@ type PlayerSummaryGQL {
score: Int
longestRun: Int!
runLengths: [Int!]!
spinTypeBreakdown: SpinTypeBreakdownGQL!
averageDifficulty: Float
averageTimeBetweenShots: Float
}
type SpinTypeBreakdownGQL {
draw: Int!
center: Int!
follow: Int!
}
type DeployedConfigGQL {
allowNewUsers: Boolean!
firebase: Boolean!
@@ -725,6 +732,7 @@ type VideoHistoryGQL {
videos: [VideoGQL!]!
pageInfo: PageInfoGQL!
hasFollowing: Boolean!
followingCount: Int!
}
type PageInfoGQL {