Compare commits

..

2 Commits

Author SHA1 Message Date
61f57cc9ef Add Apple IAP product config to subscription options
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2026-06-16 13:42:20 -07:00
89b9f7f9cc Add Apple subscription mobile operations 2026-06-16 13:27:28 -07:00
6 changed files with 13 additions and 128 deletions

View File

@@ -83,7 +83,6 @@ export type AppleIapSubscriptionOptionsGql = {
__typename?: "AppleIapSubscriptionOptionsGQL"; __typename?: "AppleIapSubscriptionOptionsGQL";
enabled: Scalars["Boolean"]["output"]; enabled: Scalars["Boolean"]["output"];
proMonthlyProductId?: Maybe<Scalars["String"]["output"]>; proMonthlyProductId?: Maybe<Scalars["String"]["output"]>;
productIds: Array<Scalars["String"]["output"]>;
}; };
export type BankFeaturesGql = { export type BankFeaturesGql = {
@@ -327,7 +326,6 @@ export type EditShotReturn = {
export type EditUserInputGql = { export type EditUserInputGql = {
agreesToMarketing?: InputMaybe<Scalars["Boolean"]["input"]>; agreesToMarketing?: InputMaybe<Scalars["Boolean"]["input"]>;
bio?: InputMaybe<Scalars["String"]["input"]>;
fargoRating?: InputMaybe<Scalars["Int"]["input"]>; fargoRating?: InputMaybe<Scalars["Int"]["input"]>;
username?: InputMaybe<Scalars["String"]["input"]>; username?: InputMaybe<Scalars["String"]["input"]>;
videosPrivateByDefault?: InputMaybe<Scalars["Boolean"]["input"]>; videosPrivateByDefault?: InputMaybe<Scalars["Boolean"]["input"]>;
@@ -2754,9 +2752,7 @@ export type PlayerSummaryGql = {
makePercentage: Scalars["Float"]["output"]; makePercentage: Scalars["Float"]["output"];
profileImageUri?: Maybe<Scalars["String"]["output"]>; profileImageUri?: Maybe<Scalars["String"]["output"]>;
representativeFullFrameUrl?: Maybe<Scalars["String"]["output"]>; representativeFullFrameUrl?: Maybe<Scalars["String"]["output"]>;
runLengths: Array<Scalars["Int"]["output"]>;
score?: Maybe<Scalars["Int"]["output"]>; score?: Maybe<Scalars["Int"]["output"]>;
spinTypeBreakdown: SpinTypeBreakdownGql;
totalShots: Scalars["Int"]["output"]; totalShots: Scalars["Int"]["output"];
totalShotsMade: Scalars["Int"]["output"]; totalShotsMade: Scalars["Int"]["output"];
userId?: Maybe<Scalars["Int"]["output"]>; userId?: Maybe<Scalars["Int"]["output"]>;
@@ -3348,13 +3344,6 @@ export type ShotsOrderingComponent =
videoId: IntOrdering; videoId: IntOrdering;
}; };
export type SpinTypeBreakdownGql = {
__typename?: "SpinTypeBreakdownGQL";
center: Scalars["Int"]["output"];
draw: Scalars["Int"]["output"];
follow: Scalars["Int"]["output"];
};
export type SpinTypeCountsGql = { export type SpinTypeCountsGql = {
__typename?: "SpinTypeCountsGQL"; __typename?: "SpinTypeCountsGQL";
center: Scalars["Int"]["output"]; center: Scalars["Int"]["output"];
@@ -3541,7 +3530,6 @@ export type UploadStreamGql = {
initPlaylistUploadStatus?: Maybe<InitPlaylistUploadStatusEnum>; initPlaylistUploadStatus?: Maybe<InitPlaylistUploadStatusEnum>;
isCompleted: Scalars["Boolean"]["output"]; isCompleted: Scalars["Boolean"]["output"];
lastIntendedSegmentBound?: Maybe<Scalars["Int"]["output"]>; lastIntendedSegmentBound?: Maybe<Scalars["Int"]["output"]>;
lastSegmentUploadedAt?: Maybe<Scalars["DateTime"]["output"]>;
linksRequested: Scalars["Int"]["output"]; linksRequested: Scalars["Int"]["output"];
lowestUnuploadedSegmentIndex: Scalars["Int"]["output"]; lowestUnuploadedSegmentIndex: Scalars["Int"]["output"];
resolution: VideoResolutionGql; resolution: VideoResolutionGql;
@@ -3558,7 +3546,6 @@ export type UserGql = {
__typename?: "UserGQL"; __typename?: "UserGQL";
activeVideoId?: Maybe<Scalars["Int"]["output"]>; activeVideoId?: Maybe<Scalars["Int"]["output"]>;
agreesToMarketing?: Maybe<Scalars["Boolean"]["output"]>; agreesToMarketing?: Maybe<Scalars["Boolean"]["output"]>;
bio?: Maybe<Scalars["String"]["output"]>;
createdAt?: Maybe<Scalars["DateTime"]["output"]>; createdAt?: Maybe<Scalars["DateTime"]["output"]>;
fargoRating?: Maybe<Scalars["Int"]["output"]>; fargoRating?: Maybe<Scalars["Int"]["output"]>;
firebaseUid?: Maybe<Scalars["String"]["output"]>; firebaseUid?: Maybe<Scalars["String"]["output"]>;
@@ -3683,7 +3670,6 @@ export type VideoGql = {
export type VideoHistoryGql = { export type VideoHistoryGql = {
__typename?: "VideoHistoryGQL"; __typename?: "VideoHistoryGQL";
followingCount: Scalars["Int"]["output"];
hasFollowing: Scalars["Boolean"]["output"]; hasFollowing: Scalars["Boolean"]["output"];
pageInfo: PageInfoGql; pageInfo: PageInfoGql;
videos: Array<VideoGql>; videos: Array<VideoGql>;
@@ -4284,8 +4270,6 @@ 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";
@@ -4304,15 +4288,8 @@ export type GetFeedQuery = {
makePercentage: number; makePercentage: number;
score?: number | null; score?: number | null;
longestRun: number; longestRun: number;
runLengths: Array<number>;
averageDifficulty?: number | null; averageDifficulty?: number | null;
averageTimeBetweenShots?: number | null; averageTimeBetweenShots?: number | null;
spinTypeBreakdown: {
__typename?: "SpinTypeBreakdownGQL";
draw: number;
center: number;
follow: number;
};
}>; }>;
currentProcessing?: { currentProcessing?: {
__typename?: "VideoProcessingGQL"; __typename?: "VideoProcessingGQL";
@@ -4397,8 +4374,6 @@ 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";
@@ -4417,15 +4392,8 @@ export type VideoCardFieldsFragment = {
makePercentage: number; makePercentage: number;
score?: number | null; score?: number | null;
longestRun: number; longestRun: number;
runLengths: Array<number>;
averageDifficulty?: number | null; averageDifficulty?: number | null;
averageTimeBetweenShots?: number | null; averageTimeBetweenShots?: number | null;
spinTypeBreakdown: {
__typename?: "SpinTypeBreakdownGQL";
draw: number;
center: number;
follow: number;
};
}>; }>;
currentProcessing?: { currentProcessing?: {
__typename?: "VideoProcessingGQL"; __typename?: "VideoProcessingGQL";
@@ -4517,7 +4485,6 @@ export type GetVideoFeedQuery = {
getFeedVideos: { getFeedVideos: {
__typename?: "VideoHistoryGQL"; __typename?: "VideoHistoryGQL";
hasFollowing: boolean; hasFollowing: boolean;
followingCount: number;
videos: Array<{ videos: Array<{
__typename?: "VideoGQL"; __typename?: "VideoGQL";
id: number; id: number;
@@ -4543,8 +4510,6 @@ 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";
@@ -4563,15 +4528,8 @@ export type GetVideoFeedQuery = {
makePercentage: number; makePercentage: number;
score?: number | null; score?: number | null;
longestRun: number; longestRun: number;
runLengths: Array<number>;
averageDifficulty?: number | null; averageDifficulty?: number | null;
averageTimeBetweenShots?: number | null; averageTimeBetweenShots?: number | null;
spinTypeBreakdown: {
__typename?: "SpinTypeBreakdownGQL";
draw: number;
center: number;
follow: number;
};
}>; }>;
currentProcessing?: { currentProcessing?: {
__typename?: "VideoProcessingGQL"; __typename?: "VideoProcessingGQL";
@@ -5050,6 +5008,11 @@ export type GetAvailableSubscriptionOptionsQuery = {
getAvailableSubscriptionOptions: { getAvailableSubscriptionOptions: {
__typename?: "StripeSubscriptionOptionsGQL"; __typename?: "StripeSubscriptionOptionsGQL";
trialPeriodDays?: number | null; trialPeriodDays?: number | null;
appleIap: {
__typename?: "AppleIapSubscriptionOptionsGQL";
enabled: boolean;
proMonthlyProductId?: string | null;
};
products: Array<{ products: Array<{
__typename?: "StripeProductGQL"; __typename?: "StripeProductGQL";
id: string; id: string;
@@ -5067,12 +5030,6 @@ export type GetAvailableSubscriptionOptionsQuery = {
active: boolean; active: boolean;
}>; }>;
}>; }>;
appleIap: {
__typename?: "AppleIapSubscriptionOptionsGQL";
enabled: boolean;
proMonthlyProductId?: string | null;
productIds: Array<string>;
};
}; };
}; };
@@ -5257,15 +5214,8 @@ export type PlayerSummaryFieldsFragment = {
makePercentage: number; makePercentage: number;
score?: number | null; score?: number | null;
longestRun: number; longestRun: number;
runLengths: Array<number>;
averageDifficulty?: number | null; averageDifficulty?: number | null;
averageTimeBetweenShots?: number | null; averageTimeBetweenShots?: number | null;
spinTypeBreakdown: {
__typename?: "SpinTypeBreakdownGQL";
draw: number;
center: number;
follow: number;
};
}; };
export type PlayerClusterShotFieldsFragment = { export type PlayerClusterShotFieldsFragment = {
@@ -5948,7 +5898,6 @@ export type EditProfileImageUriMutation = {
username: string; username: string;
isAdmin?: boolean | null; isAdmin?: boolean | null;
profileImageUri?: string | null; profileImageUri?: string | null;
bio?: string | null;
fargoRating?: number | null; fargoRating?: number | null;
activeVideoId?: number | null; activeVideoId?: number | null;
createdAt?: any | null; createdAt?: any | null;
@@ -5969,7 +5918,6 @@ export type GetLoggedInUserQuery = {
username: string; username: string;
isAdmin?: boolean | null; isAdmin?: boolean | null;
profileImageUri?: string | null; profileImageUri?: string | null;
bio?: string | null;
fargoRating?: number | null; fargoRating?: number | null;
activeVideoId?: number | null; activeVideoId?: number | null;
createdAt?: any | null; createdAt?: any | null;
@@ -5992,7 +5940,6 @@ export type GetUserQuery = {
username: string; username: string;
isAdmin?: boolean | null; isAdmin?: boolean | null;
profileImageUri?: string | null; profileImageUri?: string | null;
bio?: string | null;
fargoRating?: number | null; fargoRating?: number | null;
activeVideoId?: number | null; activeVideoId?: number | null;
createdAt?: any | null; createdAt?: any | null;
@@ -6182,7 +6129,6 @@ export type EditUserMutationVariables = Exact<{
fargoRating?: InputMaybe<Scalars["Int"]["input"]>; fargoRating?: InputMaybe<Scalars["Int"]["input"]>;
videosPrivateByDefault?: InputMaybe<Scalars["Boolean"]["input"]>; videosPrivateByDefault?: InputMaybe<Scalars["Boolean"]["input"]>;
agreesToMarketing?: InputMaybe<Scalars["Boolean"]["input"]>; agreesToMarketing?: InputMaybe<Scalars["Boolean"]["input"]>;
bio?: InputMaybe<Scalars["String"]["input"]>;
}>; }>;
export type EditUserMutation = { export type EditUserMutation = {
@@ -6196,7 +6142,6 @@ export type EditUserMutation = {
updatedAt?: any | null; updatedAt?: any | null;
videosPrivateByDefault?: boolean | null; videosPrivateByDefault?: boolean | null;
agreesToMarketing?: boolean | null; agreesToMarketing?: boolean | null;
bio?: string | null;
}; };
}; };
@@ -6214,7 +6159,6 @@ export type UserFragmentFragment = {
username: string; username: string;
isAdmin?: boolean | null; isAdmin?: boolean | null;
profileImageUri?: string | null; profileImageUri?: string | null;
bio?: string | null;
fargoRating?: number | null; fargoRating?: number | null;
activeVideoId?: number | null; activeVideoId?: number | null;
createdAt?: any | null; createdAt?: any | null;
@@ -6238,7 +6182,6 @@ export type GetUsersMatchingQuery = {
username: string; username: string;
isAdmin?: boolean | null; isAdmin?: boolean | null;
profileImageUri?: string | null; profileImageUri?: string | null;
bio?: string | null;
fargoRating?: number | null; fargoRating?: number | null;
activeVideoId?: number | null; activeVideoId?: number | null;
createdAt?: any | null; createdAt?: any | null;
@@ -6396,15 +6339,8 @@ export type GetVideoDetailsQuery = {
makePercentage: number; makePercentage: number;
score?: number | null; score?: number | null;
longestRun: number; longestRun: number;
runLengths: Array<number>;
averageDifficulty?: number | null; averageDifficulty?: number | null;
averageTimeBetweenShots?: number | null; averageTimeBetweenShots?: number | null;
spinTypeBreakdown: {
__typename?: "SpinTypeBreakdownGQL";
draw: number;
center: number;
follow: number;
};
}>; }>;
}; };
}; };
@@ -6504,8 +6440,6 @@ 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";
@@ -6524,15 +6458,8 @@ export type GetVideoCardQuery = {
makePercentage: number; makePercentage: number;
score?: number | null; score?: number | null;
longestRun: number; longestRun: number;
runLengths: Array<number>;
averageDifficulty?: number | null; averageDifficulty?: number | null;
averageTimeBetweenShots?: number | null; averageTimeBetweenShots?: number | null;
spinTypeBreakdown: {
__typename?: "SpinTypeBreakdownGQL";
draw: number;
center: number;
follow: number;
};
}>; }>;
currentProcessing?: { currentProcessing?: {
__typename?: "VideoProcessingGQL"; __typename?: "VideoProcessingGQL";
@@ -7180,12 +7107,6 @@ export const PlayerSummaryFieldsFragmentDoc = gql`
makePercentage makePercentage
score score
longestRun longestRun
runLengths
spinTypeBreakdown {
draw
center
follow
}
averageDifficulty averageDifficulty
averageTimeBetweenShots averageTimeBetweenShots
} }
@@ -7219,8 +7140,6 @@ export const VideoCardFieldsFragmentDoc = gql`
id id
lastIntendedSegmentBound lastIntendedSegmentBound
streamSegmentType streamSegmentType
isCompleted
lastSegmentUploadedAt
} }
tableSize tableSize
pocketSize pocketSize
@@ -7422,7 +7341,6 @@ export const UserFragmentFragmentDoc = gql`
username username
isAdmin isAdmin
profileImageUri profileImageUri
bio
fargoRating fargoRating
activeVideoId activeVideoId
createdAt createdAt
@@ -9546,7 +9464,6 @@ export const GetVideoFeedDocument = gql`
endCursor endCursor
} }
hasFollowing hasFollowing
followingCount
} }
} }
${VideoCardFieldsFragmentDoc} ${VideoCardFieldsFragmentDoc}
@@ -10712,6 +10629,10 @@ export const GetAvailableSubscriptionOptionsDocument = gql`
query GetAvailableSubscriptionOptions { query GetAvailableSubscriptionOptions {
getAvailableSubscriptionOptions { getAvailableSubscriptionOptions {
trialPeriodDays trialPeriodDays
appleIap {
enabled
proMonthlyProductId
}
products { products {
id id
name name
@@ -10727,11 +10648,6 @@ export const GetAvailableSubscriptionOptionsDocument = gql`
active active
} }
} }
appleIap {
enabled
proMonthlyProductId
productIds
}
} }
} }
`; `;
@@ -13425,7 +13341,6 @@ export const EditUserDocument = gql`
$fargoRating: Int $fargoRating: Int
$videosPrivateByDefault: Boolean $videosPrivateByDefault: Boolean
$agreesToMarketing: Boolean $agreesToMarketing: Boolean
$bio: String
) { ) {
editUser( editUser(
input: { input: {
@@ -13433,7 +13348,6 @@ export const EditUserDocument = gql`
fargoRating: $fargoRating fargoRating: $fargoRating
videosPrivateByDefault: $videosPrivateByDefault videosPrivateByDefault: $videosPrivateByDefault
agreesToMarketing: $agreesToMarketing agreesToMarketing: $agreesToMarketing
bio: $bio
} }
) { ) {
id id
@@ -13443,7 +13357,6 @@ export const EditUserDocument = gql`
updatedAt updatedAt
videosPrivateByDefault videosPrivateByDefault
agreesToMarketing agreesToMarketing
bio
} }
} }
`; `;
@@ -13469,7 +13382,6 @@ export type EditUserMutationFn = Apollo.MutationFunction<
* fargoRating: // value for 'fargoRating' * fargoRating: // value for 'fargoRating'
* videosPrivateByDefault: // value for 'videosPrivateByDefault' * videosPrivateByDefault: // value for 'videosPrivateByDefault'
* agreesToMarketing: // value for 'agreesToMarketing' * agreesToMarketing: // value for 'agreesToMarketing'
* bio: // value for 'bio'
* }, * },
* }); * });
*/ */

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

@@ -29,6 +29,10 @@ mutation CreateCustomerPortalSession {
query GetAvailableSubscriptionOptions { query GetAvailableSubscriptionOptions {
getAvailableSubscriptionOptions { getAvailableSubscriptionOptions {
trialPeriodDays trialPeriodDays
appleIap {
enabled
proMonthlyProductId
}
products { products {
id id
name name
@@ -44,11 +48,6 @@ query GetAvailableSubscriptionOptions {
active active
} }
} }
appleIap {
enabled
proMonthlyProductId
productIds
}
} }
} }

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

@@ -356,7 +356,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
@@ -530,7 +529,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!
@@ -690,18 +688,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!
@@ -734,7 +724,6 @@ type VideoHistoryGQL {
videos: [VideoGQL!]! videos: [VideoGQL!]!
pageInfo: PageInfoGQL! pageInfo: PageInfoGQL!
hasFollowing: Boolean! hasFollowing: Boolean!
followingCount: Int!
} }
type PageInfoGQL { type PageInfoGQL {
@@ -1036,7 +1025,6 @@ type StripePriceGQL {
type AppleIapSubscriptionOptionsGQL { type AppleIapSubscriptionOptionsGQL {
enabled: Boolean! enabled: Boolean!
proMonthlyProductId: String proMonthlyProductId: String
productIds: [String!]!
} }
type UserSubscriptionStatusGQL { type UserSubscriptionStatusGQL {
@@ -1366,7 +1354,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 { type SyncAppleSubscriptionResultGQL {