Skip to content

Enable edge-to-edge and fix insets - #226

Merged
caleb-bit merged 3 commits into
mainfrom
Caleb/edge-to-edge
Apr 15, 2026
Merged

caleb-bit merged 3 commits into
mainfrom
Caleb/edge-to-edge

Conversation

@caleb-bit

@caleb-bit caleb-bit commented Apr 14, 2026 •

Copy link
Copy Markdown
Contributor

Overview

  • Enabled edge-to-edge
  • Fixed incorrect top padding caused by default scaffold padding
  • Use statusBarPadding instead of hardcoded top padding

Summary by CodeRabbit

  • Bug Fixes
    • Improved status bar and system-inset handling across screens for consistent top spacing on different devices.
    • Enhanced soft keyboard behavior so content resizes reliably when the keyboard appears.
    • Enabled edge-to-edge display support for better screen utilization and a more consistent visual layout.

@coderabbitai

coderabbitai Bot commented Apr 14, 2026 •

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 12038738-3164-4681-8a5e-ec5c7486e1eb

📥 Commits

Reviewing files that changed from the base of the PR and between 1f1c46c and dee70e3.

📒 Files selected for processing (11)
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/onboarding/OnboardingCarousel.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/settings/SwitchOption.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/AboutScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/LegalScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/NearestScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/NotificationsHomeScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/NotificationsSettingsScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/PrivacyScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/SettingsScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/SupportScreen.kt
✅ Files skipped from review due to trivial changes (5)
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/SupportScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/settings/SwitchOption.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/onboarding/OnboardingCarousel.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/PrivacyScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/LegalScreen.kt
🚧 Files skipped from review as they are similar to previous changes (3)
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/NotificationsHomeScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/NearestScreen.kt

📝 Walkthrough

Walkthrough

Enable edge-to-edge and system-inset aware layouts: add soft-input adjustResize in the manifest, call enableEdgeToEdge in MainActivity, replace fixed top paddings with statusBarsPadding() across many screens, and set explicit empty contentWindowInsets on some Scaffolds.

Changes

Cohort / File(s) Summary
Window & Activity Config
app/src/main/AndroidManifest.xml, app/src/main/java/com/cornellappdev/android/eatery/MainActivity.kt
Added android:windowSoftInputMode="adjustResize" to MainActivity in the manifest; replaced WindowCompat.setDecorFitsSystemWindows(...) with enableEdgeToEdge() in MainActivity.
Scaffold Insets
app/src/main/java/com/cornellappdev/android/eatery/ui/screens/EateryDetailScreen.kt, app/src/main/java/com/cornellappdev/android/eatery/ui/screens/HomeScreen.kt
Set contentWindowInsets = WindowInsets(0, 0, 0, 0) on Scaffold instances to remove default content inset application.
Status Bar Insets (many screens)
app/src/main/java/com/cornellappdev/android/eatery/ui/screens/{AboutScreen, FavoritesScreen, LegalScreen, NearestScreen, NotificationsHomeScreen, NotificationsSettingsScreen, PrivacyScreen, SettingsScreen}.kt
Replaced fixed top paddings with Modifier.statusBarsPadding() (usually via .then(...)) and consolidated horizontal padding to padding(horizontal = ...).
Search Screen Adjustments
app/src/main/java/com/cornellappdev/android/eatery/ui/screens/SearchScreen.kt
Added statusBarsPadding() to stickyHeader modifier; reduced SearchBar top padding from 64.dp to 12.dp.
Minor UI Modifier Cleanups
app/src/main/java/com/cornellappdev/android/eatery/ui/components/onboarding/OnboardingCarousel.kt, app/src/main/java/com/cornellappdev/android/eatery/ui/components/settings/SwitchOption.kt, app/src/main/java/com/cornellappdev/android/eatery/ui/screens/SupportScreen.kt, app/src/main/java/com/cornellappdev/android/eatery/ui/screens/AboutScreen.kt
Simplified padding declarations (use padding(horizontal = ...), removed explicit zero paddings, minor spacing adjustments like star icon horizontal padding).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

