Compare commits
1 Commits
dean/profi
...
loewy/add-
| Author | SHA1 | Date | |
|---|---|---|---|
| e89cabf33e |
1145
src/index.tsx
1145
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
|
||||||
@@ -146,6 +125,5 @@ query GetVideoFeed(
|
|||||||
endCursor
|
endCursor
|
||||||
}
|
}
|
||||||
hasFollowing
|
hasFollowing
|
||||||
followingCount
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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,35 +59,9 @@ query GetSubscriptionStatus {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
@@ -9,12 +9,6 @@ fragment PlayerSummaryFields on PlayerSummaryGQL {
|
|||||||
makePercentage
|
makePercentage
|
||||||
score
|
score
|
||||||
longestRun
|
longestRun
|
||||||
runLengths
|
|
||||||
spinTypeBreakdown {
|
|
||||||
draw
|
|
||||||
center
|
|
||||||
follow
|
|
||||||
}
|
|
||||||
averageDifficulty
|
averageDifficulty
|
||||||
averageTimeBetweenShots
|
averageTimeBetweenShots
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -177,7 +144,6 @@ mutation editUser(
|
|||||||
$fargoRating: Int
|
$fargoRating: Int
|
||||||
$videosPrivateByDefault: Boolean
|
$videosPrivateByDefault: Boolean
|
||||||
$agreesToMarketing: Boolean
|
$agreesToMarketing: Boolean
|
||||||
$bio: String
|
|
||||||
) {
|
) {
|
||||||
editUser(
|
editUser(
|
||||||
input: {
|
input: {
|
||||||
@@ -185,7 +151,6 @@ mutation editUser(
|
|||||||
fargoRating: $fargoRating
|
fargoRating: $fargoRating
|
||||||
videosPrivateByDefault: $videosPrivateByDefault
|
videosPrivateByDefault: $videosPrivateByDefault
|
||||||
agreesToMarketing: $agreesToMarketing
|
agreesToMarketing: $agreesToMarketing
|
||||||
bio: $bio
|
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
id
|
id
|
||||||
@@ -195,7 +160,6 @@ mutation editUser(
|
|||||||
updatedAt
|
updatedAt
|
||||||
videosPrivateByDefault
|
videosPrivateByDefault
|
||||||
agreesToMarketing
|
agreesToMarketing
|
||||||
bio
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,10 +173,10 @@ fragment UserFragment on UserGQL {
|
|||||||
username
|
username
|
||||||
isAdmin
|
isAdmin
|
||||||
profileImageUri
|
profileImageUri
|
||||||
bio
|
|
||||||
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(
|
||||||
@@ -356,13 +345,17 @@ 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
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -689,18 +682,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!
|
||||||
@@ -708,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!
|
||||||
@@ -733,7 +717,6 @@ type VideoHistoryGQL {
|
|||||||
videos: [VideoGQL!]!
|
videos: [VideoGQL!]!
|
||||||
pageInfo: PageInfoGQL!
|
pageInfo: PageInfoGQL!
|
||||||
hasFollowing: Boolean!
|
hasFollowing: Boolean!
|
||||||
followingCount: Int!
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type PageInfoGQL {
|
type PageInfoGQL {
|
||||||
@@ -770,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!]!
|
||||||
}
|
}
|
||||||
@@ -1011,7 +987,6 @@ type UserRelationship {
|
|||||||
type StripeSubscriptionOptionsGQL {
|
type StripeSubscriptionOptionsGQL {
|
||||||
products: [StripeProductGQL!]!
|
products: [StripeProductGQL!]!
|
||||||
trialPeriodDays: Int
|
trialPeriodDays: Int
|
||||||
appleIap: AppleIapSubscriptionOptionsGQL!
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type StripeProductGQL {
|
type StripeProductGQL {
|
||||||
@@ -1032,12 +1007,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
|
||||||
@@ -1055,7 +1024,6 @@ enum EntitlementSourceTypeEnum {
|
|||||||
ADMIN
|
ADMIN
|
||||||
MANUAL
|
MANUAL
|
||||||
STRIPE
|
STRIPE
|
||||||
APPLE
|
|
||||||
ALPHA_LEGACY
|
ALPHA_LEGACY
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1077,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!
|
||||||
}
|
}
|
||||||
@@ -1211,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!
|
||||||
@@ -1365,27 +1317,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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user