Compare commits

..

43 Commits

Author SHA1 Message Date
d7bbe882b7 Merge pull request 'Just schema changes, no operations' (#202) from loewy/blocking-and-reporting into master
Reviewed-on: #202
2025-09-30 15:58:51 -06:00
d8ee83c627 codegen for reporting, user and content blocking
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2025-09-17 20:00:25 -07:00
d32cd87a60 Merge pull request 'Add subscriptionGating to config operations file' (#200) from loewy/add-sub-gating-to-config-op into master
Reviewed-on: #200
2025-08-27 21:29:16 -06:00
b956cfe0f9 add sub gating to config operations
All checks were successful
Tests / Tests (pull_request) Successful in 11s
2025-08-27 19:27:17 -07:00
3f520a0331 Merge pull request 'Add operations for user subscriptions' (#199) from loewy/get-and-cancel-sub-ops into master
Reviewed-on: #199
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2025-08-18 17:42:43 -06:00
a563834269 get user sub status and cancel sub
All checks were successful
Tests / Tests (pull_request) Successful in 11s
2025-08-14 14:02:36 -07:00
80a5bded47 Merge pull request 'Add getUserSubscriptionStatus' (#198) from loewy/subscription-status-resolvers into master
Reviewed-on: #198
2025-08-14 13:22:33 -06:00
16d8510465 add cancel subscription
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2025-08-12 13:14:08 -07:00
9b21ce1e3a get subscription resolvers
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2025-08-11 14:23:46 -07:00
dde4cfd99b Merge pull request 'Add subscriptionGatingEnabled prop to deployed config' (#196) from loewy/add-subscription-gating-enabled into master
Reviewed-on: #196
2025-08-08 16:52:30 -06:00
845fb361b9 Merge branch 'master' into loewy/add-subscription-gating-enabled
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2025-08-08 16:49:17 -06:00
9f5fcc066e Merge pull request 'Create subscription operations' (#197) from loewy/create-sub-operations into master
Reviewed-on: #197
2025-08-07 13:06:08 -06:00
dfb0361e12 Merge branch 'master' into loewy/create-sub-operations
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2025-08-07 12:59:54 -06:00
77477d63db add subscriptionGatingEnabled prop to deployed config
All checks were successful
Tests / Tests (pull_request) Successful in 31s
2025-07-29 14:28:36 -07:00
01fb113e1c Merge pull request 'DeleteUser operation' (#195) from loewy/delete-user-operation into master
Reviewed-on: #195
2025-07-11 12:18:31 -06:00
c660ed54cd delete user mutation
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2025-07-11 11:17:25 -07:00
b5fd2e2183 Merge pull request 'Create subscription' (#194) from loewy/add-stripe-stuff into master
Reviewed-on: #194
2025-07-09 12:45:03 -06:00
ddee57f4c2 create sub
All checks were successful
Tests / Tests (pull_request) Successful in 56s
2025-07-09 11:41:57 -07:00
a497abd44d create sub operations
All checks were successful
Tests / Tests (pull_request) Successful in 11s
2025-07-09 11:31:26 -07:00
49d43b2703 Merge pull request 'Create delete user' (#192) from kat/delete_user into master
Reviewed-on: #192
2025-07-09 12:04:03 -06:00
99f8968a36 Create delete user
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2025-07-09 11:37:25 -06:00
76a98aa0c3 Remove subscription stuff for now 2025-07-09 07:59:08 -06:00
f5177a877c Merge pull request 'add createSubscription' (#191) from loewy/create-checkout-session into master
Reviewed-on: #191
2025-07-09 07:57:38 -06:00
6685849cc2 add available subscription
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2025-07-08 16:40:12 -07:00
567cbc549c add createSubscription
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2025-07-08 16:20:14 -07:00
2b43493a4f Add processing progress fields 2025-07-08 14:12:15 -06:00
358eee2e16 Merge pull request 'Add getAvailableSubscriptionOptions & associated subscription types' (#190) from loewy/available-sub-options into master
Reviewed-on: #190
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2025-07-08 12:52:17 -06:00
a1d3d776aa add to schema
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2025-07-07 14:24:09 -07:00
82af3a3ce9 Merge pull request 'Add operation for ensureStripeCustomerExists' (#189) from loewy/ensure-customer-exists-operations into master
Reviewed-on: #189
2025-07-07 14:27:24 -06:00
7b51c317ca add operation for ensureStripeCustomerExists
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2025-07-07 13:12:36 -07:00
04f1bb4d74 Remove email param from ensureStripeCustomerExists 2025-07-06 16:20:49 -06:00
fbd7c2020b Merge pull request 'Add ensureStripeCustomerExists to schema' (#188) from loewy/get-stripe-customer-mutation into master
Reviewed-on: #188
2025-07-04 12:06:47 -06:00
c0636a8863 ensure stripe customer rename
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2025-07-03 19:43:21 -07:00
7302d6b8b6 get stripe customer mutation, add stripe_customer_id to user gql type
All checks were successful
Tests / Tests (pull_request) Successful in 11s
2025-07-03 15:26:44 -07:00
492178455c Add getUsersMatching 2025-06-25 15:08:19 -07:00
55a2edb042 Merge pull request 'Add bannerMessages to getDeployedConfig operation' (#187) from loewy/banner-on-deployed-config-ops into master
Reviewed-on: #187
2025-06-13 11:19:59 -06:00
31cf492889 add bannerMessages to getDeployedConfig operation
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2025-06-13 10:12:39 -07:00
de7dc675a1 Merge pull request 'Reverting config operation until BE deployed' (#186) from loewy/revert-config-operations into master
Reviewed-on: #186
2025-06-12 15:12:48 -06:00
f8f00d9c24 revert changes
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2025-06-12 14:09:20 -07:00
dc207bce55 Merge pull request 'Add banners to config operations' (#185) from loewy/update-config-operations into master
Reviewed-on: #185
2025-06-12 14:30:17 -06:00
2e5b8d2563 add banners to config operations
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2025-06-12 13:29:24 -07:00
46bcd08ae1 Merge pull request 'Add banner messages to DeployedConfigGql' (#184) from loewy/add-banner-to-config into master
Reviewed-on: #184
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2025-06-12 14:27:36 -06:00
bd383b1d55 add banner messages to deployedConfigGql
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2025-06-12 10:21:24 -07:00
6 changed files with 793 additions and 1 deletions

View File

@@ -8,7 +8,7 @@ packages = [{include = "rbproto"}]
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = ">=3.10,<=3.13" python = ">=3.10,<=3.13"
protobuf = "*" protobuf = "^4.25.3"
[build-system] [build-system]

View File

@@ -86,6 +86,22 @@ export type BankFeaturesGql = {
wallsHit: Array<WallTypeEnum>; wallsHit: Array<WallTypeEnum>;
}; };
export type BannerGql = {
__typename?: "BannerGQL";
color: Scalars["String"]["output"];
dismissible: Scalars["Boolean"]["output"];
id: Scalars["Int"]["output"];
kind: BannerKindEnum;
message: Scalars["String"]["output"];
priority: Scalars["Int"]["output"];
};
export enum BannerKindEnum {
Error = "ERROR",
Info = "INFO",
Warning = "WARNING",
}
export type BoundingBoxGql = { export type BoundingBoxGql = {
__typename?: "BoundingBoxGQL"; __typename?: "BoundingBoxGQL";
height: Scalars["Float"]["output"]; height: Scalars["Float"]["output"];
@@ -148,6 +164,12 @@ export type CreateBucketSetInput = {
keyName: Scalars["String"]["input"]; keyName: Scalars["String"]["input"];
}; };
export type CreateSubscriptionResultGql = {
__typename?: "CreateSubscriptionResultGQL";
checkoutUrl: Scalars["String"]["output"];
sessionId: Scalars["String"]["output"];
};
export type CreateUploadStreamReturn = { export type CreateUploadStreamReturn = {
__typename?: "CreateUploadStreamReturn"; __typename?: "CreateUploadStreamReturn";
videoId: Scalars["Int"]["output"]; videoId: Scalars["Int"]["output"];
@@ -190,10 +212,12 @@ export type DatetimeRangeAggregationInput = {
export type DeployedConfigGql = { export type DeployedConfigGql = {
__typename?: "DeployedConfigGQL"; __typename?: "DeployedConfigGQL";
allowNewUsers: Scalars["Boolean"]["output"]; allowNewUsers: Scalars["Boolean"]["output"];
bannerMessages: Array<BannerGql>;
devMode: Scalars["Boolean"]["output"]; devMode: Scalars["Boolean"]["output"];
environment: Scalars["String"]["output"]; environment: Scalars["String"]["output"];
firebase: Scalars["Boolean"]["output"]; firebase: Scalars["Boolean"]["output"];
minimumAllowedAppVersion: Scalars["String"]["output"]; minimumAllowedAppVersion: Scalars["String"]["output"];
subscriptionGatingEnabled: Scalars["Boolean"]["output"];
}; };
export type DoesNotOwnShotErr = { export type DoesNotOwnShotErr = {
@@ -2253,23 +2277,30 @@ export type MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailed
export type Mutation = { export type Mutation = {
__typename?: "Mutation"; __typename?: "Mutation";
addAnnotationToShot: AddShotAnnotationReturn; addAnnotationToShot: AddShotAnnotationReturn;
blockContent: Scalars["Boolean"]["output"];
blockUser: Scalars["Boolean"]["output"];
cancelSubscription: UserSubscriptionStatusGql;
commentOnVideo: Scalars["Boolean"]["output"]; commentOnVideo: Scalars["Boolean"]["output"];
createBucketSet: BucketSetGql; createBucketSet: BucketSetGql;
createSubscription: CreateSubscriptionResultGql;
createUploadStream: CreateUploadStreamReturn; createUploadStream: CreateUploadStreamReturn;
deleteComment: Scalars["Boolean"]["output"]; deleteComment: Scalars["Boolean"]["output"];
deleteTags: Scalars["Boolean"]["output"]; deleteTags: Scalars["Boolean"]["output"];
deleteUser: Scalars["Boolean"]["output"];
deleteVideo: Scalars["Boolean"]["output"]; deleteVideo: Scalars["Boolean"]["output"];
editComment: Scalars["Boolean"]["output"]; editComment: Scalars["Boolean"]["output"];
editProfileImageUri: UserGql; editProfileImageUri: UserGql;
editShot: EditShotReturn; editShot: EditShotReturn;
editUploadStream: Scalars["Boolean"]["output"]; editUploadStream: Scalars["Boolean"]["output"];
editUser: UserGql; editUser: UserGql;
ensureStripeCustomerExists: UserGql;
findPrerecordTableLayout?: Maybe<HomographyInfoGql>; findPrerecordTableLayout?: Maybe<HomographyInfoGql>;
followUser: UserGql; followUser: UserGql;
getHlsInitUploadLink: GetUploadLinkReturn; getHlsInitUploadLink: GetUploadLinkReturn;
getProfileImageUploadLink: GetProfileUploadLinkReturn; getProfileImageUploadLink: GetProfileUploadLinkReturn;
getUploadLink: GetUploadLinkReturn; getUploadLink: GetUploadLinkReturn;
reactToVideo: Scalars["Boolean"]["output"]; reactToVideo: Scalars["Boolean"]["output"];
reportContent: Scalars["Boolean"]["output"];
retireTags: Scalars["Boolean"]["output"]; retireTags: Scalars["Boolean"]["output"];
setLoggerLevel: Scalars["Boolean"]["output"]; setLoggerLevel: Scalars["Boolean"]["output"];
setSegmentDuration: Scalars["Boolean"]["output"]; setSegmentDuration: Scalars["Boolean"]["output"];
@@ -2283,6 +2314,14 @@ export type MutationAddAnnotationToShotArgs = {
shotId: Scalars["Int"]["input"]; shotId: Scalars["Int"]["input"];
}; };
export type MutationBlockContentArgs = {
videoId: Scalars["Int"]["input"];
};
export type MutationBlockUserArgs = {
userId: Scalars["Int"]["input"];
};
export type MutationCommentOnVideoArgs = { export type MutationCommentOnVideoArgs = {
message: Scalars["String"]["input"]; message: Scalars["String"]["input"];
parentCommentId?: InputMaybe<Scalars["Int"]["input"]>; parentCommentId?: InputMaybe<Scalars["Int"]["input"]>;
@@ -2293,6 +2332,10 @@ export type MutationCreateBucketSetArgs = {
params: CreateBucketSetInput; params: CreateBucketSetInput;
}; };
export type MutationCreateSubscriptionArgs = {
priceId: Scalars["String"]["input"];
};
export type MutationCreateUploadStreamArgs = { export type MutationCreateUploadStreamArgs = {
videoMetadata: VideoMetadataInput; videoMetadata: VideoMetadataInput;
}; };
@@ -2362,6 +2405,12 @@ export type MutationReactToVideoArgs = {
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
}; };
export type MutationReportContentArgs = {
customReason?: InputMaybe<Scalars["String"]["input"]>;
reason: ReportReasonEnum;
videoId: Scalars["Int"]["input"];
};
export type MutationRetireTagsArgs = { export type MutationRetireTagsArgs = {
tagIds: Array<Scalars["Int"]["input"]>; tagIds: Array<Scalars["Int"]["input"]>;
}; };
@@ -2474,6 +2523,7 @@ export type Query = {
__typename?: "Query"; __typename?: "Query";
doesUsernameExist: Scalars["Boolean"]["output"]; doesUsernameExist: Scalars["Boolean"]["output"];
getAggregatedShotMetrics: Array<AggregateResultGql>; getAggregatedShotMetrics: Array<AggregateResultGql>;
getAvailableSubscriptionOptions: StripeSubscriptionOptionsGql;
getBucketSet?: Maybe<BucketSetGql>; getBucketSet?: Maybe<BucketSetGql>;
getDeployedConfig: DeployedConfigGql; getDeployedConfig: DeployedConfigGql;
getFeedVideos: VideoHistoryGql; getFeedVideos: VideoHistoryGql;
@@ -2491,9 +2541,11 @@ export type Query = {
getTableState: TableStateGql; getTableState: TableStateGql;
getUser?: Maybe<UserGql>; getUser?: Maybe<UserGql>;
getUserRelationshipsMatching: UserRelationshipsResult; getUserRelationshipsMatching: UserRelationshipsResult;
getUserSubscriptionStatus: UserSubscriptionStatusGql;
getUserTags: Array<TagGql>; getUserTags: Array<TagGql>;
getUserVideos: VideoHistoryGql; getUserVideos: VideoHistoryGql;
getUsernames: Array<Scalars["String"]["output"]>; getUsernames: Array<Scalars["String"]["output"]>;
getUsersMatching: Array<UserGql>;
getVideo: VideoGql; getVideo: VideoGql;
getVideoMakePercentageIntervals: Array<MakePercentageIntervalGql>; getVideoMakePercentageIntervals: Array<MakePercentageIntervalGql>;
getVideos: Array<VideoGql>; getVideos: Array<VideoGql>;
@@ -2616,6 +2668,12 @@ export type QueryGetUsernamesArgs = {
matchString?: InputMaybe<Scalars["String"]["input"]>; matchString?: InputMaybe<Scalars["String"]["input"]>;
}; };
export type QueryGetUsersMatchingArgs = {
after?: InputMaybe<Scalars["String"]["input"]>;
limit?: InputMaybe<Scalars["Int"]["input"]>;
matchString?: InputMaybe<Scalars["String"]["input"]>;
};
export type QueryGetVideoArgs = { export type QueryGetVideoArgs = {
debuggingJson?: InputMaybe<Scalars["JSON"]["input"]>; debuggingJson?: InputMaybe<Scalars["JSON"]["input"]>;
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
@@ -2650,6 +2708,15 @@ export type ReactionGql = {
videoId: Scalars["Int"]["output"]; videoId: Scalars["Int"]["output"];
}; };
export enum ReportReasonEnum {
Copyright = "COPYRIGHT",
Hate = "HATE",
Nudity = "NUDITY",
Other = "OTHER",
Spam = "SPAM",
Violence = "VIOLENCE",
}
export type RequestedMedalsGql = { export type RequestedMedalsGql = {
__typename?: "RequestedMedalsGQL"; __typename?: "RequestedMedalsGQL";
dailyMakes50?: Maybe<MedalGql>; dailyMakes50?: Maybe<MedalGql>;
@@ -2892,6 +2959,42 @@ export enum StreamSegmentTypeEnum {
RbChunkedMp4 = "RB_CHUNKED_MP4", RbChunkedMp4 = "RB_CHUNKED_MP4",
} }
export type StripePriceGql = {
__typename?: "StripePriceGQL";
active: Scalars["Boolean"]["output"];
currency: Scalars["String"]["output"];
id: Scalars["String"]["output"];
recurringInterval?: Maybe<Scalars["String"]["output"]>;
recurringIntervalCount?: Maybe<Scalars["Int"]["output"]>;
type: Scalars["String"]["output"];
unitAmount?: Maybe<Scalars["Int"]["output"]>;
};
export type StripeProductGql = {
__typename?: "StripeProductGQL";
active: Scalars["Boolean"]["output"];
description?: Maybe<Scalars["String"]["output"]>;
id: Scalars["String"]["output"];
name: Scalars["String"]["output"];
prices: Array<StripePriceGql>;
};
export type StripeSubscriptionOptionsGql = {
__typename?: "StripeSubscriptionOptionsGQL";
products: Array<StripeProductGql>;
};
export enum StripeSubscriptionStatusEnum {
Active = "ACTIVE",
Canceled = "CANCELED",
Incomplete = "INCOMPLETE",
IncompleteExpired = "INCOMPLETE_EXPIRED",
PastDue = "PAST_DUE",
Paused = "PAUSED",
Trialing = "TRIALING",
Unpaid = "UNPAID",
}
export type SuccessfulAdd = { export type SuccessfulAdd = {
__typename?: "SuccessfulAdd"; __typename?: "SuccessfulAdd";
value: Scalars["Boolean"]["output"]; value: Scalars["Boolean"]["output"];
@@ -3017,6 +3120,7 @@ export type UserGql = {
id: Scalars["Int"]["output"]; id: Scalars["Int"]["output"];
isAdmin?: Maybe<Scalars["Boolean"]["output"]>; isAdmin?: Maybe<Scalars["Boolean"]["output"]>;
profileImageUri?: Maybe<Scalars["String"]["output"]>; profileImageUri?: Maybe<Scalars["String"]["output"]>;
stripeCustomerId?: Maybe<Scalars["String"]["output"]>;
updatedAt?: Maybe<Scalars["DateTime"]["output"]>; updatedAt?: Maybe<Scalars["DateTime"]["output"]>;
username: Scalars["String"]["output"]; username: Scalars["String"]["output"];
videosPrivateByDefault?: Maybe<Scalars["Boolean"]["output"]>; videosPrivateByDefault?: Maybe<Scalars["Boolean"]["output"]>;
@@ -3049,6 +3153,17 @@ export type UserShotCountEntry = {
videos: Scalars["Int"]["output"]; videos: Scalars["Int"]["output"];
}; };
export type UserSubscriptionStatusGql = {
__typename?: "UserSubscriptionStatusGQL";
currentPeriodEnd?: Maybe<Scalars["DateTime"]["output"]>;
currentPeriodStart?: Maybe<Scalars["DateTime"]["output"]>;
hasActiveSubscription: Scalars["Boolean"]["output"];
stripePriceId?: Maybe<Scalars["String"]["output"]>;
stripeSubscriptionId?: Maybe<Scalars["String"]["output"]>;
subscriptionStatus?: Maybe<StripeSubscriptionStatusEnum>;
validUntil?: Maybe<Scalars["DateTime"]["output"]>;
};
export type VideoFeedInputGql = export type VideoFeedInputGql =
| { | {
allUsers: Scalars["Boolean"]["input"]; allUsers: Scalars["Boolean"]["input"];
@@ -3137,8 +3252,11 @@ export type VideoProcessingErrorGql = {
export type VideoProcessingGql = { export type VideoProcessingGql = {
__typename?: "VideoProcessingGQL"; __typename?: "VideoProcessingGQL";
currentSegment?: Maybe<Scalars["Int"]["output"]>;
errors: Array<VideoProcessingErrorGql>; errors: Array<VideoProcessingErrorGql>;
framesProcessed?: Maybe<Scalars["Int"]["output"]>;
id: Scalars["Int"]["output"]; id: Scalars["Int"]["output"];
progressPercentage?: Maybe<Scalars["Float"]["output"]>;
status: ProcessingStatusEnum; status: ProcessingStatusEnum;
statuses: Array<VideoProcessingStatusGql>; statuses: Array<VideoProcessingStatusGql>;
}; };
@@ -3252,6 +3370,16 @@ export type GetDeployedConfigQuery = {
environment: string; environment: string;
firebase: boolean; firebase: boolean;
minimumAllowedAppVersion: string; minimumAllowedAppVersion: string;
subscriptionGatingEnabled: boolean;
bannerMessages: Array<{
__typename?: "BannerGQL";
color: string;
dismissible: boolean;
id: number;
kind: BannerKindEnum;
message: string;
priority: number;
}>;
}; };
}; };
@@ -3799,6 +3927,104 @@ export type GetMedalsQuery = {
}; };
}; };
export type EnsureStripeCustomerExistsMutationVariables = Exact<{
[key: string]: never;
}>;
export type EnsureStripeCustomerExistsMutation = {
__typename?: "Mutation";
ensureStripeCustomerExists: {
__typename?: "UserGQL";
id: number;
firebaseUid?: string | null;
username: string;
stripeCustomerId?: string | null;
profileImageUri?: string | null;
isAdmin?: boolean | null;
fargoRating?: number | null;
videosPrivateByDefault?: boolean | null;
createdAt?: any | null;
updatedAt?: any | null;
};
};
export type CreateSubscriptionMutationVariables = Exact<{
priceId: Scalars["String"]["input"];
}>;
export type CreateSubscriptionMutation = {
__typename?: "Mutation";
createSubscription: {
__typename?: "CreateSubscriptionResultGQL";
checkoutUrl: string;
sessionId: string;
};
};
export type GetAvailableSubscriptionOptionsQueryVariables = Exact<{
[key: string]: never;
}>;
export type GetAvailableSubscriptionOptionsQuery = {
__typename?: "Query";
getAvailableSubscriptionOptions: {
__typename?: "StripeSubscriptionOptionsGQL";
products: Array<{
__typename?: "StripeProductGQL";
id: string;
name: string;
description?: string | null;
active: boolean;
prices: Array<{
__typename?: "StripePriceGQL";
id: string;
currency: string;
unitAmount?: number | null;
recurringInterval?: string | null;
recurringIntervalCount?: number | null;
type: string;
active: boolean;
}>;
}>;
};
};
export type GetSubscriptionStatusQueryVariables = Exact<{
[key: string]: never;
}>;
export type GetSubscriptionStatusQuery = {
__typename?: "Query";
getUserSubscriptionStatus: {
__typename?: "UserSubscriptionStatusGQL";
hasActiveSubscription: boolean;
subscriptionStatus?: StripeSubscriptionStatusEnum | null;
currentPeriodStart?: any | null;
currentPeriodEnd?: any | null;
validUntil?: any | null;
stripePriceId?: string | null;
stripeSubscriptionId?: string | null;
};
};
export type CancelSubscriptionMutationVariables = Exact<{
[key: string]: never;
}>;
export type CancelSubscriptionMutation = {
__typename?: "Mutation";
cancelSubscription: {
__typename?: "UserSubscriptionStatusGQL";
hasActiveSubscription: boolean;
subscriptionStatus?: StripeSubscriptionStatusEnum | null;
currentPeriodStart?: any | null;
currentPeriodEnd?: any | null;
validUntil?: any | null;
stripePriceId?: string | null;
stripeSubscriptionId?: string | null;
};
};
export type ReactToVideoMutationVariables = Exact<{ export type ReactToVideoMutationVariables = Exact<{
videoId: Scalars["Int"]["input"]; videoId: Scalars["Int"]["input"];
reaction?: InputMaybe<ReactionEnum>; reaction?: InputMaybe<ReactionEnum>;
@@ -4614,6 +4840,13 @@ export type EditUserMutation = {
}; };
}; };
export type DeleteUserMutationVariables = Exact<{ [key: string]: never }>;
export type DeleteUserMutation = {
__typename?: "Mutation";
deleteUser: boolean;
};
export type UserFragmentFragment = { export type UserFragmentFragment = {
__typename?: "UserGQL"; __typename?: "UserGQL";
id: number; id: number;
@@ -5967,6 +6200,15 @@ export const GetDeployedConfigDocument = gql`
environment environment
firebase firebase
minimumAllowedAppVersion minimumAllowedAppVersion
subscriptionGatingEnabled
bannerMessages {
color
dismissible
id
kind
message
priority
}
} }
} }
`; `;
@@ -6598,6 +6840,335 @@ export type GetMedalsQueryResult = Apollo.QueryResult<
GetMedalsQuery, GetMedalsQuery,
GetMedalsQueryVariables GetMedalsQueryVariables
>; >;
export const EnsureStripeCustomerExistsDocument = gql`
mutation EnsureStripeCustomerExists {
ensureStripeCustomerExists {
id
firebaseUid
username
stripeCustomerId
profileImageUri
isAdmin
fargoRating
videosPrivateByDefault
createdAt
updatedAt
}
}
`;
export type EnsureStripeCustomerExistsMutationFn = Apollo.MutationFunction<
EnsureStripeCustomerExistsMutation,
EnsureStripeCustomerExistsMutationVariables
>;
/**
* __useEnsureStripeCustomerExistsMutation__
*
* To run a mutation, you first call `useEnsureStripeCustomerExistsMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useEnsureStripeCustomerExistsMutation` returns a tuple that includes:
* - A mutate function that you can call at any time to execute the mutation
* - An object with fields that represent the current status of the mutation's execution
*
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
*
* @example
* const [ensureStripeCustomerExistsMutation, { data, loading, error }] = useEnsureStripeCustomerExistsMutation({
* variables: {
* },
* });
*/
export function useEnsureStripeCustomerExistsMutation(
baseOptions?: Apollo.MutationHookOptions<
EnsureStripeCustomerExistsMutation,
EnsureStripeCustomerExistsMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<
EnsureStripeCustomerExistsMutation,
EnsureStripeCustomerExistsMutationVariables
>(EnsureStripeCustomerExistsDocument, options);
}
export type EnsureStripeCustomerExistsMutationHookResult = ReturnType<
typeof useEnsureStripeCustomerExistsMutation
>;
export type EnsureStripeCustomerExistsMutationResult =
Apollo.MutationResult<EnsureStripeCustomerExistsMutation>;
export type EnsureStripeCustomerExistsMutationOptions =
Apollo.BaseMutationOptions<
EnsureStripeCustomerExistsMutation,
EnsureStripeCustomerExistsMutationVariables
>;
export const CreateSubscriptionDocument = gql`
mutation CreateSubscription($priceId: String!) {
createSubscription(priceId: $priceId) {
checkoutUrl
sessionId
}
}
`;
export type CreateSubscriptionMutationFn = Apollo.MutationFunction<
CreateSubscriptionMutation,
CreateSubscriptionMutationVariables
>;
/**
* __useCreateSubscriptionMutation__
*
* To run a mutation, you first call `useCreateSubscriptionMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useCreateSubscriptionMutation` returns a tuple that includes:
* - A mutate function that you can call at any time to execute the mutation
* - An object with fields that represent the current status of the mutation's execution
*
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
*
* @example
* const [createSubscriptionMutation, { data, loading, error }] = useCreateSubscriptionMutation({
* variables: {
* priceId: // value for 'priceId'
* },
* });
*/
export function useCreateSubscriptionMutation(
baseOptions?: Apollo.MutationHookOptions<
CreateSubscriptionMutation,
CreateSubscriptionMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<
CreateSubscriptionMutation,
CreateSubscriptionMutationVariables
>(CreateSubscriptionDocument, options);
}
export type CreateSubscriptionMutationHookResult = ReturnType<
typeof useCreateSubscriptionMutation
>;
export type CreateSubscriptionMutationResult =
Apollo.MutationResult<CreateSubscriptionMutation>;
export type CreateSubscriptionMutationOptions = Apollo.BaseMutationOptions<
CreateSubscriptionMutation,
CreateSubscriptionMutationVariables
>;
export const GetAvailableSubscriptionOptionsDocument = gql`
query GetAvailableSubscriptionOptions {
getAvailableSubscriptionOptions {
products {
id
name
description
active
prices {
id
currency
unitAmount
recurringInterval
recurringIntervalCount
type
active
}
}
}
}
`;
/**
* __useGetAvailableSubscriptionOptionsQuery__
*
* To run a query within a React component, call `useGetAvailableSubscriptionOptionsQuery` and pass it any options that fit your needs.
* When your component renders, `useGetAvailableSubscriptionOptionsQuery` returns an object from Apollo Client that contains loading, error, and data properties
* you can use to render your UI.
*
* @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;
*
* @example
* const { data, loading, error } = useGetAvailableSubscriptionOptionsQuery({
* variables: {
* },
* });
*/
export function useGetAvailableSubscriptionOptionsQuery(
baseOptions?: Apollo.QueryHookOptions<
GetAvailableSubscriptionOptionsQuery,
GetAvailableSubscriptionOptionsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<
GetAvailableSubscriptionOptionsQuery,
GetAvailableSubscriptionOptionsQueryVariables
>(GetAvailableSubscriptionOptionsDocument, options);
}
export function useGetAvailableSubscriptionOptionsLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetAvailableSubscriptionOptionsQuery,
GetAvailableSubscriptionOptionsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<
GetAvailableSubscriptionOptionsQuery,
GetAvailableSubscriptionOptionsQueryVariables
>(GetAvailableSubscriptionOptionsDocument, options);
}
export function useGetAvailableSubscriptionOptionsSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetAvailableSubscriptionOptionsQuery,
GetAvailableSubscriptionOptionsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
GetAvailableSubscriptionOptionsQuery,
GetAvailableSubscriptionOptionsQueryVariables
>(GetAvailableSubscriptionOptionsDocument, options);
}
export type GetAvailableSubscriptionOptionsQueryHookResult = ReturnType<
typeof useGetAvailableSubscriptionOptionsQuery
>;
export type GetAvailableSubscriptionOptionsLazyQueryHookResult = ReturnType<
typeof useGetAvailableSubscriptionOptionsLazyQuery
>;
export type GetAvailableSubscriptionOptionsSuspenseQueryHookResult = ReturnType<
typeof useGetAvailableSubscriptionOptionsSuspenseQuery
>;
export type GetAvailableSubscriptionOptionsQueryResult = Apollo.QueryResult<
GetAvailableSubscriptionOptionsQuery,
GetAvailableSubscriptionOptionsQueryVariables
>;
export const GetSubscriptionStatusDocument = gql`
query GetSubscriptionStatus {
getUserSubscriptionStatus {
hasActiveSubscription
subscriptionStatus
currentPeriodStart
currentPeriodEnd
validUntil
stripePriceId
stripeSubscriptionId
}
}
`;
/**
* __useGetSubscriptionStatusQuery__
*
* To run a query within a React component, call `useGetSubscriptionStatusQuery` and pass it any options that fit your needs.
* When your component renders, `useGetSubscriptionStatusQuery` returns an object from Apollo Client that contains loading, error, and data properties
* you can use to render your UI.
*
* @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;
*
* @example
* const { data, loading, error } = useGetSubscriptionStatusQuery({
* variables: {
* },
* });
*/
export function useGetSubscriptionStatusQuery(
baseOptions?: Apollo.QueryHookOptions<
GetSubscriptionStatusQuery,
GetSubscriptionStatusQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<
GetSubscriptionStatusQuery,
GetSubscriptionStatusQueryVariables
>(GetSubscriptionStatusDocument, options);
}
export function useGetSubscriptionStatusLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetSubscriptionStatusQuery,
GetSubscriptionStatusQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<
GetSubscriptionStatusQuery,
GetSubscriptionStatusQueryVariables
>(GetSubscriptionStatusDocument, options);
}
export function useGetSubscriptionStatusSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetSubscriptionStatusQuery,
GetSubscriptionStatusQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
GetSubscriptionStatusQuery,
GetSubscriptionStatusQueryVariables
>(GetSubscriptionStatusDocument, options);
}
export type GetSubscriptionStatusQueryHookResult = ReturnType<
typeof useGetSubscriptionStatusQuery
>;
export type GetSubscriptionStatusLazyQueryHookResult = ReturnType<
typeof useGetSubscriptionStatusLazyQuery
>;
export type GetSubscriptionStatusSuspenseQueryHookResult = ReturnType<
typeof useGetSubscriptionStatusSuspenseQuery
>;
export type GetSubscriptionStatusQueryResult = Apollo.QueryResult<
GetSubscriptionStatusQuery,
GetSubscriptionStatusQueryVariables
>;
export const CancelSubscriptionDocument = gql`
mutation CancelSubscription {
cancelSubscription {
hasActiveSubscription
subscriptionStatus
currentPeriodStart
currentPeriodEnd
validUntil
stripePriceId
stripeSubscriptionId
}
}
`;
export type CancelSubscriptionMutationFn = Apollo.MutationFunction<
CancelSubscriptionMutation,
CancelSubscriptionMutationVariables
>;
/**
* __useCancelSubscriptionMutation__
*
* To run a mutation, you first call `useCancelSubscriptionMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useCancelSubscriptionMutation` returns a tuple that includes:
* - A mutate function that you can call at any time to execute the mutation
* - An object with fields that represent the current status of the mutation's execution
*
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
*
* @example
* const [cancelSubscriptionMutation, { data, loading, error }] = useCancelSubscriptionMutation({
* variables: {
* },
* });
*/
export function useCancelSubscriptionMutation(
baseOptions?: Apollo.MutationHookOptions<
CancelSubscriptionMutation,
CancelSubscriptionMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<
CancelSubscriptionMutation,
CancelSubscriptionMutationVariables
>(CancelSubscriptionDocument, options);
}
export type CancelSubscriptionMutationHookResult = ReturnType<
typeof useCancelSubscriptionMutation
>;
export type CancelSubscriptionMutationResult =
Apollo.MutationResult<CancelSubscriptionMutation>;
export type CancelSubscriptionMutationOptions = Apollo.BaseMutationOptions<
CancelSubscriptionMutation,
CancelSubscriptionMutationVariables
>;
export const ReactToVideoDocument = gql` export const ReactToVideoDocument = gql`
mutation ReactToVideo($videoId: Int!, $reaction: ReactionEnum) { mutation ReactToVideo($videoId: Int!, $reaction: ReactionEnum) {
reactToVideo(videoId: $videoId, reaction: $reaction) reactToVideo(videoId: $videoId, reaction: $reaction)
@@ -8568,6 +9139,53 @@ export type EditUserMutationOptions = Apollo.BaseMutationOptions<
EditUserMutation, EditUserMutation,
EditUserMutationVariables EditUserMutationVariables
>; >;
export const DeleteUserDocument = gql`
mutation deleteUser {
deleteUser
}
`;
export type DeleteUserMutationFn = Apollo.MutationFunction<
DeleteUserMutation,
DeleteUserMutationVariables
>;
/**
* __useDeleteUserMutation__
*
* To run a mutation, you first call `useDeleteUserMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useDeleteUserMutation` returns a tuple that includes:
* - A mutate function that you can call at any time to execute the mutation
* - An object with fields that represent the current status of the mutation's execution
*
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
*
* @example
* const [deleteUserMutation, { data, loading, error }] = useDeleteUserMutation({
* variables: {
* },
* });
*/
export function useDeleteUserMutation(
baseOptions?: Apollo.MutationHookOptions<
DeleteUserMutation,
DeleteUserMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<DeleteUserMutation, DeleteUserMutationVariables>(
DeleteUserDocument,
options,
);
}
export type DeleteUserMutationHookResult = ReturnType<
typeof useDeleteUserMutation
>;
export type DeleteUserMutationResult =
Apollo.MutationResult<DeleteUserMutation>;
export type DeleteUserMutationOptions = Apollo.BaseMutationOptions<
DeleteUserMutation,
DeleteUserMutationVariables
>;
export const GetStreamMonitoringDetailsDocument = gql` export const GetStreamMonitoringDetailsDocument = gql`
query GetStreamMonitoringDetails($videoId: Int!, $debuggingJson: JSON) { query GetStreamMonitoringDetails($videoId: Int!, $debuggingJson: JSON) {
getVideo(videoId: $videoId, debuggingJson: $debuggingJson) { getVideo(videoId: $videoId, debuggingJson: $debuggingJson) {

View File

@@ -5,5 +5,14 @@ query getDeployedConfig {
environment environment
firebase firebase
minimumAllowedAppVersion minimumAllowedAppVersion
subscriptionGatingEnabled
bannerMessages {
color
dismissible
id
kind
message
priority
}
} }
} }

View File

@@ -0,0 +1,65 @@
mutation EnsureStripeCustomerExists {
ensureStripeCustomerExists {
id
firebaseUid
username
stripeCustomerId
profileImageUri
isAdmin
fargoRating
videosPrivateByDefault
createdAt
updatedAt
}
}
mutation CreateSubscription($priceId: String!) {
createSubscription(priceId: $priceId) {
checkoutUrl
sessionId
}
}
query GetAvailableSubscriptionOptions {
getAvailableSubscriptionOptions {
products {
id
name
description
active
prices {
id
currency
unitAmount
recurringInterval
recurringIntervalCount
type
active
}
}
}
}
query GetSubscriptionStatus {
getUserSubscriptionStatus {
hasActiveSubscription
subscriptionStatus
currentPeriodStart
currentPeriodEnd
validUntil
stripePriceId
stripeSubscriptionId
}
}
mutation CancelSubscription {
cancelSubscription {
hasActiveSubscription
subscriptionStatus
currentPeriodStart
currentPeriodEnd
validUntil
stripePriceId
stripeSubscriptionId
}
}

View File

@@ -157,6 +157,10 @@ mutation editUser(
} }
} }
mutation deleteUser {
deleteUser
}
fragment UserFragment on UserGQL { fragment UserFragment on UserGQL {
id id
firebaseUid firebaseUid

View File

@@ -70,12 +70,19 @@ type Query {
limit: Int = null limit: Int = null
after: String = null after: String = null
): [String!]! ): [String!]!
getUsersMatching(
matchString: String = null
limit: Int = null
after: String = null
): [UserGQL!]!
getUserRelationshipsMatching( getUserRelationshipsMatching(
userId: Int! userId: Int!
matchString: String = null matchString: String = null
limit: Int = 100 limit: Int = 100
after: String = null after: String = null
): UserRelationshipsResult! ): UserRelationshipsResult!
getAvailableSubscriptionOptions: StripeSubscriptionOptionsGQL!
getUserSubscriptionStatus: UserSubscriptionStatusGQL!
getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL! getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL!
getUserVideos( getUserVideos(
userId: Int = null userId: Int = null
@@ -291,6 +298,23 @@ type DeployedConfigGQL {
devMode: Boolean! devMode: Boolean!
environment: String! environment: String!
minimumAllowedAppVersion: String! minimumAllowedAppVersion: String!
subscriptionGatingEnabled: Boolean!
bannerMessages: [BannerGQL!]!
}
type BannerGQL {
id: Int!
message: String!
color: String!
kind: BannerKindEnum!
dismissible: Boolean!
priority: Int!
}
enum BannerKindEnum {
INFO
WARNING
ERROR
} }
type VideoHistoryGQL { type VideoHistoryGQL {
@@ -335,6 +359,7 @@ type UserGQL {
isAdmin: Boolean isAdmin: Boolean
fargoRating: Int fargoRating: Int
activeVideoId: Int activeVideoId: Int
stripeCustomerId: String
profileImageUri: String profileImageUri: String
createdAt: DateTime createdAt: DateTime
updatedAt: DateTime updatedAt: DateTime
@@ -546,6 +571,9 @@ type VideoProcessingGQL {
errors: [VideoProcessingErrorGQL!]! errors: [VideoProcessingErrorGQL!]!
status: ProcessingStatusEnum! status: ProcessingStatusEnum!
statuses: [VideoProcessingStatusGQL!]! statuses: [VideoProcessingStatusGQL!]!
framesProcessed: Int
currentSegment: Int
progressPercentage: Float
} }
type VideoProcessingErrorGQL { type VideoProcessingErrorGQL {
@@ -801,6 +829,49 @@ type UserRelationship {
toUserIsFollowedBy: Boolean! toUserIsFollowedBy: Boolean!
} }
type StripeSubscriptionOptionsGQL {
products: [StripeProductGQL!]!
}
type StripeProductGQL {
id: String!
name: String!
description: String
active: Boolean!
prices: [StripePriceGQL!]!
}
type StripePriceGQL {
id: String!
currency: String!
unitAmount: Int
recurringInterval: String
recurringIntervalCount: Int
type: String!
active: Boolean!
}
type UserSubscriptionStatusGQL {
hasActiveSubscription: Boolean!
subscriptionStatus: StripeSubscriptionStatusEnum
currentPeriodStart: DateTime
currentPeriodEnd: DateTime
validUntil: DateTime
stripePriceId: String
stripeSubscriptionId: String
}
enum StripeSubscriptionStatusEnum {
INCOMPLETE
INCOMPLETE_EXPIRED
TRIALING
ACTIVE
PAST_DUE
CANCELED
UNPAID
PAUSED
}
type UserPlayTimeGQL { type UserPlayTimeGQL {
totalSeconds: Float! totalSeconds: Float!
} }
@@ -836,6 +907,13 @@ type Mutation {
): Boolean! ): Boolean!
editComment(videoId: Int!, commentId: Int!, newMessage: String!): Boolean! editComment(videoId: Int!, commentId: Int!, newMessage: String!): Boolean!
deleteComment(videoId: Int!, commentId: Int!): Boolean! deleteComment(videoId: Int!, commentId: Int!): Boolean!
blockContent(videoId: Int!): Boolean!
blockUser(userId: Int!): Boolean!
reportContent(
videoId: Int!
reason: ReportReasonEnum!
customReason: String = null
): Boolean!
addAnnotationToShot( addAnnotationToShot(
shotId: Int! shotId: Int!
annotationName: String! annotationName: String!
@@ -857,6 +935,10 @@ type Mutation {
followUser(followedUserId: Int!): UserGQL! followUser(followedUserId: Int!): UserGQL!
unfollowUser(followedUserId: Int!): UserGQL! unfollowUser(followedUserId: Int!): UserGQL!
retireTags(tagIds: [Int!]!): Boolean! retireTags(tagIds: [Int!]!): Boolean!
ensureStripeCustomerExists: UserGQL!
deleteUser: Boolean!
createSubscription(priceId: String!): CreateSubscriptionResultGQL!
cancelSubscription: UserSubscriptionStatusGQL!
findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL
createUploadStream( createUploadStream(
videoMetadata: VideoMetadataInput! videoMetadata: VideoMetadataInput!
@@ -879,6 +961,15 @@ input CreateBucketSetInput {
buckets: [BucketInputGQL!]! buckets: [BucketInputGQL!]!
} }
enum ReportReasonEnum {
SPAM
NUDITY
VIOLENCE
HATE
COPYRIGHT
OTHER
}
type AddShotAnnotationReturn { type AddShotAnnotationReturn {
value: SuccessfulAddAddShotAnnotationErrors! value: SuccessfulAddAddShotAnnotationErrors!
} }
@@ -966,6 +1057,11 @@ input EditUserInputGQL {
videosPrivateByDefault: Boolean = null videosPrivateByDefault: Boolean = null
} }
type CreateSubscriptionResultGQL {
checkoutUrl: String!
sessionId: String!
}
type CreateUploadStreamReturn { type CreateUploadStreamReturn {
videoId: Int! videoId: Int!
} }