Skip to content

[Compose] Content v4 - #170

Open
webianks wants to merge 25 commits into
developmentfrom
webianks/content-v4-compose
Open

[Compose] Content v4#170
webianks wants to merge 25 commits into
developmentfrom
webianks/content-v4-compose

Conversation

@webianks

Copy link
Copy Markdown
Collaborator

This pull request introduces significant updates to the app's architecture, dependencies, and navigation, focusing on a migration to Jetpack Compose, improved paging support, and enhanced widget and navigation infrastructure. The main changes include switching to a Compose-based main activity, adding new navigation and paging source classes, updating dependencies, and revising the AndroidManifest for new widgets and Compose integration.

Migration to Jetpack Compose & Navigation Overhaul:

  • Switched the main activity to MainActivityCompose and added Compose-specific plugins and dependencies, enabling Compose features and UI components throughout the app (app/build.gradle, AndroidManifest.xml). [1] [2]
  • Introduced new navigation infrastructure for Compose, including AppRoute, AppNavigationBar, and TopLevelDestination to organize and manage navigation graphs and bottom navigation tabs (AppRoute.kt, AppNavigationBar.kt, TopLevelDestination.kt). [1] [2] [3]

Paging and Data Layer Improvements:

  • Added new paging sources for Discover Movies, Discover TV, and People, improving data fetching and pagination logic (DiscoverMoviesPagingSource.kt, DiscoverTvPagingSource.kt, PeoplePagingSource.kt). [1] [2] [3]
  • Refined paging logic in MoviesPagingSource to properly handle total pages and next key calculation, preventing over-fetching (MoviesPagingSource.kt).

Dependency and Build System Updates:

  • Upgraded multiple dependencies (Paging, Room, Navigation, WorkManager, OkHttp, Lottie, etc.) and added Compose, Glance, and Coil libraries. Cleaned up and consolidated plugin declarations for Compose and Firebase support (app/build.gradle). [1] [2]
  • Enabled Compose build features and updated compileSdk and targetSdk to 37 (app/build.gradle). [1] [2]

Widget and Manifest Changes:

  • Replaced the old widget receiver with new WatchlistWidgetReceiver and added ToRateWidgetReceiver for improved widget support, updating their exported status and associated XML resources (AndroidManifest.xml). [1] [2]
  • Removed the legacy intro activity and enabled the enableOnBackInvokedCallback for improved back navigation handling (AndroidManifest.xml). [1] [2]

These changes collectively modernize the app's UI, navigation, and data handling, laying the groundwork for a fully Compose-based experience and improved maintainability.

webianks added 24 commits August 2, 2026 09:27
Introduces a Discover screen (genre/year/rating/keyword filters) for
movies and TV, a region/country preference (onboarding + Account
setting + OkHttp interceptor) so results and watch-provider listings
reflect the user's selected country, a People tab for browsing popular
cast/crew, and a Movies/Shows toolbar overflow menu exposing both.
Also makes Movies/Shows paging reactive to region changes.
Enriches the movie/show details screen with Season/Episode browsing,
user ratings (with TMDB sync), Awards/Box Office/Studios/Gallery/
Keywords/Franchise-collection sections, certifications, an offline
error state with retry, haptic feedback on watched/watchlist/rating
interactions, and a Links footer (official site, IMDb, socials).
Also widens video results to non-English titles and sorts them so an
actual trailer leads instead of a clip or blooper.
Adds create/view/delete custom TMDB lists and add/remove items from
them, background sync of local watched/watchlist/rating state with
the user's TMDB account, and fixes two logout bugs: the confirmation
dialog now follows the app theme (previously a View-system dialog)
with correct button roles, and local logout state is no longer gated
behind the server-side session-revoke call succeeding.
Adds a "mark watched" tap target directly on Watchlist widget items
(no need to open the app), and a new home-screen widget listing
watched-but-unrated titles as a quick nudge to rate them. Both widgets
now refresh together whenever local watch/watchlist state changes.
Also shortens the Watchlist widget's title from "Filmy Watchlist" to
just "Watchlist".
Long-pressing a poster in any grid (Movies, Shows, etc.) now flips it
to reveal watchlist/watched toggle buttons reflecting current state,
with haptic feedback and a close button - no need to open the details
screen just to mark something. Also adds a small bounce animation on
the details screen's watchlist button when toggled.
…imation

