Open
Conversation
- Added VideoFeed query
- New method on KSApolloClientV2 - New extension method added from VideoFeedQuery data to VideoFeedEnvelope
- VM tests
…the watch mutation
- Login flow bookmark follow up
- Added isWatched - Optimistic animation for bookmarks - Animation for bookmark swaps icon com outlined to filled
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #2505 +/- ##
============================================
+ Coverage 64.18% 64.37% +0.18%
- Complexity 2438 2443 +5
============================================
Files 392 393 +1
Lines 30077 30220 +143
Branches 4355 4395 +40
============================================
+ Hits 19306 19455 +149
+ Misses 8432 8398 -34
- Partials 2339 2367 +28 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Arkariang
commented
Apr 29, 2026
| data class VideoFeedItem( | ||
| val badges: List<KSVideoBadgeType>, | ||
| val project: Project, | ||
| val hlsUrl: String? |
Contributor
Author
There was a problem hiding this comment.
Can potentially add a new VerticalVideo class within Project model, and remove this parameter from the VideoFeedItem, but alas this level of abstraction seems correct to me to stop making Project objects so bloated
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📲 What
Implements the Video Feed query and navigation interactions. This includes a scrollable vertical video powered by a real GraphQL query adding pagination, bookmark/watch toggling with optimistic UI and animation interaction and login gated, project navigation for back this project button, and a Compose-native error snackbar.
🤔 Why
This PR focuses on core interactions — watching/unwatching projects, navigating to project pages, and paginating through the feed — while deferring share(follow up ticket) and more-options actions to a future phase.
🛠 How
GraphQL
project.graphqlwith cursor-based pagination and badge support.videoFeedProjectfragment infragments.graphqlto encapsulate the minimal project fields needed for the feed (including isWatched, watchesCount, sharesCount, and verticalVideo for HLS playback).ViewModel (VideoFeedViewModel)
getVideoFeedApollo call.provideErrorActionnow wired inside the Compose setContent block viasetUpVideoFeedErrorActions.UI (VideoFeedScreen / VideoFeedActivity)
onLoadMoretriggers when the current page is within 3 items of the end (items.size - 3 threshold).VideoFeedActivityusesregisterForActivityResultto re-execute a pending bookmark after a successful login redirect.Bookmark animation (KSVideoActionsColumn)
Data / Transformers
VideoFeedTransformers.ktmaps VideoFeedQuery.VideoFeed → VideoFeedEnvelope, decodes relay IDs, maps badges, maps isWatched → isStarred, reads HLS URL from verticalVideo.Tests
👀 See
| --- | --- |
| | |
📋 QA
Story 📖
DISC-138