Compare commits

..

3 Commits

Author SHA1 Message Date
669958178d scope upload quotas
All checks were successful
Tests / Tests (pull_request) Successful in 11s
2026-04-14 15:40:15 -07:00
ad9cab4543 Merge pull request 'Get Game Type Tag Operations' (#234) from loewy/get-game-type-tag-metrics-operation into master
Reviewed-on: #234
2026-04-14 20:11:43 +00:00
28ba01c07f operation
All checks were successful
Tests / Tests (pull_request) Successful in 11s
2026-03-30 15:31:24 -07:00
4 changed files with 133 additions and 4 deletions

View File

@@ -2462,6 +2462,7 @@ export type MutationCreateSubscriptionArgs = {
export type MutationCreateUploadStreamArgs = { export type MutationCreateUploadStreamArgs = {
expectedDurationSeconds?: InputMaybe<Scalars["Float"]["input"]>; expectedDurationSeconds?: InputMaybe<Scalars["Float"]["input"]>;
uploadKind?: InputMaybe<UploadKindEnum>;
videoMetadata: VideoMetadataInput; videoMetadata: VideoMetadataInput;
}; };
@@ -2959,9 +2960,11 @@ export type QuotaStatusGql = {
durationLimitSeconds?: Maybe<Scalars["Int"]["output"]>; durationLimitSeconds?: Maybe<Scalars["Int"]["output"]>;
durationRemainingSeconds?: Maybe<Scalars["Float"]["output"]>; durationRemainingSeconds?: Maybe<Scalars["Float"]["output"]>;
durationUsedSeconds: Scalars["Float"]["output"]; durationUsedSeconds: Scalars["Float"]["output"];
importUploadPermission: UploadPermissionGql;
maxVideoDurationSeconds?: Maybe<Scalars["Int"]["output"]>; maxVideoDurationSeconds?: Maybe<Scalars["Int"]["output"]>;
periodEnd: Scalars["DateTime"]["output"]; periodEnd: Scalars["DateTime"]["output"];
periodStart: Scalars["DateTime"]["output"]; periodStart: Scalars["DateTime"]["output"];
recordingPermission: UploadPermissionGql;
tierName: Scalars["String"]["output"]; tierName: Scalars["String"]["output"];
}; };
@@ -3347,6 +3350,11 @@ export type UpdateShotAnnotationReturn = {
shot?: Maybe<ShotGql>; shot?: Maybe<ShotGql>;
}; };
export enum UploadKindEnum {
Import = "IMPORT",
Recording = "RECORDING",
}
export type UploadLink = { export type UploadLink = {
__typename?: "UploadLink"; __typename?: "UploadLink";
headers: Array<Maybe<Header>>; headers: Array<Maybe<Header>>;
@@ -3359,6 +3367,12 @@ export type UploadLinkGetProfileUploadLinkErrors =
export type UploadLinkGetUploadLinkErrors = GetUploadLinkErrors | UploadLink; export type UploadLinkGetUploadLinkErrors = GetUploadLinkErrors | UploadLink;
export type UploadPermissionGql = {
__typename?: "UploadPermissionGQL";
allowed: Scalars["Boolean"]["output"];
reason?: Maybe<Scalars["String"]["output"]>;
};
export type UploadSegmentGql = { export type UploadSegmentGql = {
__typename?: "UploadSegmentGQL"; __typename?: "UploadSegmentGQL";
durationInSeconds?: Maybe<Scalars["Float"]["output"]>; durationInSeconds?: Maybe<Scalars["Float"]["output"]>;
@@ -5571,6 +5585,23 @@ export type GetUserTagsQuery = {
}>; }>;
}; };
export type GetGameTypeTagMetricsQueryVariables = Exact<{
input: GameTypeTagMetricsInput;
}>;
export type GetGameTypeTagMetricsQuery = {
__typename?: "Query";
getGameTypeTagMetrics: Array<{
__typename?: "GameTypeTagMetric";
tagName: string;
tagLabel: string;
tableSize?: number | null;
shotCount: number;
madeShots: number;
makeRate: number;
}>;
};
export type FollowUserMutationVariables = Exact<{ export type FollowUserMutationVariables = Exact<{
followedUserId: Scalars["Int"]["input"]; followedUserId: Scalars["Int"]["input"];
}>; }>;
@@ -6450,7 +6481,6 @@ export type UploadStreamWithDetailsFragment = {
lastIntendedSegmentBound?: number | null; lastIntendedSegmentBound?: number | null;
uploadCompletionCursor: number; uploadCompletionCursor: number;
uploadsCompleted: number; uploadsCompleted: number;
initPlaylistUploadStatus?: InitPlaylistUploadStatusEnum | null;
} | null; } | null;
}; };
@@ -6475,7 +6505,6 @@ export type GetUploadStreamsWithDetailsQuery = {
lastIntendedSegmentBound?: number | null; lastIntendedSegmentBound?: number | null;
uploadCompletionCursor: number; uploadCompletionCursor: number;
uploadsCompleted: number; uploadsCompleted: number;
initPlaylistUploadStatus?: InitPlaylistUploadStatusEnum | null;
} | null; } | null;
}>; }>;
pageInfo: { pageInfo: {
@@ -6818,7 +6847,6 @@ export const UploadStreamWithDetailsFragmentDoc = gql`
lastIntendedSegmentBound lastIntendedSegmentBound
uploadCompletionCursor uploadCompletionCursor
uploadsCompleted uploadsCompleted
initPlaylistUploadStatus
} }
} }
`; `;
@@ -11557,6 +11585,84 @@ export type GetUserTagsQueryResult = Apollo.QueryResult<
GetUserTagsQuery, GetUserTagsQuery,
GetUserTagsQueryVariables GetUserTagsQueryVariables
>; >;
export const GetGameTypeTagMetricsDocument = gql`
query GetGameTypeTagMetrics($input: GameTypeTagMetricsInput!) {
getGameTypeTagMetrics(input: $input) {
tagName
tagLabel
tableSize
shotCount
madeShots
makeRate
}
}
`;
/**
* __useGetGameTypeTagMetricsQuery__
*
* To run a query within a React component, call `useGetGameTypeTagMetricsQuery` and pass it any options that fit your needs.
* When your component renders, `useGetGameTypeTagMetricsQuery` 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 } = useGetGameTypeTagMetricsQuery({
* variables: {
* input: // value for 'input'
* },
* });
*/
export function useGetGameTypeTagMetricsQuery(
baseOptions: Apollo.QueryHookOptions<
GetGameTypeTagMetricsQuery,
GetGameTypeTagMetricsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useQuery<
GetGameTypeTagMetricsQuery,
GetGameTypeTagMetricsQueryVariables
>(GetGameTypeTagMetricsDocument, options);
}
export function useGetGameTypeTagMetricsLazyQuery(
baseOptions?: Apollo.LazyQueryHookOptions<
GetGameTypeTagMetricsQuery,
GetGameTypeTagMetricsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useLazyQuery<
GetGameTypeTagMetricsQuery,
GetGameTypeTagMetricsQueryVariables
>(GetGameTypeTagMetricsDocument, options);
}
export function useGetGameTypeTagMetricsSuspenseQuery(
baseOptions?: Apollo.SuspenseQueryHookOptions<
GetGameTypeTagMetricsQuery,
GetGameTypeTagMetricsQueryVariables
>,
) {
const options = { ...defaultOptions, ...baseOptions };
return Apollo.useSuspenseQuery<
GetGameTypeTagMetricsQuery,
GetGameTypeTagMetricsQueryVariables
>(GetGameTypeTagMetricsDocument, options);
}
export type GetGameTypeTagMetricsQueryHookResult = ReturnType<
typeof useGetGameTypeTagMetricsQuery
>;
export type GetGameTypeTagMetricsLazyQueryHookResult = ReturnType<
typeof useGetGameTypeTagMetricsLazyQuery
>;
export type GetGameTypeTagMetricsSuspenseQueryHookResult = ReturnType<
typeof useGetGameTypeTagMetricsSuspenseQuery
>;
export type GetGameTypeTagMetricsQueryResult = Apollo.QueryResult<
GetGameTypeTagMetricsQuery,
GetGameTypeTagMetricsQueryVariables
>;
export const FollowUserDocument = gql` export const FollowUserDocument = gql`
mutation followUser($followedUserId: Int!) { mutation followUser($followedUserId: Int!) {
followUser(followedUserId: $followedUserId) { followUser(followedUserId: $followedUserId) {

View File

@@ -92,6 +92,17 @@ query GetUserTags {
} }
} }
query GetGameTypeTagMetrics($input: GameTypeTagMetricsInput!) {
getGameTypeTagMetrics(input: $input) {
tagName
tagLabel
tableSize
shotCount
madeShots
makeRate
}
}
mutation followUser($followedUserId: Int!) { mutation followUser($followedUserId: Int!) {
followUser(followedUserId: $followedUserId) { followUser(followedUserId: $followedUserId) {
id id

View File

@@ -117,7 +117,6 @@ fragment UploadStreamWithDetails on VideoGQL {
lastIntendedSegmentBound lastIntendedSegmentBound
uploadCompletionCursor uploadCompletionCursor
uploadsCompleted uploadsCompleted
initPlaylistUploadStatus
} }
} }

View File

@@ -998,10 +998,17 @@ type QuotaStatusGQL {
durationUsedSeconds: Float! durationUsedSeconds: Float!
durationLimitSeconds: Int durationLimitSeconds: Int
maxVideoDurationSeconds: Int maxVideoDurationSeconds: Int
recordingPermission: UploadPermissionGQL!
importUploadPermission: UploadPermissionGQL!
durationRemainingSeconds: Float durationRemainingSeconds: Float
canUpload: Boolean! canUpload: Boolean!
} }
type UploadPermissionGQL {
allowed: Boolean!
reason: String
}
type UserPlayTimeGQL { type UserPlayTimeGQL {
totalSeconds: Float! totalSeconds: Float!
} }
@@ -1134,6 +1141,7 @@ type Mutation {
findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL
createUploadStream( createUploadStream(
videoMetadata: VideoMetadataInput! videoMetadata: VideoMetadataInput!
uploadKind: UploadKindEnum = null
expectedDurationSeconds: Float = null expectedDurationSeconds: Float = null
): CreateUploadStreamReturn! ): CreateUploadStreamReturn!
getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn! getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn!
@@ -1302,6 +1310,11 @@ input VideoResolution {
height: Int! height: Int!
} }
enum UploadKindEnum {
RECORDING
IMPORT
}
type GetUploadLinkReturn { type GetUploadLinkReturn {
value: UploadLinkGetUploadLinkErrors! value: UploadLinkGetUploadLinkErrors!
stream: UploadStreamGQL stream: UploadStreamGQL