Feature: Global Settings & Trakt Account Polish#522
Merged
Conversation
- Add unified DataStore configs for Theme, DataSaver, Trakt tracking under SettingsRepository. - Scaffold SettingsViewModel and SettingsScreen native UI. - Establish EmptyState abstraction component for Dashboard and Search feeds. - Bind OS theme configuration at the Top-level MainActivity compositor instance.
- Removed nested TopAppBar in SettingsScreen. - Added a globally accessible Settings gear icon action in TopBar.kt. - Bound application version to robust BuildConfig dynamics gracefully.
…gation and add disconnect confirmation dialog
…ish TraktAccount logged-out UI
… dashboard null safety
…rCard attribution overlays
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.
Feature: Global Settings & Trakt Account Polish
📝 Overview
This PR introduces a centralized Application Settings architecture backed by Android DataStore, resolving hardcoded theme logic and safely isolating Trakt OAuth lifecycle management previously scattered across the UI layer. Alongside this architectural uplift, critical Null Pointer Exceptions within the Compose grids have been heavily fortified, and the Trakt Account UI has received a comprehensive cosmetic overhaul utilizing Material 3 components and adaptive empty states.
🏗️ Architecture & Data
SettingsPreferencesDataStore schema definingThemeState(Light, Dark, System) andDataSaverMode.UpnextThemecomposable to actively collect the globalSettingsRepositoryflow, dynamically swapping theme contexts overriding the local OS settings if manually configured by the user.DashboardScreen.ktwith.orEmpty()to gracefully prevent fatal index-out-of-bounds Compose lifecycle crashes when Trakt Authorizations momentarily unhydrate during explicit logouts.🎨 UI & UX Polish
SettingsScreenroute hierarchy featuring categorized Material 3 list elements, switch toggles, and unified dialog structures for Trakt disconnections.SearchScreen, DashboardScreen, and Trakt sub-screens. Missing connectivity, empty arrays, or pending load states now organically populate with subtle animations, standard icons, and generic retry boundaries avoiding abrupt white-screen pops.AnimatedVisibilityFloating Action Button to massive Trakt grids, elegantly auto-scrolling lists of 1000+ items back to index 0.🛡️ Quality Assurance
app:ktlintFormatandapp:detektsuccessfully statically without warnings/alerts..agent/skills/navigation_adaptive_ui/SKILL.mdrepository knowledge base.