Compare commits

...

6 Commits

Author SHA1 Message Date
d7b0b21430 Merge pull request 'Use BigInt for video export file sizes' (#310) from agent/video-export-bigint into master
Reviewed-on: #310
2026-07-27 19:35:17 +00:00
f173466b2f Merge pull request 'Add createShotShareLink for short share links' (#311) from dean/short-share-links-gql into master
Reviewed-on: #311
2026-07-27 19:35:11 +00:00
Dean Wenstrand
df69d154a5 Merge master into short-share-links-gql
All checks were successful
Tests / Tests (pull_request) Successful in 34s
gql master added Shot Lab video feed scopes and pagination
(operations-only: recorded_shots.gql + codegen output) while this branch
added createShotShareLink. The two touch disjoint parts of the generated
index.tsx, so the merge is textual only.

Verified rather than trusted: re-ran graphql-codegen after the merge and
src/index.tsx came back byte-identical (same md5), so the merged
generated file is exactly what codegen produces. Reverted prettier's
schema.gql reformat, which CI's own prettier undoes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 15:34:22 -04:00
0bceb5d300 Merge pull request 'Add Shot Lab video feed scopes and pagination' (#312) from t3code/shot-lab-video-sources into master
Reviewed-on: #312
2026-07-26 09:31:20 +00:00
f58048768c Add Shot Lab video feed scopes and pagination
All checks were successful
Tests / Tests (pull_request) Successful in 12s
2026-07-26 02:26:39 -07:00
3e6dabe12a Use BigInt for video export file size
All checks were successful
Tests / Tests (pull_request) Successful in 6m3s
2026-07-24 20:09:19 -07:00
3 changed files with 60 additions and 30 deletions

View File

@@ -4318,7 +4318,7 @@ export type VideoExportJobGql = {
createdAt?: Maybe<Scalars["DateTime"]["output"]>; createdAt?: Maybe<Scalars["DateTime"]["output"]>;
downloadUrl?: Maybe<Scalars["String"]["output"]>; downloadUrl?: Maybe<Scalars["String"]["output"]>;
expiresAt?: Maybe<Scalars["DateTime"]["output"]>; expiresAt?: Maybe<Scalars["DateTime"]["output"]>;
fileSizeBytes?: Maybe<Scalars["Int"]["output"]>; fileSizeBytes?: Maybe<Scalars["BigInt"]["output"]>;
id: Scalars["Int"]["output"]; id: Scalars["Int"]["output"];
mode: VideoExportModeEnum; mode: VideoExportModeEnum;
runId?: Maybe<Scalars["Int"]["output"]>; runId?: Maybe<Scalars["Int"]["output"]>;
@@ -6890,8 +6890,10 @@ export type ReactToVideoMutation = {
}; };
export type GetShotLabVideosQueryVariables = Exact<{ export type GetShotLabVideosQueryVariables = Exact<{
userId: Scalars["Int"]["input"]; feedInput: VideoFeedInputGql;
includePrivate: IncludePrivateEnum;
limit?: Scalars["Int"]["input"]; limit?: Scalars["Int"]["input"];
after?: InputMaybe<Scalars["String"]["input"]>;
}>; }>;
export type GetShotLabVideosQuery = { export type GetShotLabVideosQuery = {
@@ -6919,6 +6921,11 @@ export type GetShotLabVideosQuery = {
lastSegmentUploadedAt?: any | null; lastSegmentUploadedAt?: any | null;
} | null; } | null;
}>; }>;
pageInfo: {
__typename?: "PageInfoGQL";
hasNextPage: boolean;
endCursor?: string | null;
};
}; };
}; };
@@ -9274,7 +9281,7 @@ export type VideoExportJobFieldsFragment = {
shotIds?: Array<number> | null; shotIds?: Array<number> | null;
runId?: number | null; runId?: number | null;
downloadUrl?: string | null; downloadUrl?: string | null;
fileSizeBytes?: number | null; fileSizeBytes?: any | null;
expiresAt?: any | null; expiresAt?: any | null;
createdAt?: any | null; createdAt?: any | null;
}; };
@@ -9296,7 +9303,7 @@ export type RequestVideoExportMutation = {
shotIds?: Array<number> | null; shotIds?: Array<number> | null;
runId?: number | null; runId?: number | null;
downloadUrl?: string | null; downloadUrl?: string | null;
fileSizeBytes?: number | null; fileSizeBytes?: any | null;
expiresAt?: any | null; expiresAt?: any | null;
createdAt?: any | null; createdAt?: any | null;
}; };
@@ -9328,7 +9335,7 @@ export type VideoExportJobQuery = {
shotIds?: Array<number> | null; shotIds?: Array<number> | null;
runId?: number | null; runId?: number | null;
downloadUrl?: string | null; downloadUrl?: string | null;
fileSizeBytes?: number | null; fileSizeBytes?: any | null;
expiresAt?: any | null; expiresAt?: any | null;
createdAt?: any | null; createdAt?: any | null;
} | null; } | null;
@@ -9352,7 +9359,7 @@ export type MyVideoExportsQuery = {
shotIds?: Array<number> | null; shotIds?: Array<number> | null;
runId?: number | null; runId?: number | null;
downloadUrl?: string | null; downloadUrl?: string | null;
fileSizeBytes?: number | null; fileSizeBytes?: any | null;
expiresAt?: any | null; expiresAt?: any | null;
createdAt?: any | null; createdAt?: any | null;
}>; }>;
@@ -15170,12 +15177,18 @@ export type ReactToVideoMutationOptions = Apollo.BaseMutationOptions<
ReactToVideoMutationVariables ReactToVideoMutationVariables
>; >;
export const GetShotLabVideosDocument = gql` export const GetShotLabVideosDocument = gql`
query GetShotLabVideos($userId: Int!, $limit: Int! = 25) { query GetShotLabVideos(
$feedInput: VideoFeedInputGQL!
$includePrivate: IncludePrivateEnum!
$limit: Int! = 25
$after: String = null
) {
getFeedVideos( getFeedVideos(
limit: $limit limit: $limit
after: $after
includeCallersVideos: false includeCallersVideos: false
includePrivate: MINE includePrivate: $includePrivate
feedInput: { userId: $userId } feedInput: $feedInput
) { ) {
videos { videos {
id id
@@ -15195,6 +15208,10 @@ export const GetShotLabVideosDocument = gql`
lastSegmentUploadedAt lastSegmentUploadedAt
} }
} }
pageInfo {
hasNextPage
endCursor
}
} }
} }
`; `;
@@ -15211,8 +15228,10 @@ export const GetShotLabVideosDocument = gql`
* @example * @example
* const { data, loading, error } = useGetShotLabVideosQuery({ * const { data, loading, error } = useGetShotLabVideosQuery({
* variables: { * variables: {
* userId: // value for 'userId' * feedInput: // value for 'feedInput'
* includePrivate: // value for 'includePrivate'
* limit: // value for 'limit' * limit: // value for 'limit'
* after: // value for 'after'
* }, * },
* }); * });
*/ */

View File

@@ -1,12 +1,19 @@
# Lightweight two-step picker data for Shot Lab's video-first source: the # Lightweight two-step picker data for Shot Lab's video-first source: recent
# caller's recent videos (completed or still uploading), then that video's # videos from the requested audience (mine, followed users, or public), then
# shots. The stream fields hint at "actively updating" without gating. # that video's shots. The stream fields hint at "actively updating" without
query GetShotLabVideos($userId: Int!, $limit: Int! = 25) { # gating.
query GetShotLabVideos(
$feedInput: VideoFeedInputGQL!
$includePrivate: IncludePrivateEnum!
$limit: Int! = 25
$after: String = null
) {
getFeedVideos( getFeedVideos(
limit: $limit limit: $limit
after: $after
includeCallersVideos: false includeCallersVideos: false
includePrivate: MINE includePrivate: $includePrivate
feedInput: { userId: $userId } feedInput: $feedInput
) { ) {
videos { videos {
id id
@@ -26,6 +33,10 @@ query GetShotLabVideos($userId: Int!, $limit: Int! = 25) {
lastSegmentUploadedAt lastSegmentUploadedAt
} }
} }
pageInfo {
hasNextPage
endCursor
}
} }
} }

View File

@@ -536,19 +536,6 @@ type GetUploadLinksReturn {
stream: UploadStreamGQL stream: UploadStreamGQL
} }
type SegmentUploadLink {
segmentIndex: Int!
uploadUrl: String!
headers: [Header]!
}
type UploadLinkBatch {
links: [SegmentUploadLink!]!
alreadyUploaded: [Int!]!
}
union UploadLinkBatchGetUploadLinkErrors = UploadLinkBatch | GetUploadLinkErrors
type HLSPlaylistGQL { type HLSPlaylistGQL {
videoId: Int! videoId: Int!
m3u8Text: String! m3u8Text: String!
@@ -1314,6 +1301,12 @@ type SegmentAlreadyUploadedErr {
segmentId: Int! segmentId: Int!
} }
type SegmentUploadLink {
segmentIndex: Int!
uploadUrl: String!
headers: [Header]!
}
type SerializedShotPathsGQL { type SerializedShotPathsGQL {
b64EncodedBuffer: String b64EncodedBuffer: String
} }
@@ -1800,6 +1793,13 @@ type UploadLink {
headers: [Header]! headers: [Header]!
} }
type UploadLinkBatch {
links: [SegmentUploadLink!]!
alreadyUploaded: [Int!]!
}
union UploadLinkBatchGetUploadLinkErrors = UploadLinkBatch | GetUploadLinkErrors
union UploadLinkGetProfileUploadLinkErrors = union UploadLinkGetProfileUploadLinkErrors =
UploadLink UploadLink
| GetProfileUploadLinkErrors | GetProfileUploadLinkErrors
@@ -1934,7 +1934,7 @@ type VideoExportJobGQL {
shotIds: [Int!] shotIds: [Int!]
runId: Int runId: Int
downloadUrl: String downloadUrl: String
fileSizeBytes: Int fileSizeBytes: BigInt
expiresAt: DateTime expiresAt: DateTime
createdAt: DateTime createdAt: DateTime
} }