Compare commits

..

1 Commits

Author SHA1 Message Date
6bcf9a2487 Add upload stream detail fields
All checks were successful
Tests / Tests (pull_request) Successful in 24s
2026-06-09 16:31:50 -07:00
8 changed files with 8 additions and 926 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -42,8 +42,6 @@ fragment VideoCardFields on VideoGQL {
id id
lastIntendedSegmentBound lastIntendedSegmentBound
streamSegmentType streamSegmentType
isCompleted
lastSegmentUploadedAt
} }
tableSize tableSize
pocketSize pocketSize
@@ -148,6 +146,5 @@ query GetVideoFeed(
endCursor endCursor
} }
hasFollowing hasFollowing
followingCount
} }
} }

View File

@@ -30,57 +30,3 @@ query GetRunsLeaderboard($interval: TimeInterval, $when: DateTime) {
} }
} }
} }
query GetDrillRunLeaderboard(
$drillTag: String!
$interval: TimeInterval
$limit: Int = 50
$tableSizeMin: Float
$tableSizeMax: Float
$pocketSizeMin: Float
$pocketSizeMax: Float
) {
getDrillRunLeaderboard(
drillTag: $drillTag
interval: $interval
limit: $limit
tableSizeMin: $tableSizeMin
tableSizeMax: $tableSizeMax
pocketSizeMin: $pocketSizeMin
pocketSizeMax: $pocketSizeMax
) {
entries {
id
runLength
videoId
video {
tableSize
pocketSize
createdAt
}
user {
id
username
profileImageUri
}
}
youRun {
id
runLength
videoId
}
youRank
totalPlayers
}
}
query GetMyDrillRuns($drillTag: String!, $limit: Int = 50) {
getMyDrillRuns(drillTag: $drillTag, limit: $limit) {
id
runLength
videoId
video {
createdAt
}
}
}

View File