Replaces the plain onboarding background with a continuously scrolling
backdrop of trending posters (built on an infinite LazyColumn rather
than a fragile duplicate-list marquee, so it never runs out of content
or flickers), fading into a minimal bottom panel that shows the
detected country - resolved via IP geolocation in the background - and
opens the existing region picker dialog to confirm or change it.

Also deletes the old View-system app-intro flow it replaces (AppIntro
library dependency, its four intro fragments/activity, layouts, and
drawables) and the dead pre-Compose MainActivity that launched it, plus
the AppIntro license entry from the OSS licenses screen.
My Lists and the details screen's "Add to List" action require a TMDB
login, but previously gave no indication why nothing happened when
logged out. Both now show a login prompt whose CTA starts the OAuth
flow directly on that same screen - once it completes, the original
action (loading lists, opening the add-to-list sheet) picks up
automatically, no need to navigate away and back.

Also makes every screen's profile state reactive to the same local
`profile` table, so a login or logout completed on one screen (e.g.
Account) is reflected immediately on every other open screen too.
Three unrelated fixes bundled together: the full-screen photo gallery
now pads correctly under edge-to-edge and no longer has pinch-zoom
intercepting the swipe-to-dismiss gesture at 1x scale; the "My Lists"
launcher shortcut no longer points at a dead activity, routing through
FilmyApp's start-destination logic instead; and the Account screen's
login progress bar no longer spins forever when the Custom Tab is
closed without completing login, since login progress is now tracked
centrally in LoginViewModel and cleared on every failure path (not
just success) - the Custom Tab also now opens full screen instead of
a peeked bottom sheet.
… to cast/crew details