ui

Suggested reviewers

  • AndrewCheung360

Poem

🐰 I hopped through paddings, small and bright,
Replaced fixed tops with insets so light.
Edge to edge I bound each view,
Soft keys resize — a cleaner cue.
Hop! The layouts settle just right. ✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description provides a clear overview of the key changes but lacks the required sections from the template (Changes Made, Test Coverage, and others). Expand the description to include Changes Made section detailing file modifications, add Test Coverage documentation, and include other relevant template sections.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and concisely summarizes the main changes: enabling edge-to-edge display and fixing inset padding issues across the codebase.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch Caleb/edge-to-edge

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@AndrewCheung360 AndrewCheung360 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM. Mainly left nit comments about using horizontal padding

@caleb-bit
caleb-bit merged commit 5881958 into main Apr 15, 2026
3 checks passed
@caleb-bit
caleb-bit deleted the Caleb/edge-to-edge branch April 15, 2026 04:27
caleb-bit added a commit that referenced this pull request Oct 30, 2026
* Implement transactions retrieval plus internal refactoring

* Fix exposed loadedUser variable, use firstOrNull, plus other minor fixes.

* created object with colors imported from figma, allowed for colors to be used in all screens. Have not put the colors in each screen yet

* Initial migration to new backend

* Remove no longer used buildConfigFields

* Fix financials and login routes and use flows for account page

* Fix time zone issue with transaction times

* Keep user logged in

* Fix favoriting routes

* Complete favoriting logic

* Fix logout behavior

* Fix meal filter formatting

* Fix capitalized meal times in details screen

* Improve code quality in Eatery

* Refresh favorites when HomeScreen opens

* Implement in-app updates

* Clean up comments

* Clean up logging

* Revert favoriting to local

* Implement error handling system for networking calls

* Implement toast error handling

* Initial plan

* Fix: only call getFinancials() when linkGETAccount succeeds

Co-authored-by: caleb-bit <74190657+caleb-bit@users.noreply.github.com>

* Remove redundant UUID creation

* Make LoginViewModel correctly observe userRepository

* Create VM for settings

* Fix issue with menuItemsToEateries

* Use safer calls

* Fix incorrect documentation

* Initial plan

* Fix memory leak: store and unregister flexible update listener in MainActivity

Co-authored-by: caleb-bit <74190657+caleb-bit@users.noreply.github.com>

* Remove redundant preview

* Minor code improvements to LoginViewModel

* Extract unregistering listener logic

* Remove runBlocking call

* Improve redundant computation

* Use null-safe access

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove debugging variable

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Reuse function

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix visibility issue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix typo

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Use setPref helper

* Fix import issue

* Simplify function

* Import UUID

* Use flows in UserPreferencesRepository

* Fix name typo

* Simplify collection transformation

* Clean up EateryMenusBottomSheet.kt

* Add preview for EateryDetailScreen

* Prevent race condition from getDeviceId

* Use collectAsStateWithLifecycle

* Unregister listener in onStop

* Improve flow practice

* Add limit count and duplicate checking to recent searches

* Extract AuthTokenRepository from UserRepository

* Remove redundant comments

* Remove one-item column

* Remove duplicate statusBarPadding

* Fix index issue

* Add preview for EateryMenusBottomSheet

* Replace spacer with divider

* Hoist filterText

* Add key for lazycolumn

* Replace spacers with dividers

* Hoist date formatting logic

* Fix inefficient recomputation

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Prevent passing state down

* Use firstOrNull() instead of first()

* Fix logout behavior

* Initial plan

* Encrypt sensitive auth credentials stored in DataStore at rest

Co-authored-by: caleb-bit <74190657+caleb-bit@users.noreply.github.com>

* Implement OkHttp interceptor

* Extract functionality

* Remove unnecessary legacy handling

* Ensure backward compatibility in user_prefs

* Update version number

* Improve null handling with backend data

* Fix minor visibility issue

* Refactor transaction formatting

* Extract GET repo and clean up other repo logic

* Use StateFlows in VMs