@@ -44,20 +44,12 @@ query GetAvailableSubscriptionOptions {
active active
} }
} }
appleIap {
enabled
proMonthlyProductId
productIds
}
} }
} }
query GetSubscriptionStatus { query GetSubscriptionStatus {
getUserSubscriptionStatus { getUserSubscriptionStatus {
hasActiveSubscription hasActiveSubscription
entitlementSource
entitlementStartsAt
entitlementEndsAt
subscriptionStatus subscriptionStatus
currentPeriodStart currentPeriodStart
currentPeriodEnd currentPeriodEnd
@@ -67,50 +59,9 @@ query GetSubscriptionStatus {
} }
} }
query GetStorageStatus {
getStorageStatus {
userId
tierName
retainedStorageUsedBytes
retainedStorageLimitBytes
isUnlimited
policyConfigured
remainingStorageBytes
storageUsageRatio
isNearLimit
isOverLimit
}
}
query GetAppleAppAccountToken {
getAppleAppAccountToken
}
mutation SyncAppleSubscription($signedTransactionInfo: String!) {
syncAppleSubscription(
input: { signedTransactionInfo: $signedTransactionInfo }
) {
ok
errorCode
errorMessage
hasActiveSubscription
entitlementSource
entitlementStartsAt
entitlementEndsAt
appleStatus
originalTransactionId
latestTransactionId
productId
expiresAt
}
}
mutation CancelSubscription { mutation CancelSubscription {
cancelSubscription { cancelSubscription {
hasActiveSubscription hasActiveSubscription
entitlementSource
entitlementStartsAt
entitlementEndsAt
subscriptionStatus subscriptionStatus
currentPeriodStart currentPeriodStart
currentPeriodEnd currentPeriodEnd

View File

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

View File

@@ -177,7 +177,6 @@ mutation editUser(
$fargoRating: Int $fargoRating: Int
$videosPrivateByDefault: Boolean $videosPrivateByDefault: Boolean
$agreesToMarketing: Boolean $agreesToMarketing: Boolean
$bio: String
) { ) {
editUser( editUser(
input: { input: {
@@ -185,7 +184,6 @@ mutation editUser(
fargoRating: $fargoRating fargoRating: $fargoRating
videosPrivateByDefault: $videosPrivateByDefault videosPrivateByDefault: $videosPrivateByDefault
agreesToMarketing: $agreesToMarketing agreesToMarketing: $agreesToMarketing
bio: $bio
} }
) { ) {
id id
@@ -195,7 +193,6 @@ mutation editUser(
updatedAt updatedAt
videosPrivateByDefault videosPrivateByDefault
agreesToMarketing agreesToMarketing
bio
} }
} }
@@ -209,7 +206,6 @@ fragment UserFragment on UserGQL {
username username
isAdmin isAdmin
profileImageUri profileImageUri
bio
fargoRating fargoRating
activeVideoId activeVideoId
createdAt createdAt

View File

@@ -113,8 +113,10 @@ fragment UploadStreamWithDetails on VideoGQL {
name name
startTime startTime
stream { stream {
id
isCompleted isCompleted
lastIntendedSegmentBound lastIntendedSegmentBound
streamSegmentType
uploadCompletionCursor uploadCompletionCursor
uploadsCompleted uploadsCompleted
} }

View File

@@ -31,16 +31,6 @@ type Query {
limit: Int! = 50 limit: Int! = 50
requiredTags: [String!] = null requiredTags: [String!] = null
): RunLeaderboardGQL! ): RunLeaderboardGQL!
getDrillRunLeaderboard(
drillTag: String!
interval: TimeInterval = null
limit: Int! = 50
tableSizeMin: Float = null
tableSizeMax: Float = null
pocketSizeMin: Float = null
pocketSizeMax: Float = null
): DrillRunLeaderboardGQL!
getMyDrillRuns(drillTag: String!, limit: Int! = 50): [RunGQL!]!
getMakesLeaderboard( getMakesLeaderboard(
interval: TimeInterval = null interval: TimeInterval = null
when: DateTime = null when: DateTime = null
@@ -108,10 +98,7 @@ type Query {
): UserRelationshipsResult! ): UserRelationshipsResult!
getAvailableSubscriptionOptions: StripeSubscriptionOptionsGQL! getAvailableSubscriptionOptions: StripeSubscriptionOptionsGQL!
getUserSubscriptionStatus: UserSubscriptionStatusGQL! getUserSubscriptionStatus: UserSubscriptionStatusGQL!
getResolvedTier: ResolvedTierGQL!
getAppleAppAccountToken: String!
getQuotaStatus: QuotaStatusGQL! getQuotaStatus: QuotaStatusGQL!
getStorageStatus: StorageStatusGQL
getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL! getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL!
getUserVideos( getUserVideos(
userId: Int = null userId: Int = null
@@ -358,7 +345,6 @@ type UserGQL {
activeVideoId: Int activeVideoId: Int
stripeCustomerId: String stripeCustomerId: String
profileImageUri: String profileImageUri: String
bio: String
createdAt: DateTime createdAt: DateTime
updatedAt: DateTime updatedAt: DateTime
videosPrivateByDefault: Boolean videosPrivateByDefault: Boolean
@@ -532,7 +518,6 @@ type UploadStreamGQL {
initPlaylistUploadStatus: InitPlaylistUploadStatusEnum initPlaylistUploadStatus: InitPlaylistUploadStatusEnum
lowestUnuploadedSegmentIndex: Int! lowestUnuploadedSegmentIndex: Int!
uploadCompletionCursor: Int! uploadCompletionCursor: Int!
lastSegmentUploadedAt: DateTime
errors: [StreamErrorGQL!]! errors: [StreamErrorGQL!]!
createdAt: DateTime! createdAt: DateTime!
updatedAt: DateTime! updatedAt: DateTime!
@@ -692,18 +677,10 @@ type PlayerSummaryGQL {
makePercentage: Float! makePercentage: Float!
score: Int score: Int
longestRun: Int! longestRun: Int!
runLengths: [Int!]!
spinTypeBreakdown: SpinTypeBreakdownGQL!
averageDifficulty: Float averageDifficulty: Float
averageTimeBetweenShots: Float averageTimeBetweenShots: Float
} }
type SpinTypeBreakdownGQL {
draw: Int!
center: Int!
follow: Int!
}
type DeployedConfigGQL { type DeployedConfigGQL {
allowNewUsers: Boolean! allowNewUsers: Boolean!
firebase: Boolean! firebase: Boolean!
@@ -736,7 +713,6 @@ type VideoHistoryGQL {
videos: [VideoGQL!]! videos: [VideoGQL!]!
pageInfo: PageInfoGQL! pageInfo: PageInfoGQL!
hasFollowing: Boolean! hasFollowing: Boolean!
followingCount: Int!
} }
type PageInfoGQL { type PageInfoGQL {
@@ -773,13 +749,6 @@ type RunLeaderboardGQL {
entries: [RunGQL!]! entries: [RunGQL!]!
} }
type DrillRunLeaderboardGQL {
entries: [RunGQL!]!
youRun: RunGQL
youRank: Int
totalPlayers: Int!
}
type CountLeaderboardGQL { type CountLeaderboardGQL {
entries: [UserShotCountEntry!]! entries: [UserShotCountEntry!]!
} }
@@ -1014,7 +983,6 @@ type UserRelationship {
type StripeSubscriptionOptionsGQL { type StripeSubscriptionOptionsGQL {
products: [StripeProductGQL!]! products: [StripeProductGQL!]!
trialPeriodDays: Int trialPeriodDays: Int
appleIap: AppleIapSubscriptionOptionsGQL!
} }
type StripeProductGQL { type StripeProductGQL {
@@ -1035,12 +1003,6 @@ type StripePriceGQL {
active: Boolean! active: Boolean!
} }
type AppleIapSubscriptionOptionsGQL {
enabled: Boolean!
proMonthlyProductId: String
productIds: [String!]!
}
type UserSubscriptionStatusGQL { type UserSubscriptionStatusGQL {
hasActiveSubscription: Boolean! hasActiveSubscription: Boolean!
entitlementSource: EntitlementSourceTypeEnum entitlementSource: EntitlementSourceTypeEnum
@@ -1058,7 +1020,6 @@ enum EntitlementSourceTypeEnum {
ADMIN ADMIN
MANUAL MANUAL
STRIPE STRIPE
APPLE
ALPHA_LEGACY ALPHA_LEGACY
} }
@@ -1073,17 +1034,6 @@ 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!
@@ -1108,24 +1058,6 @@ type QuotaBucketStatusGQL {
canUpload: Boolean! canUpload: Boolean!
} }
type StorageStatusGQL {
userId: Int!
tierName: String!
retainedStorageUsedBytes: BigInt!
retainedStorageLimitBytes: BigInt
isUnlimited: Boolean!
policyConfigured: Boolean!
remainingStorageBytes: BigInt
storageUsageRatio: Float
isNearLimit: Boolean!
isOverLimit: Boolean!
}
"""
Integer value that can exceed GraphQL Int's 32-bit range.
"""
scalar BigInt
type UserPlayTimeGQL { type UserPlayTimeGQL {
totalSeconds: Float! totalSeconds: Float!
} }
@@ -1243,9 +1175,6 @@ type Mutation {
retireTags(tagIds: [Int!]!): Boolean! retireTags(tagIds: [Int!]!): Boolean!
ensureStripeCustomerExists: UserGQL! ensureStripeCustomerExists: UserGQL!
deleteUser: Boolean! deleteUser: Boolean!
syncAppleSubscription(
input: SyncAppleSubscriptionInputGQL!
): SyncAppleSubscriptionResultGQL!
createSubscription(priceId: String!): CreateSubscriptionResultGQL! createSubscription(priceId: String!): CreateSubscriptionResultGQL!
createCustomerPortalSession: CreateCustomerPortalSessionResultGQL! createCustomerPortalSession: CreateCustomerPortalSessionResultGQL!
cancelSubscription: UserSubscriptionStatusGQL! cancelSubscription: UserSubscriptionStatusGQL!
@@ -1397,27 +1326,6 @@ input EditUserInputGQL {
fargoRating: Int = null fargoRating: Int = null
videosPrivateByDefault: Boolean = null videosPrivateByDefault: Boolean = null
agreesToMarketing: Boolean = null agreesToMarketing: Boolean = null
bio: String = null
}
type SyncAppleSubscriptionResultGQL {
ok: Boolean!
errorCode: String
errorMessage: String
hasActiveSubscription: Boolean!
entitlementSource: EntitlementSourceTypeEnum
entitlementStartsAt: DateTime
entitlementEndsAt: DateTime
appleStatus: Int
originalTransactionId: String
latestTransactionId: String
productId: String
expiresAt: DateTime
}
input SyncAppleSubscriptionInputGQL {
signedTransactionInfo: String!
signedRenewalInfo: String = null
} }
type CreateSubscriptionResultGQL { type CreateSubscriptionResultGQL {