Compare commits
1 Commits
dean/my-dr
...
loewy/add-
| Author | SHA1 | Date | |
|---|---|---|---|
| e89cabf33e |
875
src/index.tsx
875
src/index.tsx
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,6 @@ query getDeployedConfig {
|
|||||||
firebase
|
firebase
|
||||||
minimumAllowedAppVersion
|
minimumAllowedAppVersion
|
||||||
subscriptionGatingEnabled
|
subscriptionGatingEnabled
|
||||||
quotaEnforcementEnabled
|
|
||||||
bannerMessages {
|
bannerMessages {
|
||||||
color
|
color
|
||||||
dismissible
|
dismissible
|
||||||
|
|||||||
@@ -101,27 +101,6 @@ query GetVideoFeedSessionCount(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Minimal query for the Home recency nudge ("you haven't recorded in N days").
|
|
||||||
# Only the most recent session's start time — avoids pulling the full
|
|
||||||
# VideoCardFields payload (reactions, comments, player summaries, etc.).
|
|
||||||
query GetLastSessionDate(
|
|
||||||
$filters: VideoFilterInput = null
|
|
||||||
$includePrivate: IncludePrivateEnum = MINE
|
|
||||||
$feedInput: VideoFeedInputGQL = null
|
|
||||||
) {
|
|
||||||
getFeedVideos(
|
|
||||||
limit: 1
|
|
||||||
filters: $filters
|
|
||||||
includePrivate: $includePrivate
|
|
||||||
feedInput: $feedInput
|
|
||||||
) {
|
|
||||||
videos {
|
|
||||||
id
|
|
||||||
startTime
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
query GetVideoFeed(
|
query GetVideoFeed(
|
||||||
$limit: Int! = 5
|
$limit: Int! = 5
|
||||||
$after: String = null
|
$after: String = null
|
||||||
|
|||||||
@@ -30,56 +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
|
|
||||||
}
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -132,38 +132,6 @@ query GetShotsByIds($ids: [Int!]!) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Lightweight clip boundaries for condensed session playback. The inline
|
|
||||||
# session player only needs each shot's frame/time window to seek between
|
|
||||||
# shots — this skips the heavy ShotWithAllFeatures payload (cue/pocketing
|
|
||||||
# features, serialized shot paths, annotations, nested video/playlist). The
|
|
||||||
# startTime/endTime @client resolvers derive their values from the frame
|
|
||||||
# fields + the video (looked up internally), so this is all they require.
|
|
||||||
fragment ShotClipRange on ShotGQL {
|
|
||||||
id
|
|
||||||
videoId
|
|
||||||
startFrame
|
|
||||||
endFrame
|
|
||||||
startTime @client
|
|
||||||
endTime @client
|
|
||||||
}
|
|
||||||
|
|
||||||
query GetShotClipRanges(
|
|
||||||
$filterInput: FilterInput!
|
|
||||||
$shotsOrdering: GetShotsOrdering
|
|
||||||
$limit: Int
|
|
||||||
) {
|
|
||||||
getOrderedShots(
|
|
||||||
filterInput: $filterInput
|
|
||||||
shotsOrdering: $shotsOrdering
|
|
||||||
limit: $limit
|
|
||||||
) {
|
|
||||||
count
|
|
||||||
shots {
|
|
||||||
...ShotClipRange
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment ShotWithAllFeatures on ShotGQL {
|
fragment ShotWithAllFeatures on ShotGQL {
|
||||||
id
|
id
|
||||||
videoId
|
videoId
|
||||||
|
|||||||
@@ -49,39 +49,6 @@ query GetUserPlayTime($userId: Int!, $filters: VideoFilterInput) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
query GetUploadQuotaStatus {
|
|
||||||
getQuotaStatus {
|
|
||||||
tierName
|
|
||||||
periodStart
|
|
||||||
periodEnd
|
|
||||||
durationUsedSeconds
|
|
||||||
durationLimitSeconds
|
|
||||||
maxVideoDurationSeconds
|
|
||||||
durationRemainingSeconds
|
|
||||||
canUpload
|
|
||||||
importQuotaBuckets {
|
|
||||||
quotaKey
|
|
||||||
appliesToUploadKind
|
|
||||||
periodStart
|
|
||||||
periodEnd
|
|
||||||
durationUsedSeconds
|
|
||||||
durationLimitSeconds
|
|
||||||
durationRemainingSeconds
|
|
||||||
canUpload
|
|
||||||
}
|
|
||||||
recordingQuotaBuckets {
|
|
||||||
quotaKey
|
|
||||||
appliesToUploadKind
|
|
||||||
periodStart
|
|
||||||
periodEnd
|
|
||||||
durationUsedSeconds
|
|
||||||
durationLimitSeconds
|
|
||||||
durationRemainingSeconds
|
|
||||||
canUpload
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
query getUsernames(
|
query getUsernames(
|
||||||
$matchString: String!
|
$matchString: String!
|
||||||
$limit: Int = null
|
$limit: Int = null
|
||||||
@@ -209,6 +176,7 @@ fragment UserFragment on UserGQL {
|
|||||||
fargoRating
|
fargoRating
|
||||||
activeVideoId
|
activeVideoId
|
||||||
createdAt
|
createdAt
|
||||||
|
firstActivityAt
|
||||||
updatedAt
|
updatedAt
|
||||||
videosPrivateByDefault
|
videosPrivateByDefault
|
||||||
agreesToMarketing
|
agreesToMarketing
|
||||||
|
|||||||
@@ -139,15 +139,6 @@ query GetVideoSocialDetailsById($videoId: Int!) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Full card payload for a single video — reuses the same VideoCardFields
|
|
||||||
# fragment the feed list uses, so the session-detail meta header shares one
|
|
||||||
# source of truth (and the normalized Apollo cache) with the feed card.
|
|
||||||
query GetVideoCard($videoId: Int!) {
|
|
||||||
getVideo(videoId: $videoId) {
|
|
||||||
...VideoCardFields
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
query GetVideos($videoIds: [Int!]!) {
|
query GetVideos($videoIds: [Int!]!) {
|
||||||
getVideos(videoIds: $videoIds) {
|
getVideos(videoIds: $videoIds) {
|
||||||
...VideoStreamMetadata
|
...VideoStreamMetadata
|
||||||
|
|||||||
@@ -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,7 +98,6 @@ type Query {
|
|||||||
): UserRelationshipsResult!
|
): UserRelationshipsResult!
|
||||||
getAvailableSubscriptionOptions: StripeSubscriptionOptionsGQL!
|
getAvailableSubscriptionOptions: StripeSubscriptionOptionsGQL!
|
||||||
getUserSubscriptionStatus: UserSubscriptionStatusGQL!
|
getUserSubscriptionStatus: UserSubscriptionStatusGQL!
|
||||||
getAppleAppAccountToken: String!
|
|
||||||
getQuotaStatus: QuotaStatusGQL!
|
getQuotaStatus: QuotaStatusGQL!
|
||||||
getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL!
|
getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL!
|
||||||
getUserVideos(
|
getUserVideos(
|
||||||
@@ -362,6 +351,11 @@ type UserGQL {
|
|||||||
agreesToMarketing: Boolean
|
agreesToMarketing: Boolean
|
||||||
following: [UserGQL!]
|
following: [UserGQL!]
|
||||||
followers: [UserGQL!]
|
followers: [UserGQL!]
|
||||||
|
|
||||||
|
"""
|
||||||
|
Earliest visible non-deleted profile video timestamp with real shot data.
|
||||||
|
"""
|
||||||
|
firstActivityAt: DateTime
|
||||||
isFollowedByCurrentUser: Boolean
|
isFollowedByCurrentUser: Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -699,7 +693,6 @@ type DeployedConfigGQL {
|
|||||||
environment: String!
|
environment: String!
|
||||||
minimumAllowedAppVersion: String!
|
minimumAllowedAppVersion: String!
|
||||||
subscriptionGatingEnabled: Boolean!
|
subscriptionGatingEnabled: Boolean!
|
||||||
quotaEnforcementEnabled: Boolean!
|
|
||||||
bannerMessages: [BannerGQL!]!
|
bannerMessages: [BannerGQL!]!
|
||||||
defaultAndroidRecordingFormat: StreamSegmentTypeEnum!
|
defaultAndroidRecordingFormat: StreamSegmentTypeEnum!
|
||||||
bucketUrl: String!
|
bucketUrl: String!
|
||||||
@@ -760,13 +753,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!]!
|
||||||
}
|
}
|
||||||
@@ -1038,7 +1024,6 @@ enum EntitlementSourceTypeEnum {
|
|||||||
ADMIN
|
ADMIN
|
||||||
MANUAL
|
MANUAL
|
||||||
STRIPE
|
STRIPE
|
||||||
APPLE
|
|
||||||
ALPHA_LEGACY
|
ALPHA_LEGACY
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1060,19 +1045,6 @@ type QuotaStatusGQL {
|
|||||||
durationUsedSeconds: Float!
|
durationUsedSeconds: Float!
|
||||||
durationLimitSeconds: Int
|
durationLimitSeconds: Int
|
||||||
maxVideoDurationSeconds: Int
|
maxVideoDurationSeconds: Int
|
||||||
importQuotaBuckets: [QuotaBucketStatusGQL!]!
|
|
||||||
recordingQuotaBuckets: [QuotaBucketStatusGQL!]!
|
|
||||||
durationRemainingSeconds: Float
|
|
||||||
canUpload: Boolean!
|
|
||||||
}
|
|
||||||
|
|
||||||
type QuotaBucketStatusGQL {
|
|
||||||
quotaKey: String!
|
|
||||||
appliesToUploadKind: String!
|
|
||||||
periodStart: DateTime!
|
|
||||||
periodEnd: DateTime!
|
|
||||||
durationUsedSeconds: Float!
|
|
||||||
durationLimitSeconds: Int
|
|
||||||
durationRemainingSeconds: Float
|
durationRemainingSeconds: Float
|
||||||
canUpload: Boolean!
|
canUpload: Boolean!
|
||||||
}
|
}
|
||||||
@@ -1194,9 +1166,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!
|
||||||
@@ -1350,26 +1319,6 @@ input EditUserInputGQL {
|
|||||||
agreesToMarketing: Boolean = null
|
agreesToMarketing: Boolean = 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 {
|
||||||
checkoutUrl: String!
|
checkoutUrl: String!
|
||||||
sessionId: String!
|
sessionId: String!
|
||||||
|
|||||||
Reference in New Issue
Block a user