* Use UIState pattern

* Minor renaming

* Avoid recomputation inside loop

* Avoid silent default values

* Improve tryRequestWithTokenRefresh

* Remove redundant initial value

* Use null-safe key

* Fix account page loading behavior

* Clear error on login

* Update SDK

* AGP update

* Easier gradle updates

* KSP migration and other dependency updates

* Migrate to Material 3

* Fix hiltViewModel warnings

* Fix top padding

* Replace deprecated startActivity

* Update gradle dependencies

* Replace deprecated methods

* Create preview for CompareMenusBot and fix color issue

* Remove API-level gating for permission request

* Fix report logic

* Fix exception type

* Fix payment filter update condition

* Remove redundant parameter

* Add preview to MenuCard + minor fixes

* Fix outdated comment

* Fix null handling

* Fix permission request text

* Fix braces

* Fix jittery search bar

* Safer app intents

* Correctly read frequently changing value

* Prevent accumulating list at recomposition

* Finished Dark Mode Feature

* Fix report submission behavior

* Move state mutations out of composition scope

* Use rememberSaveable

* Use correct hiltViewModel dependency

* LaunchedEffect fixes

* Login fixes

* Use items in lazycolumn

* Remove unnecessary runCatching

* Fix color

* Clean up UpcomingMenuScreen

* Fix View Eatery Details button padding

* Use rememberSaveable

* Remove unused dependency

* Input validation for reports

* Safe event access

* More safe event access

* Use thickness param

* Fix flows in comparemenus

* Correct key for LaunchedEffect

* Disable close while sending

* Use rememberSaveable

* Move ui-tooling to debugImplementation scope

* Rename Preview

* Rename CompareMenusBottomSheet

* Minor improvements in EateryMenusBottomSheet.kt

* Use UIState in comparemenus

* Bot to Bottom

* Use ReportUiState

* Use ElevatedCard

