fix(home): show the tick right after marking a title from the long-press menu - #762
Merged
ProdigyV21 merged 5 commits intoSep 27, 2026
Merged
Conversation
…ess menu Marking a film watched or unwatched from the Home long-press menu only updated the watched cache and showed the toast; no card was re-marked, and a plain tick pass would be skipped because the rows are the ones the last pass marked. The tick (card and hero) only changed on the next return to Home, and the menu kept offering the old action until then. After the mark call, toggleWatched now forces the existing tick pass (immediate, force) instead of writing the ticks itself, so hero, re-published rows and the profile check all stay on the one path. The next-episode branch does the same, so the show card in other rows gets its tick together with the Continue Watching update. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NtiKMWmfLDYKRRb5CBptwd
…t Trakt initializeWatchedCache said a profile without Trakt auth keeps empty caches "so all content appears unwatched". The code always loads the profile's local watched snapshot and adds Cloud, MDBList and SIMKL history; profile isolation comes from ensureProfileCacheScope and the per-profile snapshot keys. The inline comment on the no-remote-data branch said the same and is corrected too. Comments only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NtiKMWmfLDYKRRb5CBptwd
On phones the Home long-press menu docks at the bottom of the screen,
but the app's bottom bar is drawn over it, so the last entries ("Watched",
and "Remove" on Continue Watching cards) sat behind the bar and could not
be tapped. The sheet now adds LocalBottomBarHeight to its bottom padding,
as the Discover filter panel does since 5219111. The TV card is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NtiKMWmfLDYKRRb5CBptwd
Owner
|
Reviewed and integrated with the latest watched-cache fixes. This refreshes Home badges after a mark/unmark without requiring a return to Home, and keeps the mobile menu clear of the bottom bar. Home watched-badge tests pass in the 128-test batch; both Android variants compile. Original commits preserved. |
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.
Summary
The follow-up offered in #758: marking a film watched / unwatched from the Home long-press menu now puts the tick on (or takes it off) the card right away, and the menu offers the opposite action next time. Until now the tick only changed on the next return to Home, and until then the menu kept offering the same action.
Plus a comment-only fix in
TraktRepository.initializeWatchedCache, which still said a profile without Trakt keeps empty caches.Cause
toggleWatchedupdated the watched cache (optimistically, inmarkMovieWatched/markMovieUnwatched) and showed the toast, but nothing re-marked the cards. A plain tick pass would not have helped either: the rows are the very instances the last pass marked, sowatchedBadgesPassIsRedundantrejects it inside the 90 s throttle.Change
HomeViewModel.toggleWatched: right after the mark call,refreshWatchedBadgesAfterMark()runs the existing tick pass withimmediate = true, force = true. No second marking path: hero, re-published rows and the profile check from1663726all stay on the one pass.immediateruns it now, past the throttle.forcekeeps a pass that freshly published rows restart on the short 300 ms delay. This matters in the next-episode branch, whererefreshContinueWatchingOnly(force = true)re-publishes the rows while the pass is running.LocalBottomBarHeight, as the Discover filter panel already does since5219111. TV uses the centred card and is unchanged.removeFromHistory, so the card shows what the cache holds even if a later step fails.TraktRepository: two comments corrected (KDoc and the inline comment on the "no remote data" branch). The cache is built from the local snapshot plus Cloud (or Trakt), MDBList and SIMKL; isolation comes fromensureProfileCacheScope, the per-profile snapshot keys and the Cloud's profile filter. Comments only, no code change in that file.3 files, +22 / −4, three commits (tick fix, phone menu, comments).
Known limits (not changed here)
markMovieWatchedwrites the cache first but then awaits the Cloud/SIMKL sync before it returns. On a slow network the tick and the toast arrive after that. Splitting the local step from the sync would mean changingTraktRepository, which I kept out of this PR.nextEpisode, so "mark watched" ends with "No episode info available". Unchanged: it needs a design decision (which episode?), so I kept it out.Testing
testSideloadDebugUnitTest+compileSideloadDebugKotlingreen locally; the test-APK run on the fork is green as well.toggleWatched, and exercising it needs the wholeHomeViewModel. The decisions it relies on (watchedBadgesPassIsRedundantwithforce,watchedBadgesPassDelayMs,withWatchedBadgesfor rows and hero) are covered inHomeWatchedBadgesTest.created by Claude (Anthropic) on behalf of @ReichiMD