Compare commits

..

10 Commits

Author SHA1 Message Date
d636c298f8 Merge pull request 'Add resolved tier capabilities schema' (#269) from tier-capabilities-schema into master
Reviewed-on: #269
2026-06-24 03:37:17 +00:00
681320c62d Add resolved tier capabilities schema
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2026-06-23 15:51:21 -07:00
49f409f60b Merge pull request 'Add resolved tier schema' (#268) from resolved-tier-contract into master
Reviewed-on: #268
2026-06-23 22:10:10 +00:00
e7fc6c147d Add resolved tier schema
All checks were successful
Tests / Tests (pull_request) Successful in 11s
2026-06-23 14:01:32 -07:00
10c3f6de53 Merge pull request 'Add drill leaderboard run dates to gql' (#267) from dean/add-dates-to-leaderboards-gql into master
Reviewed-on: #267
2026-06-23 15:51:28 +00:00
Dean Wenstrand
d7b1aaee13 Add drill leaderboard run dates to gql
All checks were successful
Tests / Tests (pull_request) Successful in 25s
2026-06-23 08:47:08 -07:00
b477590137 Merge pull request 'VideoCardFields: fetch stream isCompleted + lastSegmentUploadedAt' (#266) from dean/feed-upload-status-fields into master
Reviewed-on: #266
2026-06-20 22:45:07 +00:00
Dean Wenstrand
d428a8caa2 VideoCardFields: fetch stream isCompleted + lastSegmentUploadedAt
All checks were successful
Tests / Tests (pull_request) Successful in 10s
Lets the feed derive upload state (uploading vs paused vs processing) per card.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 15:16:11 -07:00
48207e12ee Merge pull request 'Add lastSegmentUploadedAt to UploadStreamGQL' (#265) from dean/last-uploaded-chunk into master
Reviewed-on: #265
2026-06-20 21:45:32 +00:00
6758f3e77a Merge pull request 'Add bio field to user (UserFragment + editUser)' (#264) from dean/profile-bio into master
Reviewed-on: #264
2026-06-19 21:27:52 +00:00
4 changed files with 40 additions and 0 deletions

View File

@@ -2853,6 +2853,7 @@ export type Query = {
getOrderedShots: GetShotsResult; getOrderedShots: GetShotsResult;
getPlayTime: UserPlayTimeGql; getPlayTime: UserPlayTimeGql;
getQuotaStatus: QuotaStatusGql; getQuotaStatus: QuotaStatusGql;
getResolvedTier: ResolvedTierGql;
getRuns: GetRunsResult; getRuns: GetRunsResult;
getShotAnnotationTypes: Array<ShotAnnotationTypeGql>; getShotAnnotationTypes: Array<ShotAnnotationTypeGql>;
getShots: Array<ShotGql>; getShots: Array<ShotGql>;
@@ -3158,6 +3159,18 @@ export type RequestedMedalsGql = {
totalMakes10000?: Maybe<MedalGql>; totalMakes10000?: Maybe<MedalGql>;
}; };
export type ResolvedTierGql = {
__typename?: "ResolvedTierGQL";
capabilities: Array<Scalars["String"]["output"]>;
entitlementEndsAt?: Maybe<Scalars["DateTime"]["output"]>;
entitlementSource?: Maybe<EntitlementSourceTypeEnum>;
entitlementStartsAt?: Maybe<Scalars["DateTime"]["output"]>;
entitlementStatus?: Maybe<Scalars["String"]["output"]>;
hasActiveSubscription: Scalars["Boolean"]["output"];
tierDisplayName: Scalars["String"]["output"];
tierName: Scalars["String"]["output"];
};
export type RuleSet = { export type RuleSet = {
__typename?: "RuleSet"; __typename?: "RuleSet";
createdAt: Scalars["DateTime"]["output"]; createdAt: Scalars["DateTime"]["output"];
@@ -4284,6 +4297,8 @@ export type GetFeedQuery = {
id: string; id: string;
lastIntendedSegmentBound?: number | null; lastIntendedSegmentBound?: number | null;
streamSegmentType: StreamSegmentTypeEnum; streamSegmentType: StreamSegmentTypeEnum;
isCompleted: boolean;
lastSegmentUploadedAt?: any | null;
} | null; } | null;
tags: Array<{ tags: Array<{
__typename?: "VideoTag"; __typename?: "VideoTag";
@@ -4395,6 +4410,8 @@ export type VideoCardFieldsFragment = {
id: string; id: string;
lastIntendedSegmentBound?: number | null; lastIntendedSegmentBound?: number | null;
streamSegmentType: StreamSegmentTypeEnum; streamSegmentType: StreamSegmentTypeEnum;
isCompleted: boolean;
lastSegmentUploadedAt?: any | null;
} | null; } | null;
tags: Array<{ tags: Array<{
__typename?: "VideoTag"; __typename?: "VideoTag";
@@ -4539,6 +4556,8 @@ export type GetVideoFeedQuery = {
id: string; id: string;
lastIntendedSegmentBound?: number | null; lastIntendedSegmentBound?: number | null;
streamSegmentType: StreamSegmentTypeEnum; streamSegmentType: StreamSegmentTypeEnum;
isCompleted: boolean;
lastSegmentUploadedAt?: any | null;
} | null; } | null;
tags: Array<{ tags: Array<{
__typename?: "VideoTag"; __typename?: "VideoTag";
@@ -4694,6 +4713,7 @@ export type GetDrillRunLeaderboardQuery = {
__typename?: "VideoGQL"; __typename?: "VideoGQL";
tableSize: number; tableSize: number;
pocketSize?: number | null; pocketSize?: number | null;
createdAt?: any | null;
}; };
user: { user: {
__typename?: "UserGQL"; __typename?: "UserGQL";
@@ -6498,6 +6518,8 @@ export type GetVideoCardQuery = {
id: string; id: string;
lastIntendedSegmentBound?: number | null; lastIntendedSegmentBound?: number | null;
streamSegmentType: StreamSegmentTypeEnum; streamSegmentType: StreamSegmentTypeEnum;
isCompleted: boolean;
lastSegmentUploadedAt?: any | null;
} | null; } | null;
tags: Array<{ tags: Array<{
__typename?: "VideoTag"; __typename?: "VideoTag";
@@ -7211,6 +7233,8 @@ export const VideoCardFieldsFragmentDoc = gql`
id id
lastIntendedSegmentBound lastIntendedSegmentBound
streamSegmentType streamSegmentType
isCompleted
lastSegmentUploadedAt
} }
tableSize tableSize
pocketSize pocketSize
@@ -9807,6 +9831,7 @@ export const GetDrillRunLeaderboardDocument = gql`
video { video {
tableSize tableSize
pocketSize pocketSize
createdAt
} }
user { user {
id id

View File

@@ -42,6 +42,8 @@ fragment VideoCardFields on VideoGQL {
id id
lastIntendedSegmentBound lastIntendedSegmentBound
streamSegmentType streamSegmentType
isCompleted
lastSegmentUploadedAt
} }
tableSize tableSize
pocketSize pocketSize

View File

@@ -56,6 +56,7 @@ query GetDrillRunLeaderboard(
video { video {
tableSize tableSize
pocketSize pocketSize
createdAt
} }
user { user {
id id

View File

@@ -108,6 +108,7 @@ type Query {
): UserRelationshipsResult! ): UserRelationshipsResult!
getAvailableSubscriptionOptions: StripeSubscriptionOptionsGQL! getAvailableSubscriptionOptions: StripeSubscriptionOptionsGQL!
getUserSubscriptionStatus: UserSubscriptionStatusGQL! getUserSubscriptionStatus: UserSubscriptionStatusGQL!
getResolvedTier: ResolvedTierGQL!
getAppleAppAccountToken: String! getAppleAppAccountToken: String!
getQuotaStatus: QuotaStatusGQL! getQuotaStatus: QuotaStatusGQL!
getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL! getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL!
@@ -1071,6 +1072,17 @@ enum StripeSubscriptionStatusEnum {
PAUSED PAUSED
} }
type ResolvedTierGQL {
tierName: String!
tierDisplayName: String!
hasActiveSubscription: Boolean!
entitlementSource: EntitlementSourceTypeEnum
entitlementStatus: String
entitlementStartsAt: DateTime
entitlementEndsAt: DateTime
capabilities: [String!]!
}
type QuotaStatusGQL { type QuotaStatusGQL {
tierName: String! tierName: String!
periodStart: DateTime! periodStart: DateTime!