* Center favorites loading screen and extract string resources (#223)

* Enable edge-to-edge and fix inset handling (#226)

* Add previews and refactor popup handling (#228)

* CodeRabbit Changes

* Rabbit Updates

* Add intent filters for Navi (#235)

* Migrate to built-in Kotlin & prepare for Kotlin DSL (#232)

* Prevent duplicated token refresh and clean up auth logic (#231)

* Material 3 UI Fixes (#234)

* coderabbit fixes

* More nit fixes

* Fix preview

* coderabbit fixes

* add previews

* Add dark mode previews

* coderabbit fixes

* More fixes

* Refactor EateryCard modifier

* Remove colors alias

* Fix search bar colors

* Background color fixes

* Fix text colors

* Fix background colors

* Fix eatery meal tabs

* Fix login page text color

* Fix calendar week selector

* Fix menu card colors

* Fix favorites toggle colors

* Fix favorite button color

* Fix switchoption color

* Fix supportscreen colors

* More color fixes

* Payment methods fixes

* More payment methods fixes

* Fix map stuff

* Fix dark mode visual bugs (stacked on Brian_DarkMode) (#252)

* Code quality fixes and dependency updates

* Bump versions

* Cent rounding fix

* Add Display settings with dark mode toggle and settings access from login

- Add DisplayBottomSheet with Light / Dark / Device Theme radio options
- Add Display row to SettingsScreen wired to ThemeViewModel
- Expose isLoggedIn from ThemeViewModel; hide logout button when not logged in
- Make settings list scrollable to prevent logout button from squishing
- Add settings icon to LoginPage header so unauthenticated users can access settings
- Add settings_display_* string resources

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add spacing below filter row in UpcomingMenuScreen

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Address CodeRabbit review comments

- Use collectAsStateWithLifecycle() instead of collectAsState() for lifecycle-aware state collection
- Set logout icon contentDescription to null to avoid TalkBack reading redundant icon label alongside visible "Log out" text

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Refactor theme state to ThemePreference enum; move isLoggedIn to SettingsViewModel

- Add ThemePreference enum (LIGHT/DARK/SYSTEM) to data/models
- Expose themePreferenceFlow from UserPreferencesRepository instead of nullable Boolean
- Replace isDarkMode: StateFlow<Boolean?> with themePreference: StateFlow<ThemePreference> in ThemeViewModel; drop isLoggedIn
- Add isLoggedIn: StateFlow<Boolean> to SettingsViewModel (injecting UserPreferencesRepository)
- Update rememberResolvedDarkMode in Theme.kt to switch on ThemePreference enum
- Update DisplayBottomSheet to accept ThemePreference param directly, removing private DisplayTheme enum
- Update SettingsScreen to use ThemePreference and collect isLoggedIn from settingsViewModel

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix report issue button (#257)

* Delayed nit fixes (#258)

* Bump versions for patch release (#259)

* Bump version

* Update whatsnew

* Implement remaining FCM logic

* Set up notification hub logic

* UI changes

* API Hub Layer

* Address CodeRabbit review on notification handling

* Backend integration with usersettings

* New UI changes + remaining settings endpoint

* Push notification test with Firebase

* settings hub

* Update search screen and view model for favorites

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* pull to refresh and hub changes

* Enable backend favorites sync

* the ReportAdapter change and the manifest tap action

* Re-enable local favorites

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix unread dot

* Open hub from push tap and add notifications-off state

* Sync favorite items to backend

* Clean up notification integration and reuse shared UI

* Fix duplicate FCM token

* Defer notification prompt until after onboarding and harden push tap handling

Wait for onboarding before requesting POST_NOTIFICATIONS; catch DataStore failures in favorite sync; open the hub from a push tapped right after onboarding.

* Hide the notification bell in release until the backend serves the hub

Hide the bell after a 404 from /users/notifications (release only) and show it again on the next successful fetch; retry queued favorite syncs on resume.

* Address CodeRabbit review

* Address review: previews, renames, and lint cleanup

* Move auth token gating into repositories

* Use a per-item mutex for favorite item sync

* Inject notification permission checks and move messaging service out of util

* Align Favorites back arrow with the title

* Move notification settings sync from the view model into NotificationRepository

* Drop reserved proto tags and local backend override

* Update notification settings on tap and add authorizedNetworkCall

* Renumber new proto fields and move notification error state into components

* Keep the switch thumb full size when unchecked

* Match the switch's off track color to the design

* Match the Favorites header to the design

* Remove unused import and restore default switch thumb size

* update whats new (#265)

* dummy

---------

Co-authored-by: Caleb Shim <calebshim248@gmail.com>
Co-authored-by: brianhu72 <brianhu72@gmail.com>
Co-authored-by: Caleb Shim <74190657+caleb-bit@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Andrew Cheung <andrewcheung360@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Francis Lau <flau1019@gmail.com>
caleb-bit added a commit that referenced this pull request Oct 30, 2026
* Fix favoriting routes

* Complete favoriting logic

* Fix logout behavior

* Fix meal filter formatting

* Fix capitalized meal times in details screen

* Improve code quality in Eatery

* Refresh favorites when HomeScreen opens

* Implement in-app updates

* Clean up comments

* Clean up logging

* Revert favoriting to local

* Implement error handling system for networking calls

* Implement toast error handling

* Initial plan

* Fix: only call getFinancials() when linkGETAccount succeeds

Co-authored-by: caleb-bit <74190657+caleb-bit@users.noreply.github.com>

* Remove redundant UUID creation

* Make LoginViewModel correctly observe userRepository

* Create VM for settings

* Fix issue with menuItemsToEateries

* Use safer calls

* Fix incorrect documentation

* Initial plan

* Fix memory leak: store and unregister flexible update listener in MainActivity

Co-authored-by: caleb-bit <74190657+caleb-bit@users.noreply.github.com>

* Remove redundant preview

* Minor code improvements to LoginViewModel

* Extract unregistering listener logic

* Remove runBlocking call

* Improve redundant computation

* Use null-safe access

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove debugging variable

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Reuse function

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix visibility issue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix typo

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Use setPref helper

* Fix import issue

* Simplify function

* Import UUID

* Use flows in UserPreferencesRepository

* Fix name typo

* Simplify collection transformation

* Clean up EateryMenusBottomSheet.kt

* Add preview for EateryDetailScreen

* Prevent race condition from getDeviceId

* Use collectAsStateWithLifecycle

* Unregister listener in onStop

* Improve flow practice

* Add limit count and duplicate checking to recent searches

* Extract AuthTokenRepository from UserRepository

* Remove redundant comments

* Remove one-item column

* Remove duplicate statusBarPadding

* Fix index issue

* Add preview for EateryMenusBottomSheet

* Replace spacer with divider

* Hoist filterText

* Add key for lazycolumn

* Replace spacers with dividers

* Hoist date formatting logic

* Fix inefficient recomputation

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Prevent passing state down

* Use firstOrNull() instead of first()

* Fix logout behavior

* Initial plan

* Encrypt sensitive auth credentials stored in DataStore at rest

Co-authored-by: caleb-bit <74190657+caleb-bit@users.noreply.github.com>

* Implement OkHttp interceptor

* Extract functionality

* Remove unnecessary legacy handling

* Ensure backward compatibility in user_prefs

* Update version number

* Improve null handling with backend data

* Fix minor visibility issue

* Refactor transaction formatting

* Extract GET repo and clean up other repo logic

* Use StateFlows in VMs

* Use UIState pattern

* Minor renaming

* Avoid recomputation inside loop

* Avoid silent default values

* Improve tryRequestWithTokenRefresh

* Remove redundant initial value

* Use null-safe key

* Fix account page loading behavior

* Clear error on login

* Update SDK

* AGP update

* Easier gradle updates

* KSP migration and other dependency updates

* Migrate to Material 3

* Fix hiltViewModel warnings

* Fix top padding

* Replace deprecated startActivity

* Update gradle dependencies

* Replace deprecated methods

* Create preview for CompareMenusBot and fix color issue

* Remove API-level gating for permission request

* Fix report logic

* Fix exception type

* Fix payment filter update condition

* Remove redundant parameter

* Add preview to MenuCard + minor fixes

* Fix outdated comment

* Fix null handling

* Fix permission request text

* Fix braces

* Fix jittery search bar

* Safer app intents

* Correctly read frequently changing value

* Prevent accumulating list at recomposition

* Finished Dark Mode Feature

* Fix report submission behavior

* Move state mutations out of composition scope

* Use rememberSaveable

* Use correct hiltViewModel dependency

* LaunchedEffect fixes

* Login fixes

* Use items in lazycolumn

* Remove unnecessary runCatching

* Fix color

* Clean up UpcomingMenuScreen

* Fix View Eatery Details button padding

* Use rememberSaveable

* Remove unused dependency

* Input validation for reports

* Safe event access

* More safe event access

* Use thickness param

* Fix flows in comparemenus

* Correct key for LaunchedEffect

* Disable close while sending

* Use rememberSaveable

* Move ui-tooling to debugImplementation scope

* Rename Preview

* Rename CompareMenusBottomSheet

* Minor improvements in EateryMenusBottomSheet.kt

* Use UIState in comparemenus

* Bot to Bottom

* Use ReportUiState

* Use ElevatedCard

* Center favorites loading screen and extract string resources (#223)

* Enable edge-to-edge and fix inset handling (#226)

* Add previews and refactor popup handling (#228)

* CodeRabbit Changes

* Rabbit Updates

* Add intent filters for Navi (#235)

* Migrate to built-in Kotlin & prepare for Kotlin DSL (#232)

* Prevent duplicated token refresh and clean up auth logic (#231)

* Material 3 UI Fixes (#234)

* coderabbit fixes

* More nit fixes

* Fix preview

* coderabbit fixes

* add previews

* Add dark mode previews

* coderabbit fixes

* More fixes

* Refactor EateryCard modifier

* Remove colors alias

* Fix search bar colors

* Background color fixes

* Fix text colors

* Fix background colors

* Fix eatery meal tabs

* Fix login page text color

* Fix calendar week selector

* Fix menu card colors

* Fix favorites toggle colors

* Fix favorite button color

* Fix switchoption color

* Fix supportscreen colors

* More color fixes

* Payment methods fixes

* More payment methods fixes

* Fix map stuff

* Fix dark mode visual bugs (stacked on Brian_DarkMode) (#252)

* Code quality fixes and dependency updates

* Bump versions

* Cent rounding fix

* Add Display settings with dark mode toggle and settings access from login

- Add DisplayBottomSheet with Light / Dark / Device Theme radio options
- Add Display row to SettingsScreen wired to ThemeViewModel
- Expose isLoggedIn from ThemeViewModel; hide logout button when not logged in
- Make settings list scrollable to prevent logout button from squishing
- Add settings icon to LoginPage header so unauthenticated users can access settings
- Add settings_display_* string resources

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add spacing below filter row in UpcomingMenuScreen

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Address CodeRabbit review comments

- Use collectAsStateWithLifecycle() instead of collectAsState() for lifecycle-aware state collection
- Set logout icon contentDescription to null to avoid TalkBack reading redundant icon label alongside visible "Log out" text

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Refactor theme state to ThemePreference enum; move isLoggedIn to SettingsViewModel

- Add ThemePreference enum (LIGHT/DARK/SYSTEM) to data/models
- Expose themePreferenceFlow from UserPreferencesRepository instead of nullable Boolean
- Replace isDarkMode: StateFlow<Boolean?> with themePreference: StateFlow<ThemePreference> in ThemeViewModel; drop isLoggedIn
- Add isLoggedIn: StateFlow<Boolean> to SettingsViewModel (injecting UserPreferencesRepository)
- Update rememberResolvedDarkMode in Theme.kt to switch on ThemePreference enum
- Update DisplayBottomSheet to accept ThemePreference param directly, removing private DisplayTheme enum
- Update SettingsScreen to use ThemePreference and collect isLoggedIn from settingsViewModel

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix report issue button (#257)

* Delayed nit fixes (#258)

* Bump versions for patch release (#259)

* Bump version

* Update whatsnew

* Implement remaining FCM logic

* Set up notification hub logic

* UI changes

* API Hub Layer

* Address CodeRabbit review on notification handling

* Backend integration with usersettings

* New UI changes + remaining settings endpoint

* Push notification test with Firebase

* settings hub

* Update search screen and view model for favorites

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* pull to refresh and hub changes

* Enable backend favorites sync

* the ReportAdapter change and the manifest tap action

* Re-enable local favorites

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix unread dot

* Open hub from push tap and add notifications-off state

* Sync favorite items to backend

* Clean up notification integration and reuse shared UI

* Fix duplicate FCM token

* Defer notification prompt until after onboarding and harden push tap handling

Wait for onboarding before requesting POST_NOTIFICATIONS; catch DataStore failures in favorite sync; open the hub from a push tapped right after onboarding.

* Hide the notification bell in release until the backend serves the hub

Hide the bell after a 404 from /users/notifications (release only) and show it again on the next successful fetch; retry queued favorite syncs on resume.

* Address CodeRabbit review

* Address review: previews, renames, and lint cleanup

* Move auth token gating into repositories

* Use a per-item mutex for favorite item sync

* Inject notification permission checks and move messaging service out of util

* Align Favorites back arrow with the title

* Move notification settings sync from the view model into NotificationRepository

* Drop reserved proto tags and local backend override

* Update notification settings on tap and add authorizedNetworkCall

* Renumber new proto fields and move notification error state into components

* Keep the switch thumb full size when unchecked

* Match the switch's off track color to the design

* Match the Favorites header to the design

* Remove unused import and restore default switch thumb size

* update whats new (#265)

* dummy

* change ver code

* minor change

* Version updates

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: brianhu72 <brianhu72@gmail.com>
Co-authored-by: Andrew Cheung <andrewcheung360@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Mabel Qiu <mq86@cornell.edu>
Co-authored-by: Francis Lau <flau1019@gmail.com>
Co-authored-by: Mabel Qiu <77413670+mqiu90@users.noreply.github.com>
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