The person details screen previously showed movie and TV credits as
separate lists and had no error state - a failed fetch just spun
forever since there's no local cache to fall back on for person data.
Now fetches combined movie+TV credits (deduped, sorted by popularity,
each showing the person's character or job as a subtitle), adds an
external links section (IMDb, socials, homepage), a proper error
widget with retry, and a skeleton loader while loading. Tapping a
credit now routes to movie or TV details based on that credit's own
type, since a combined list can no longer assume one or the other.
Search previously failed silently on a network error (blank list, no
indication anything went wrong), gave no "no results" feedback, and
could crash with a duplicate-key exception since movie and TV ids
share a numeric namespace. Person results were also broken: no avatar
(the DTO only mapped poster_path, not profile_path) and tapping one
opened it as a movie.

Adds a proper error state with retry, a distinct no-results message,
and a recent-searches list (persisted locally, tap to repeat, clear
individually or all) shown when the query is empty. Person results
now show a circular avatar and route to the cast/crew details screen.
Also fixes the search field's cursor jumping to the start on recent-
search taps (it was using a deprecated InputField overload decoupled
from the backing TextFieldState), adds a clear button, and stops
pressing the keyboard's search action from collapsing back to the
Movies/Shows screen.
@webianks
webianks requested a review from salRoid August 22, 2026 06:33
@webianks webianks self-assigned this Aug 22, 2026
Adds a shared Throwable.toUserMessage() mapper (no internet, timeout,
server error, generic fallback) and wires it into every screen that
was previously showing a raw exception message on network failure
(Discover, Movies, Shows, People, Search, and the shared paginated
list's load-more error state). Also adds a poster-shaped placeholder
for images that fail to load across poster tiles, search results, and
the details screen header.

Beyond that: fixes the movie/show details error and loading states
having no way back (added a back arrow, matching the loaded state's
position); fixes the search bar's field cursor/rotating-placeholder
polish; adds a scroll-aware collapsing header to Movies/Shows so the
branding row tucks away on scroll down and returns on scroll up while
the search bar stays pinned; and mutes the error message text color so
it reads as secondary next to the retry button.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

There are confirmed build-/runtime-blocking issues in the changed code paths (invalid Kotlin string templating and legacy details activity fetch logic being commented out while still referenced), plus high-risk destructive Room migration configuration.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR advances the Filmy Android app toward a Jetpack Compose–first architecture by introducing a Compose-based main activity, new Compose navigation routes/components, and modernized paging/data flows (including region-aware content), while also updating widget infrastructure and refactoring parts of the local data model.

Changes:

  • Migrates entrypoint/navigation to Compose (new MainActivityCompose, new AppRoute/bottom-nav infrastructure, multiple new Compose screens/components).
  • Expands paging/data layer capabilities (new paging sources, preview mappers, new API/helper endpoints, new models for discover/people/keywords/ratings/providers, region preference plumbing).
  • Updates widgets/resources/themes and refactors legacy screens and Room entities/DAOs to align with the new flows.
File summaries
File Description
settings.gradle Adds foojay toolchain resolver plugin.
gradle.properties Adjusts Gradle JVM args and Android/AGP feature flags.
build.gradle Bumps Kotlin/Google services and adds Compose plugin classpath.
app/src/main/res/xml/filmy_widget_info.xml Updates watchlist widget sizing/metadata.
app/src/main/res/xml/filmy_to_rate_widget_info.xml Adds new “to rate” widget provider info.
app/src/main/res/xml-v25/shortcuts.xml Points shortcut intent to MainActivityCompose.
app/src/main/res/values/themes.xml Updates splash screen icon/theme handoff.
app/src/main/res/values/ids.xml Adds preference_fragment_container id.
app/src/main/res/values-v31/themes.xml Removes v31 splash override (consolidation).
app/src/main/res/values-v27/themes.xml Removes v27 splash override (deleted).
app/src/main/res/values-night-v31/themes.xml Removes night v31 splash override (deleted).
app/src/main/res/values-night-v27/themes.xml Removes night v27 splash override (deleted).
app/src/main/res/layout/top_navigation_layout.xml Updates custom view class reference.
app/src/main/res/layout/top_navigation_item_content.xml Updates tools parentTag class reference.
app/src/main/res/layout/fragment_intro.xml Removes legacy intro layout (deleted).
app/src/main/res/layout/fragment_intro_fragment_d.xml Removes legacy intro layout (deleted).
app/src/main/res/layout/fragment_intro_fragment_c.xml Removes legacy intro layout (deleted).
app/src/main/res/layout/fragment_intro_fragment_b.xml Removes legacy intro layout (deleted).
app/src/main/res/drawable/title_skeleton.xml Converts skeleton from shape to vector.
app/src/main/res/drawable/poster_error_placeholder.xml Adds poster error placeholder vector.
app/src/main/res/drawable/movie_skeleton.xml Converts skeleton from shape to vector.
app/src/main/res/drawable/icon_skeleton.xml Converts skeleton from shape to vector.
app/src/main/java/tech/salroid/filmy/utility/PreferenceHelper.kt Adds selected-country flow + recent searches + theme setter.
app/src/main/java/tech/salroid/filmy/utility/IpGeolocation.kt Adds best-effort IP-based country lookup.
app/src/main/java/tech/salroid/filmy/utility/ImageConfig.kt Centralizes TMDB image base URL.
app/src/main/java/tech/salroid/filmy/utility/Extensions.kt Adds money formatting, HTML parsing, sharing, URL/trailer helpers, user-facing error mapping.
app/src/main/java/tech/salroid/filmy/utility/DateFormatterUtil.kt Adds release-date formatting helper.
app/src/main/java/tech/salroid/filmy/ui/widget/WidgetRefresher.kt Adds Glance widget refresh helper.
app/src/main/java/tech/salroid/filmy/ui/widget/WidgetActions.kt Adds Glance action callback to mark watched.
app/src/main/java/tech/salroid/filmy/ui/theme/Type.kt Adds Compose typography setup with custom fonts.
app/src/main/java/tech/salroid/filmy/ui/textvalidation/TextProcessingViewModel.kt Adds (commented-out) sample VM code.
app/src/main/java/tech/salroid/filmy/ui/textvalidation/TextProcessingScreen.kt Adds (commented-out) sample Compose screen.
app/src/main/java/tech/salroid/filmy/ui/shows/TvShowsPreviewMapper.kt Maps TV show entities to Compose preview models.
app/src/main/java/tech/salroid/filmy/ui/shows/ShowsViewModel.kt Adds Compose Shows VM with paging + region-reactive refresh + quick actions.
app/src/main/java/tech/salroid/filmy/ui/shows/ShowsScreenState.kt Adds Shows screen UI state sealed class.
app/src/main/java/tech/salroid/filmy/ui/shows/ShowsRoute.kt Adds Shows route wiring for Compose screen.
app/src/main/java/tech/salroid/filmy/ui/shows/components/ShowList.kt Adds paginated list Composable for shows.
app/src/main/java/tech/salroid/filmy/ui/shows/components/ShowItem.kt Adds show preview list item Composable.
app/src/main/java/tech/salroid/filmy/ui/settings/LicenseScreen.kt Converts license UI to Compose.
app/src/main/java/tech/salroid/filmy/ui/settings/LicenseActivity.kt Hosts LicenseScreen via setContent.
app/src/main/java/tech/salroid/filmy/ui/settings/AboutActivity.kt Switches About activity to Compose screen host.
app/src/main/java/tech/salroid/filmy/ui/season/SeasonViewModel.kt Adds VM to fetch season details.
app/src/main/java/tech/salroid/filmy/ui/search/SearchViewModelLegacy.kt Introduces legacy search VM implementation for fragments.
app/src/main/java/tech/salroid/filmy/ui/search/SearchScreenState.kt Adds Compose search UI state model.
app/src/main/java/tech/salroid/filmy/ui/search/SearchPreviewMapper.kt Maps search results to Compose previews.
app/src/main/java/tech/salroid/filmy/ui/search/SearchFragment.kt Wires fragment to SearchViewModelLegacy.
app/src/main/java/tech/salroid/filmy/ui/search/component/SearchList.kt Adds Compose search results list.
app/src/main/java/tech/salroid/filmy/ui/reviews/ReviewsListScreen.kt Adds Compose full reviews list screen.
app/src/main/java/tech/salroid/filmy/ui/people/PeopleViewModel.kt Adds VM for people paging.
app/src/main/java/tech/salroid/filmy/ui/onboarding/OnboardingViewModel.kt Adds onboarding poster backdrop + IP country detection.
app/src/main/java/tech/salroid/filmy/ui/onboarding/AnimatedPosterBackdrop.kt Adds animated infinite poster backdrop Composable.
app/src/main/java/tech/salroid/filmy/ui/movies/MoviesViewModel.kt Adds Compose Movies VM with paging + region-reactive refresh + quick actions.
app/src/main/java/tech/salroid/filmy/ui/movies/MoviesScreenState.kt Adds Movies screen UI state sealed class.
app/src/main/java/tech/salroid/filmy/ui/movies/MoviesRoute.kt Adds Movies route wiring for Compose screen.
app/src/main/java/tech/salroid/filmy/ui/movies/MoviePreviewMapper.kt Maps movie entities to Compose preview models.
app/src/main/java/tech/salroid/filmy/ui/movies/Dummy.kt Adds preview dummy models.
app/src/main/java/tech/salroid/filmy/ui/movies/details/components/TrailerSection.kt Adds Compose trailers section UI.
app/src/main/java/tech/salroid/filmy/ui/movies/details/components/StudiosSection.kt Adds Compose studios section UI.
app/src/main/java/tech/salroid/filmy/ui/movies/details/components/SeasonsSection.kt Adds Compose seasons section UI.
app/src/main/java/tech/salroid/filmy/ui/movies/details/components/ReviewSection.kt Adds Compose reviews section UI.
app/src/main/java/tech/salroid/filmy/ui/movies/details/components/RateMediaSheet.kt Adds Compose rating bottom sheet UI.
app/src/main/java/tech/salroid/filmy/ui/movies/details/components/MediaSection.kt Adds Compose similar/recommendations UI.
app/src/main/java/tech/salroid/filmy/ui/movies/details/components/KeywordsSection.kt Adds Compose keywords chip grid.
app/src/main/java/tech/salroid/filmy/ui/movies/details/components/FullReadSheet.kt Adds Compose full-read bottom sheet.
app/src/main/java/tech/salroid/filmy/ui/movies/details/components/CommonDetails.kt Adds shared Compose details components/helpers.
app/src/main/java/tech/salroid/filmy/ui/movies/details/components/CollectionTeaserRow.kt Adds “part of a collection” teaser UI.
app/src/main/java/tech/salroid/filmy/ui/movies/details/components/BoxOfficeSection.kt Adds budget/revenue details section.
app/src/main/java/tech/salroid/filmy/ui/movies/details/components/AwardsSection.kt Adds awards details section.
app/src/main/java/tech/salroid/filmy/ui/movies/components/MoviesList.kt Adds paginated list Composable for movies.
app/src/main/java/tech/salroid/filmy/ui/movies/components/MovieItem.kt Adds movie preview list item Composable.
app/src/main/java/tech/salroid/filmy/ui/lists/MyListsViewModel.kt Adds VM for TMDB lists (create/delete/load).
app/src/main/java/tech/salroid/filmy/ui/lists/ListDetailsViewModel.kt Adds VM for list details + optimistic removal.
app/src/main/java/tech/salroid/filmy/ui/intro/IntroFragmentD.kt Removes legacy intro fragment (deleted).
app/src/main/java/tech/salroid/filmy/ui/intro/IntroFragmentC.kt Removes legacy intro fragment (deleted).
app/src/main/java/tech/salroid/filmy/ui/intro/IntroFragmentB.kt Removes legacy intro fragment (deleted).
app/src/main/java/tech/salroid/filmy/ui/intro/IntroFragmentA.kt Removes legacy intro fragment (deleted).
app/src/main/java/tech/salroid/filmy/ui/intro/FilmyIntroActivity.kt Removes legacy intro activity (deleted).
app/src/main/java/tech/salroid/filmy/ui/home/TvFragment.kt Updates fragment to use legacy search VM class.
app/src/main/java/tech/salroid/filmy/ui/home/MoviesFragment.kt Updates fragment to use legacy search VM class.
app/src/main/java/tech/salroid/filmy/ui/home/MainActivityCompose.kt Adds new Compose-based main activity entrypoint.
app/src/main/java/tech/salroid/filmy/ui/home/MainActivity.kt Removes legacy view-binding main activity (deleted).
app/src/main/java/tech/salroid/filmy/ui/home/LoginLauncher.kt Adds reusable Compose OAuth launcher for TMDB login.
app/src/main/java/tech/salroid/filmy/ui/gallery/GalleryViewModel.kt Adds VM for gallery images loading.
app/src/main/java/tech/salroid/filmy/ui/franchise/FranchiseViewModel.kt Adds VM for collection/franchise details.
app/src/main/java/tech/salroid/filmy/ui/discover/DiscoverViewModel.kt Adds discover VM with filters/genres + paging flows.
app/src/main/java/tech/salroid/filmy/ui/discover/DiscoverRoute.kt Adds discover route wiring for Compose screen.
app/src/main/java/tech/salroid/filmy/ui/details/TvDetailsActivity.kt Updates watch-provider model access + watched naming.
app/src/main/java/tech/salroid/filmy/ui/details/MovieDetailsActivity.kt Updates watched naming, watch provider model access, and disables some fetch calls (legacy).
app/src/main/java/tech/salroid/filmy/ui/component/FilmyTopNavigationBarItem.kt Removes unused imports and adjusts commented styling hooks.
app/src/main/java/tech/salroid/filmy/ui/common/model/WatchProvidersUiModel.kt Adds watch providers UI models for Compose.
app/src/main/java/tech/salroid/filmy/ui/common/model/StudioUiModel.kt Adds studio UI model.
app/src/main/java/tech/salroid/filmy/ui/common/model/SeasonUiModel.kt Adds season UI model.
app/src/main/java/tech/salroid/filmy/ui/common/model/ReviewUiModel.kt Adds review UI models.
app/src/main/java/tech/salroid/filmy/ui/common/model/RatingUiModel.kt Adds ratings UI model + rating sources enum.
app/src/main/java/tech/salroid/filmy/ui/common/model/PaletteColors.kt Adds palette colors model for dynamic styling.
app/src/main/java/tech/salroid/filmy/ui/common/model/MediaDetailsUiState.kt Adds consolidated media-details UI state model.
app/src/main/java/tech/salroid/filmy/ui/common/model/DetailsActions.kt Adds action callbacks container for details screens.
app/src/main/java/tech/salroid/filmy/ui/common/icons/MoreUp.kt Adds vector icon as ImageVector.
app/src/main/java/tech/salroid/filmy/ui/common/components/LoginRequiredDialog.kt Adds Compose login-required dialog.
app/src/main/java/tech/salroid/filmy/ui/common/components/LoadingWidget.kt Adds Compose loading indicator widget.
app/src/main/java/tech/salroid/filmy/ui/common/components/ErrorWidget.kt Adds Compose error UI widget.
app/src/main/java/tech/salroid/filmy/ui/common/components/CountryPicker.kt Adds Compose country picker list + filtering.
app/src/main/java/tech/salroid/filmy/ui/common/components/CategorySelector.kt Adds Compose dropdown category selector.
app/src/main/java/tech/salroid/filmy/ui/common/components/AppBranding.kt Adds Compose app branding header component.
app/src/main/java/tech/salroid/filmy/ui/collections/CollectionViewModel.kt Adds placeholder file noting redundancy.
app/src/main/java/tech/salroid/filmy/ui/collections/CollectionTypeFragment.kt Renames “favorites” collection type to watched and updates logic.
app/src/main/java/tech/salroid/filmy/ui/collections/CollectionsFragment.kt Updates collections tab icon; retains legacy tab wiring.
app/src/main/java/tech/salroid/filmy/ui/cast_crew/PersonSkeletonLoader.kt Adds Compose shimmer loader for person screen.
app/src/main/java/tech/salroid/filmy/ui/cast_crew/CastCrewViewModel.kt Adds combined credits/external IDs + error state tracking.
app/src/main/java/tech/salroid/filmy/ui/adapters/CollectionsPagerAdapter.kt Updates pager to show watched tab first.
app/src/main/java/tech/salroid/filmy/ui/adapters/CastCrewAdapter.kt Minor formatting tweak.
app/src/main/java/tech/salroid/filmy/di/AppModule.kt Adds region query interceptor and switches Room to destructive fallback; adds SharedPreferences provider.
app/src/main/java/tech/salroid/filmy/data/network/MoviesApiHelper.kt Expands Movies API helper interface (discover/people/keywords/IDs/images/etc.).
app/src/main/java/tech/salroid/filmy/data/network/AccountApiHelper.kt Expands Account API helper interface (favorites/watchlist/lists/ratings/rated).
app/src/main/java/tech/salroid/filmy/data/model/TvShowPreview.kt Adds immutable TV preview model for Compose.
app/src/main/java/tech/salroid/filmy/data/model/SearchPreview.kt Adds immutable search preview model for Compose.
app/src/main/java/tech/salroid/filmy/data/model/MoviePreview.kt Adds immutable movie preview model for Compose.
app/src/main/java/tech/salroid/filmy/data/local/model/watch_providers/WatchProviderResults.kt Removes static per-country watch-provider results model (deleted).
app/src/main/java/tech/salroid/filmy/data/local/model/watch_providers/WatchProviderResponse.kt Changes watch providers to Map<String, WatchProviderCountry>.
app/src/main/java/tech/salroid/filmy/data/local/model/Videos.kt Adds videos response models.
app/src/main/java/tech/salroid/filmy/data/local/model/TvShow.kt Makes id non-nullable.
app/src/main/java/tech/salroid/filmy/data/local/model/TvKeywordsResponse.kt Adds TV keywords response model.
app/src/main/java/tech/salroid/filmy/data/local/model/tv/TvDetails.kt Adds trailers/videos fields to TV details.
app/src/main/java/tech/salroid/filmy/data/local/model/tv/SeasonDetailsResponse.kt Adds season details response model.
app/src/main/java/tech/salroid/filmy/data/local/model/tv/Episode.kt Adds episode model.
app/src/main/java/tech/salroid/filmy/data/local/model/SearchResult.kt Makes id non-nullable and adds multi-search fields.
app/src/main/java/tech/salroid/filmy/data/local/model/ReleaseDatesResponse.kt Adds movie release dates/certification models.
app/src/main/java/tech/salroid/filmy/data/local/model/Person.kt Adds people response and known-for models.
app/src/main/java/tech/salroid/filmy/data/local/model/MovieKeywordsResponse.kt Adds movie keywords response model.
app/src/main/java/tech/salroid/filmy/data/local/model/Keyword.kt Adds keyword model.
app/src/main/java/tech/salroid/filmy/data/local/model/ImagesResponse.kt Adds images response model.
app/src/main/java/tech/salroid/filmy/data/local/model/ExternalIdsResponse.kt Adds external IDs model.
app/src/main/java/tech/salroid/filmy/data/local/model/discover/GenreResponse.kt Adds genres response model.
app/src/main/java/tech/salroid/filmy/data/local/model/discover/DiscoverSort.kt Adds discover sorting enum.
app/src/main/java/tech/salroid/filmy/data/local/model/discover/DiscoverFilters.kt Adds discover filters data class.
app/src/main/java/tech/salroid/filmy/data/local/model/ContentRatingsResponse.kt Adds TV content ratings/certification models.
app/src/main/java/tech/salroid/filmy/data/local/model/CombinedCreditsResponse.kt Adds combined credits models for person pages.
app/src/main/java/tech/salroid/filmy/data/local/model/collection/CollectionMovie.kt Adds collection part movie model.
app/src/main/java/tech/salroid/filmy/data/local/model/collection/CollectionDetailsResponse.kt Adds collection details response model.
app/src/main/java/tech/salroid/filmy/data/local/model/account/WatchlistRequest.kt Adds watchlist request body model.
app/src/main/java/tech/salroid/filmy/data/local/model/account/TmdbStatusResponse.kt Adds TMDB status response model.
app/src/main/java/tech/salroid/filmy/data/local/model/account/TmdbListsResponse.kt Adds lists response model.
app/src/main/java/tech/salroid/filmy/data/local/model/account/TmdbListDetailsResponse.kt Adds list details response model.
app/src/main/java/tech/salroid/filmy/data/local/model/account/TmdbList.kt Adds list summary model.
app/src/main/java/tech/salroid/filmy/data/local/model/account/RatingRequest.kt Adds rating request model.
app/src/main/java/tech/salroid/filmy/data/local/model/account/RatedResponse.kt Adds rated-items response model.
app/src/main/java/tech/salroid/filmy/data/local/model/account/ListItemRequest.kt Adds list item request model.
app/src/main/java/tech/salroid/filmy/data/local/model/account/FavoriteRequest.kt Adds favorite request body model.
app/src/main/java/tech/salroid/filmy/data/local/model/account/CreateListResponse.kt Adds create-list response model.
app/src/main/java/tech/salroid/filmy/data/local/model/account/CreateListRequest.kt Adds create-list request model.
app/src/main/java/tech/salroid/filmy/data/local/db/FilmyDatabase.kt Bumps Room DB version to 5.
app/src/main/java/tech/salroid/filmy/data/local/db/entity/MovieDetails.kt Renames favorite→watched and adds videos/userRating fields.
app/src/main/java/tech/salroid/filmy/data/local/db/dao/MovieDetailsDao.kt Switches list queries to Flow and adds watched/rated queries.
app/src/main/java/tech/salroid/filmy/data/local/db/dao/AccountDao.kt Adds Flow-based profile query.
app/src/main/java/tech/salroid/filmy/data/local/db/Converters.kt Adds Videos type converters.
app/src/main/java/tech/salroid/filmy/data/datasource/TvShowsPagingSource.kt Fixes nextKey calculation using total pages.
app/src/main/java/tech/salroid/filmy/data/datasource/PeoplePagingSource.kt Adds paging source for popular people.
app/src/main/java/tech/salroid/filmy/data/datasource/MoviesPagingSource.kt Fixes nextKey calculation using total pages.
app/src/main/java/tech/salroid/filmy/data/datasource/DiscoverTvPagingSource.kt Adds discover TV paging source.
app/src/main/java/tech/salroid/filmy/data/datasource/DiscoverMoviesPagingSource.kt Adds discover movies paging source.
app/src/main/java/tech/salroid/filmy/core/navigation/TopLevelDestination.kt Adds Compose bottom-tab destination definitions.
app/src/main/java/tech/salroid/filmy/core/navigation/AppRoute.kt Adds Compose route model for screens/graphs.
app/src/main/java/tech/salroid/filmy/core/navigation/AppNavigationBar.kt Adds Compose bottom navigation bar component.
app/src/main/AndroidManifest.xml Switches launcher to MainActivityCompose, updates widgets/receivers, enables back callback.
Review details
  • Files reviewed: 218/239 changed files
  • Comments generated: 10
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

value >= 1_000_000_000 -> String.format(Locale.getDefault(), "$%.1fB", value / 1_000_000_000)
value >= 1_000_000 -> String.format(Locale.getDefault(), "$%.1fM", value / 1_000_000)
value >= 1_000 -> String.format(Locale.getDefault(), "$%.1fK", value / 1_000)
else -> "$$value"
Comment on lines +42 to +49
}.flowOn(Dispatchers.Main).collect { result ->
viewModelScope.launch(Dispatchers.Main) {
result.results
.let {
_uiStateSearchResult.emit(it)
}
}
}
Comment on lines 665 to +669
// Get Reviews
viewModel.getReviews(movieId)
//viewModel.getReviews(movieId)

// Get Watch Providers
viewModel.getWatchProviders(movieId)
//viewModel.getWatchProviders(movieId)
val request = if (original.url.host == "api.themoviedb.org") {
val country = appPref.getString(PreferenceHelper.COUNTRY_KEY, null) ?: "US"
original.newBuilder()
.url(original.url.newBuilder().addQueryParameter("region", country).build())
"filmy"
).build()
)
.fallbackToDestructiveMigration(true)
binding.breathingProgress.visibility = View.VISIBLE
}
viewModel.getMovieDetails(movieId, type)
// viewModel.getMovieDetails(movieId, type)
Comment on lines +826 to +828
val watchProviderStream = watchProviderResponse.results["IN"]?.flatrate?.firstOrNull()
val watchProviderBuy = watchProviderResponse.results["IN"]?.buy?.firstOrNull()
val watchProviderRent = watchProviderResponse.results["IN"]?.rent?.firstOrNull()
Comment on lines +835 to +837
val watchProviderStream = watchProviderResponse.results["IN"]?.flatrate?.firstOrNull()
val watchProviderBuy = watchProviderResponse.results["IN"]?.buy?.firstOrNull()
val watchProviderRent = watchProviderResponse.results["IN"]?.rent?.firstOrNull()
@@ -37,7 +37,7 @@ class CollectionsFragment : Fragment() {
0 -> {
tab.text = getString(R.string.favorite)
import java.time.LocalDate
import java.time.format.DateTimeFormatter

fun formateReleaseDate(raw: String): String {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants