Compare commits

..

4 Commits

Author SHA1 Message Date
Dean Wenstrand
d428a8caa2 VideoCardFields: fetch stream isCompleted + lastSegmentUploadedAt
All checks were successful
Tests / Tests (pull_request) Successful in 10s
Lets the feed derive upload state (uploading vs paused vs processing) per card.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 15:16:11 -07:00
48207e12ee Merge pull request 'Add lastSegmentUploadedAt to UploadStreamGQL' (#265) from dean/last-uploaded-chunk into master
Reviewed-on: #265
2026-06-20 21:45:32 +00:00
Dean Wenstrand
1d403f8155 Add lastSegmentUploadedAt to UploadStreamGQL
All checks were successful
Tests / Tests (pull_request) Successful in 10s
Surfaces the timestamp of the most recently uploaded chunk so clients can tell
an actively-uploading stream from a partially-uploaded, stalled/paused one
(combined with isCompleted).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 14:40:40 -07:00
6758f3e77a Merge pull request 'Add bio field to user (UserFragment + editUser)' (#264) from dean/profile-bio into master
Reviewed-on: #264
2026-06-19 21:27:52 +00:00
3 changed files with 14 additions and 0 deletions

View File

@@ -3541,6 +3541,7 @@ export type UploadStreamGql = {
initPlaylistUploadStatus?: Maybe<InitPlaylistUploadStatusEnum>;
isCompleted: Scalars["Boolean"]["output"];
lastIntendedSegmentBound?: Maybe<Scalars["Int"]["output"]>;
lastSegmentUploadedAt?: Maybe<Scalars["DateTime"]["output"]>;
linksRequested: Scalars["Int"]["output"];
lowestUnuploadedSegmentIndex: Scalars["Int"]["output"];
resolution: VideoResolutionGql;
@@ -4283,6 +4284,8 @@ export type GetFeedQuery = {
id: string;
lastIntendedSegmentBound?: number | null;
streamSegmentType: StreamSegmentTypeEnum;
isCompleted: boolean;
lastSegmentUploadedAt?: any | null;
} | null;
tags: Array<{
__typename?: "VideoTag";
@@ -4394,6 +4397,8 @@ export type VideoCardFieldsFragment = {
id: string;
lastIntendedSegmentBound?: number | null;
streamSegmentType: StreamSegmentTypeEnum;
isCompleted: boolean;
lastSegmentUploadedAt?: any | null;
} | null;
tags: Array<{
__typename?: "VideoTag";
@@ -4538,6 +4543,8 @@ export type GetVideoFeedQuery = {
id: string;
lastIntendedSegmentBound?: number | null;
streamSegmentType: StreamSegmentTypeEnum;
isCompleted: boolean;
lastSegmentUploadedAt?: any | null;
} | null;
tags: Array<{
__typename?: "VideoTag";
@@ -6497,6 +6504,8 @@ export type GetVideoCardQuery = {
id: string;
lastIntendedSegmentBound?: number | null;
streamSegmentType: StreamSegmentTypeEnum;
isCompleted: boolean;
lastSegmentUploadedAt?: any | null;
} | null;
tags: Array<{
__typename?: "VideoTag";
@@ -7210,6 +7219,8 @@ export const VideoCardFieldsFragmentDoc = gql`
id
lastIntendedSegmentBound
streamSegmentType
isCompleted
lastSegmentUploadedAt
}
tableSize
pocketSize

View File

@@ -42,6 +42,8 @@ fragment VideoCardFields on VideoGQL {
id
lastIntendedSegmentBound
streamSegmentType
isCompleted
lastSegmentUploadedAt
}
tableSize
pocketSize

View File

@@ -530,6 +530,7 @@ type UploadStreamGQL {
initPlaylistUploadStatus: InitPlaylistUploadStatusEnum
lowestUnuploadedSegmentIndex: Int!
uploadCompletionCursor: Int!
lastSegmentUploadedAt: DateTime
errors: [StreamErrorGQL!]!
createdAt: DateTime!
updatedAt: DateTime!