Compare commits

...

23 Commits

Author SHA1 Message Date
a7649351b3 add marketing to schema
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2025-10-10 14:44:45 -07:00
051555f9fc Merge pull request 'Schema + Ops for Content Moderation GQL' (#201) from loewy/add-block-and-reporting-ops into master
Reviewed-on: #201
2025-09-30 15:58:59 -06:00
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
e783050a02 operations
All checks were successful
Tests / Tests (pull_request) Successful in 22s
2025-09-23 11:02:16 -07: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
6 changed files with 780 additions and 0 deletions

View File

@@ -164,6 +164,12 @@ export type CreateBucketSetInput = {
keyName: Scalars["String"]["input"];
};
export type CreateSubscriptionResultGql = {
__typename?: "CreateSubscriptionResultGQL";
checkoutUrl: Scalars["String"]["output"];
sessionId: Scalars["String"]["output"];
};
export type CreateUploadStreamReturn = {
__typename?: "CreateUploadStreamReturn";
videoId: Scalars["Int"]["output"];
@@ -211,6 +217,7 @@ export type DeployedConfigGql = {
environment: Scalars["String"]["output"];
firebase: Scalars["Boolean"]["output"];
minimumAllowedAppVersion: Scalars["String"]["output"];
subscriptionGatingEnabled: Scalars["Boolean"]["output"];
};
export type DoesNotOwnShotErr = {
@@ -230,6 +237,7 @@ export type EditShotReturn = {
};
export type EditUserInputGql = {
agreesToMarketing?: InputMaybe<Scalars["Boolean"]["input"]>;
fargoRating?: InputMaybe<Scalars["Int"]["input"]>;
username?: InputMaybe<Scalars["String"]["input"]>;
videosPrivateByDefault?: InputMaybe<Scalars["Boolean"]["input"]>;
@@ -2270,8 +2278,12 @@ export type MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailed
export type Mutation = {
__typename?: "Mutation";
addAnnotationToShot: AddShotAnnotationReturn;
blockContent: Scalars["Boolean"]["output"];
blockUser: Scalars["Boolean"]["output"];
cancelSubscription: UserSubscriptionStatusGql;
commentOnVideo: Scalars["Boolean"]["output"];
createBucketSet: BucketSetGql;
createSubscription: CreateSubscriptionResultGql;
createUploadStream: CreateUploadStreamReturn;
deleteComment: Scalars["Boolean"]["output"];
deleteTags: Scalars["Boolean"]["output"];
@@ -2289,6 +2301,7 @@ export type Mutation = {
getProfileImageUploadLink: GetProfileUploadLinkReturn;
getUploadLink: GetUploadLinkReturn;
reactToVideo: Scalars["Boolean"]["output"];
reportContent: Scalars["Boolean"]["output"];
retireTags: Scalars["Boolean"]["output"];
setLoggerLevel: Scalars["Boolean"]["output"];
setSegmentDuration: Scalars["Boolean"]["output"];
@@ -2302,6 +2315,14 @@ export type MutationAddAnnotationToShotArgs = {
shotId: Scalars["Int"]["input"];
};
export type MutationBlockContentArgs = {
videoId: Scalars["Int"]["input"];
};
export type MutationBlockUserArgs = {
userId: Scalars["Int"]["input"];
};
export type MutationCommentOnVideoArgs = {
message: Scalars["String"]["input"];
parentCommentId?: InputMaybe<Scalars["Int"]["input"]>;
@@ -2312,6 +2333,10 @@ export type MutationCreateBucketSetArgs = {
params: CreateBucketSetInput;
};
export type MutationCreateSubscriptionArgs = {
priceId: Scalars["String"]["input"];
};
export type MutationCreateUploadStreamArgs = {
videoMetadata: VideoMetadataInput;
};
@@ -2381,6 +2406,12 @@ export type MutationReactToVideoArgs = {
videoId: Scalars["Int"]["input"];
};
export type MutationReportContentArgs = {
customReason?: InputMaybe<Scalars["String"]["input"]>;
reason: ReportReasonEnum;
videoId: Scalars["Int"]["input"];
};
export type MutationRetireTagsArgs = {
tagIds: Array<Scalars["Int"]["input"]>;
};
@@ -2511,6 +2542,7 @@ export type Query = {
getTableState: TableStateGql;
getUser?: Maybe<UserGql>;
getUserRelationshipsMatching: UserRelationshipsResult;
getUserSubscriptionStatus: UserSubscriptionStatusGql;
getUserTags: Array<TagGql>;
getUserVideos: VideoHistoryGql;
getUsernames: Array<Scalars["String"]["output"]>;
@@ -2677,6 +2709,15 @@ export type ReactionGql = {
videoId: Scalars["Int"]["output"];
};
export enum ReportReasonEnum {
Copyright = "COPYRIGHT",
Hate = "HATE",
Nudity = "NUDITY",
Other = "OTHER",
Spam = "SPAM",
Violence = "VIOLENCE",
}
export type RequestedMedalsGql = {
__typename?: "RequestedMedalsGQL";
dailyMakes50?: Maybe<MedalGql>;
@@ -2944,6 +2985,17 @@ export type 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 = {
__typename?: "SuccessfulAdd";
value: Scalars["Boolean"]["output"];
@@ -3061,6 +3113,7 @@ export type UploadStreamGql = {
export type UserGql = {
__typename?: "UserGQL";
activeVideoId?: Maybe<Scalars["Int"]["output"]>;
agreesToMarketing?: Maybe<Scalars["Boolean"]["output"]>;
createdAt?: Maybe<Scalars["DateTime"]["output"]>;
fargoRating?: Maybe<Scalars["Int"]["output"]>;
firebaseUid?: Maybe<Scalars["String"]["output"]>;
@@ -3102,6 +3155,17 @@ export type UserShotCountEntry = {
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 =
| {
allUsers: Scalars["Boolean"]["input"];
@@ -3308,6 +3372,7 @@ export type GetDeployedConfigQuery = {
environment: string;
firebase: boolean;
minimumAllowedAppVersion: string;
subscriptionGatingEnabled: boolean;
bannerMessages: Array<{
__typename?: "BannerGQL";
color: string;
@@ -3320,6 +3385,32 @@ export type GetDeployedConfigQuery = {
};
};
export type BlockContentMutationVariables = Exact<{
videoId: Scalars["Int"]["input"];
}>;
export type BlockContentMutation = {
__typename?: "Mutation";
blockContent: boolean;
};
export type BlockUserMutationVariables = Exact<{
userId: Scalars["Int"]["input"];
}>;
export type BlockUserMutation = { __typename?: "Mutation"; blockUser: boolean };
export type ReportContentMutationVariables = Exact<{
videoId: Scalars["Int"]["input"];
reason: ReportReasonEnum;
customReason?: InputMaybe<Scalars["String"]["input"]>;
}>;
export type ReportContentMutation = {
__typename?: "Mutation";
reportContent: boolean;
};
export type GetFeedQueryVariables = Exact<{
limit?: Scalars["Int"]["input"];
after?: InputMaybe<Scalars["String"]["input"]>;
@@ -3885,6 +3976,83 @@ export type EnsureStripeCustomerExistsMutation = {
};
};
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<{
videoId: Scalars["Int"]["input"];
reaction?: InputMaybe<ReactionEnum>;
@@ -4497,6 +4665,7 @@ export type EditProfileImageUriMutation = {
createdAt?: any | null;
updatedAt?: any | null;
videosPrivateByDefault?: boolean | null;
agreesToMarketing?: boolean | null;
};
};
@@ -4516,6 +4685,7 @@ export type GetLoggedInUserQuery = {
createdAt?: any | null;
updatedAt?: any | null;
videosPrivateByDefault?: boolean | null;
agreesToMarketing?: boolean | null;
} | null;
};
@@ -4537,6 +4707,7 @@ export type GetUserQuery = {
createdAt?: any | null;
updatedAt?: any | null;
videosPrivateByDefault?: boolean | null;
agreesToMarketing?: boolean | null;
} | null;
};
@@ -4685,6 +4856,7 @@ export type EditUserMutationVariables = Exact<{
username?: InputMaybe<Scalars["String"]["input"]>;
fargoRating?: InputMaybe<Scalars["Int"]["input"]>;
videosPrivateByDefault?: InputMaybe<Scalars["Boolean"]["input"]>;
agreesToMarketing?: InputMaybe<Scalars["Boolean"]["input"]>;
}>;
export type EditUserMutation = {
@@ -4697,9 +4869,17 @@ export type EditUserMutation = {
fargoRating?: number | null;
updatedAt?: any | null;
videosPrivateByDefault?: boolean | null;
agreesToMarketing?: boolean | null;
};
};
export type DeleteUserMutationVariables = Exact<{ [key: string]: never }>;
export type DeleteUserMutation = {
__typename?: "Mutation";
deleteUser: boolean;
};
export type UserFragmentFragment = {
__typename?: "UserGQL";
id: number;
@@ -4712,6 +4892,7 @@ export type UserFragmentFragment = {
createdAt?: any | null;
updatedAt?: any | null;
videosPrivateByDefault?: boolean | null;
agreesToMarketing?: boolean | null;
};
export type GetStreamMonitoringDetailsQueryVariables = Exact<{
@@ -5674,6 +5855,7 @@ export const UserFragmentFragmentDoc = gql`
createdAt
updatedAt
videosPrivateByDefault
agreesToMarketing
}
`;
export const VideoStreamMetadataFragmentDoc = gql`
@@ -6053,6 +6235,7 @@ export const GetDeployedConfigDocument = gql`
environment
firebase
minimumAllowedAppVersion
subscriptionGatingEnabled
bannerMessages {
color
dismissible
@@ -6129,6 +6312,159 @@ export type GetDeployedConfigQueryResult = Apollo.QueryResult<
GetDeployedConfigQuery,
GetDeployedConfigQueryVariables
>;
export const BlockContentDocument = gql`
mutation blockContent($videoId: Int!) {
blockContent(videoId: $videoId)
}
`;
export type BlockContentMutationFn = Apollo.MutationFunction<
BlockContentMutation,
BlockContentMutationVariables
>;
/**
* __useBlockContentMutation__
*
* To run a mutation, you first call `useBlockContentMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useBlockContentMutation` 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 [blockContentMutation, { data, loading, error }] = useBlockContentMutation({
* variables: {
* videoId: // value for 'videoId'
* },
* });
*/
export function useBlockContentMutation(
baseOptions?: Apollo.MutationHookOptions<
BlockContentMutation,
BlockContentMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<
BlockContentMutation,
BlockContentMutationVariables
>(BlockContentDocument, options);
}
export type BlockContentMutationHookResult = ReturnType<
typeof useBlockContentMutation
>;
export type BlockContentMutationResult =
Apollo.MutationResult<BlockContentMutation>;
export type BlockContentMutationOptions = Apollo.BaseMutationOptions<
BlockContentMutation,
BlockContentMutationVariables
>;
export const BlockUserDocument = gql`
mutation blockUser($userId: Int!) {
blockUser(userId: $userId)
}
`;
export type BlockUserMutationFn = Apollo.MutationFunction<
BlockUserMutation,
BlockUserMutationVariables
>;
/**
* __useBlockUserMutation__
*
* To run a mutation, you first call `useBlockUserMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useBlockUserMutation` 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 [blockUserMutation, { data, loading, error }] = useBlockUserMutation({
* variables: {
* userId: // value for 'userId'
* },
* });
*/
export function useBlockUserMutation(
baseOptions?: Apollo.MutationHookOptions<
BlockUserMutation,
BlockUserMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<BlockUserMutation, BlockUserMutationVariables>(
BlockUserDocument,
options,
);
}
export type BlockUserMutationHookResult = ReturnType<
typeof useBlockUserMutation
>;
export type BlockUserMutationResult = Apollo.MutationResult<BlockUserMutation>;
export type BlockUserMutationOptions = Apollo.BaseMutationOptions<
BlockUserMutation,
BlockUserMutationVariables
>;
export const ReportContentDocument = gql`
mutation reportContent(
$videoId: Int!
$reason: ReportReasonEnum!
$customReason: String = null
) {
reportContent(
videoId: $videoId
reason: $reason
customReason: $customReason
)
}
`;
export type ReportContentMutationFn = Apollo.MutationFunction<
ReportContentMutation,
ReportContentMutationVariables
>;
/**
* __useReportContentMutation__
*
* To run a mutation, you first call `useReportContentMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useReportContentMutation` 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 [reportContentMutation, { data, loading, error }] = useReportContentMutation({
* variables: {
* videoId: // value for 'videoId'
* reason: // value for 'reason'
* customReason: // value for 'customReason'
* },
* });
*/
export function useReportContentMutation(
baseOptions?: Apollo.MutationHookOptions<
ReportContentMutation,
ReportContentMutationVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useMutation<
ReportContentMutation,
ReportContentMutationVariables
>(ReportContentDocument, options);
}
export type ReportContentMutationHookResult = ReturnType<
typeof useReportContentMutation
>;
export type ReportContentMutationResult =
Apollo.MutationResult<ReportContentMutation>;
export type ReportContentMutationOptions = Apollo.BaseMutationOptions<
ReportContentMutation,
ReportContentMutationVariables
>;
export const GetFeedDocument = gql`
query GetFeed(
$limit: Int! = 5
@@ -6751,6 +7087,276 @@ export type EnsureStripeCustomerExistsMutationOptions =
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`
mutation ReactToVideo($videoId: Int!, $reaction: ReactionEnum) {
reactToVideo(videoId: $videoId, reaction: $reaction)
@@ -8662,12 +9268,14 @@ export const EditUserDocument = gql`
$username: String
$fargoRating: Int
$videosPrivateByDefault: Boolean
$agreesToMarketing: Boolean
) {
editUser(
input: {
username: $username
fargoRating: $fargoRating
videosPrivateByDefault: $videosPrivateByDefault
agreesToMarketing: $agreesToMarketing
}
) {
id
@@ -8676,6 +9284,7 @@ export const EditUserDocument = gql`
fargoRating
updatedAt
videosPrivateByDefault
agreesToMarketing
}
}
`;
@@ -8700,6 +9309,7 @@ export type EditUserMutationFn = Apollo.MutationFunction<
* username: // value for 'username'
* fargoRating: // value for 'fargoRating'
* videosPrivateByDefault: // value for 'videosPrivateByDefault'
* agreesToMarketing: // value for 'agreesToMarketing'
* },
* });
*/
@@ -8721,6 +9331,53 @@ export type EditUserMutationOptions = Apollo.BaseMutationOptions<
EditUserMutation,
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`
query GetStreamMonitoringDetails($videoId: Int!, $debuggingJson: JSON) {
getVideo(videoId: $videoId, debuggingJson: $debuggingJson) {

View File

@@ -5,6 +5,7 @@ query getDeployedConfig {
environment
firebase
minimumAllowedAppVersion
subscriptionGatingEnabled
bannerMessages {
color
dismissible

View File

@@ -0,0 +1,15 @@
mutation blockContent($videoId: Int!) {
blockContent(videoId: $videoId)
}
mutation blockUser($userId: Int!) {
blockUser(userId: $userId)
}
mutation reportContent(
$videoId: Int!
$reason: ReportReasonEnum!
$customReason: String = null
) {
reportContent(videoId: $videoId, reason: $reason, customReason: $customReason)
}

View File

@@ -12,3 +12,54 @@ mutation EnsureStripeCustomerExists {
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

@@ -140,12 +140,14 @@ mutation editUser(
$username: String
$fargoRating: Int
$videosPrivateByDefault: Boolean
$agreesToMarketing: Boolean
) {
editUser(
input: {
username: $username
fargoRating: $fargoRating
videosPrivateByDefault: $videosPrivateByDefault
agreesToMarketing: $agreesToMarketing
}
) {
id
@@ -154,9 +156,14 @@ mutation editUser(
fargoRating
updatedAt
videosPrivateByDefault
agreesToMarketing
}
}
mutation deleteUser {
deleteUser
}
fragment UserFragment on UserGQL {
id
firebaseUid
@@ -168,4 +175,5 @@ fragment UserFragment on UserGQL {
createdAt
updatedAt
videosPrivateByDefault
agreesToMarketing
}

View File

@@ -82,6 +82,7 @@ type Query {
after: String = null
): UserRelationshipsResult!
getAvailableSubscriptionOptions: StripeSubscriptionOptionsGQL!
getUserSubscriptionStatus: UserSubscriptionStatusGQL!
getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL!
getUserVideos(
userId: Int = null
@@ -297,6 +298,7 @@ type DeployedConfigGQL {
devMode: Boolean!
environment: String!
minimumAllowedAppVersion: String!
subscriptionGatingEnabled: Boolean!
bannerMessages: [BannerGQL!]!
}
@@ -362,6 +364,7 @@ type UserGQL {
createdAt: DateTime
updatedAt: DateTime
videosPrivateByDefault: Boolean
agreesToMarketing: Boolean
following: [UserGQL!]
followers: [UserGQL!]
}
@@ -849,6 +852,27 @@ type StripePriceGQL {
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 {
totalSeconds: Float!
}
@@ -884,6 +908,13 @@ type Mutation {
): Boolean!
editComment(videoId: Int!, commentId: Int!, newMessage: String!): 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(
shotId: Int!
annotationName: String!
@@ -907,6 +938,8 @@ type Mutation {
retireTags(tagIds: [Int!]!): Boolean!
ensureStripeCustomerExists: UserGQL!
deleteUser: Boolean!
createSubscription(priceId: String!): CreateSubscriptionResultGQL!
cancelSubscription: UserSubscriptionStatusGQL!
findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL
createUploadStream(
videoMetadata: VideoMetadataInput!
@@ -929,6 +962,15 @@ input CreateBucketSetInput {
buckets: [BucketInputGQL!]!
}
enum ReportReasonEnum {
SPAM
NUDITY
VIOLENCE
HATE
COPYRIGHT
OTHER
}
type AddShotAnnotationReturn {
value: SuccessfulAddAddShotAnnotationErrors!
}
@@ -1014,6 +1056,12 @@ input EditUserInputGQL {
username: String = null
fargoRating: Int = null
videosPrivateByDefault: Boolean = null
agreesToMarketing: Boolean = null
}
type CreateSubscriptionResultGQL {
checkoutUrl: String!
sessionId: String!
}
type CreateUploadStreamReturn {