Skip to content

Center favorites loading screen#223

Merged
caleb-bit merged 11 commits intomainfrom
Caleb/favorites-loading
Apr 13, 2026
Merged

Center favorites loading screen#223
caleb-bit merged 11 commits intomainfrom
Caleb/favorites-loading

Conversation

@caleb-bit
Copy link
Copy Markdown
Contributor

@caleb-bit caleb-bit commented Apr 12, 2026

Overview

  • Centers the loading screen for favorites screen.
  • Add previews

Related PRs or Issues

Screenshots

image

Summary by CodeRabbit

  • Refactor

    • Split Favorites UI into a smaller content component and expose filter/remove actions as parameters.
  • Style

    • Centered and expanded loading layout; adjusted spacing/padding and error presentation.
  • Chores

    • Added many localized strings (including a favorites load error) across settings, onboarding, search, menus, payments, and more; simplified favorite-item removal logic.
  • Accessibility / Localization

    • Replaced hardcoded labels with localized resources and improved content descriptions.
  • Testing / Preview

    • Added previews for Favorites: loading, loaded, and error states.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 12, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Extracted FavoritesScreen UI into a private FavoritesScreenContent, moved local shimmer/toggle state, parameterized callback handlers, added previews, localized many UI strings (added favorites_load_error), adjusted layouts/padding, changed FilterButton API, switched payment enum to resource IDs, and replaced ViewModel toggle with explicit removal.

Changes

Cohort / File(s) Summary
Favorites screen & viewmodel
app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt, app/src/main/java/com/cornellappdev/android/eatery/ui/viewmodels/FavoritesViewModel.kt
Extracted UI into private FavoritesScreenContent (moved rememberShimmer and local toggle state); FavoritesScreenContent now accepts callbacks. Loading LazyColumn uses fillMaxSize() and centered alignment. Added three @Previews. ViewModel removed toggleFavoriteMenuItem and added removeFavoriteMenuItem (always removes).
String resources
app/src/main/res/values/strings.xml
Added favorites_load_error and many new localized string resources used across the app.
Wide localization changes
app/src/main/java/com/cornellappdev/android/eatery/ui/components/..., app/src/main/java/com/cornellappdev/android/eatery/ui/screens/...
Replaced numerous hardcoded strings with stringResource(...), updated accessibility contentDescriptions, and refactored several status text branches to when with formatted string args.
Filter API change
app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/FilterRow.kt, app/src/main/java/com/cornellappdev/android/eatery/ui/screens/UpcomingMenuScreen.kt
FilterButton signature changed: removed icon: ImageVector? → added hasExpandIcon: Boolean; callers updated to use hasExpandIcon = true.
Payment methods enum
app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/PaymentMethodsAvailable.kt
Enum property renamed text: StringtextRes: Int; enum constants now reference R.string.* resource IDs; callers updated to use stringResource for labels.
Network error localization
app/src/main/java/com/cornellappdev/android/eatery/ui/viewmodels/state/NetworkErrorHandler.kt
Error message building now uses context.getString(...) and maps NetworkAction → string resource IDs for localized formatted messages.
Minor UI/accessibility tweaks
app/src/main/java/.../EateryBlob.kt, and various small files
Adjusted EateryBlob padding (end = 12.dphorizontal = 6.dp); changed several contentDescription values to localized strings or null; small layout/import tweaks.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • AndrewCheung360

Poem

🐰 I hopped through strings and shaped the view,
Pulled content out, made previews new,
Centered loading, padded with care,
Swapped a toggle for remove — light as air,
Local words now hum — a tidy chew.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The PR includes extensive string resource localizations across 30+ files, which appear to be part of a broader i18n effort but are not directly required by issue #201 or the stated PR objectives. Consider separating the string localization changes into a distinct PR focused on internationalization, keeping this PR scoped to only the Favorites loading screen centering and preview additions.
Docstring Coverage ⚠️ Warning Docstring coverage is 6.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Center favorites loading screen' is fully related to the main changes in the changeset: centering the loading UI and adding preview composables for the Favorites screen.
Description check ✅ Passed The PR description covers the main objectives (centering loading screen, adding previews) and includes a screenshot. However, it lacks 'Changes Made' and 'Test Coverage' sections specified in the template.
Linked Issues check ✅ Passed The changeset directly addresses issue #201 by adding Modifier.fillMaxSize() and horizontalAlignment = Alignment.CenterHorizontally to the loading LazyColumn in FavoritesScreenContent, centering the loading placeholders as required.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch Caleb/favorites-loading

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.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt (1)

157-160: Move the new error copy into string resources.

"Failed to obtain eatery data" should come from strings.xml for localization and consistency.

💡 Suggested change
+import androidx.compose.ui.res.stringResource
...
-                EateriesEmptyState("Failed to obtain eatery data")
+                EateriesEmptyState(stringResource(R.string.favorites_load_error))

And add favorites_load_error in app/src/main/res/values/strings.xml.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt`
around lines 157 - 160, Replace the hardcoded error string used in the
FavoritesScreenViewState.Error branch (where EateriesEmptyState("Failed to
obtain eatery data") is called) with a localized string resource; add an entry
favorites_load_error to app/src/main/res/values/strings.xml and use that
resource (via stringResource or context.getString) when constructing the
EateriesEmptyState so the message is localized and consistent.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt`:
- Around line 157-160: Replace the hardcoded error string used in the
FavoritesScreenViewState.Error branch (where EateriesEmptyState("Failed to
obtain eatery data") is called) with a localized string resource; add an entry
favorites_load_error to app/src/main/res/values/strings.xml and use that
resource (via stringResource or context.getString) when constructing the
EateriesEmptyState so the message is localized and consistent.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f1953d28-086a-4243-b62c-0b013b58994f

📥 Commits

Reviewing files that changed from the base of the PR and between 5593ce0 and cbc3e24.

📒 Files selected for processing (1)
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt (1)

80-105: Good extraction for preview support.

The refactoring cleanly separates ViewModel wiring from UI rendering, enabling preview coverage.

Minor naming inconsistency: the parameter removeFavoriteMenuItem (line 101) is assigned toggleFavoriteMenuItem (line 88). Consider aligning the naming for clarity—either rename the parameter to toggleFavoriteMenuItem or rename the ViewModel method to removeFavoriteMenuItem if it's a one-way removal.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt`
around lines 80 - 105, The parameter name removeFavoriteMenuItem in
FavoritesScreenContent is mismatched with the passed
favoriteViewModel::toggleFavoriteMenuItem; rename one for clarity—either (A)
rename the FavoritesScreenContent parameter to toggleFavoriteMenuItem and update
its type/signature to reflect a toggling action, or (B) change the caller to
pass favoriteViewModel::removeFavoriteMenuItem (or implement
removeFavoriteMenuItem on the ViewModel) if the operation is strictly a removal;
update all references to the chosen symbol (removeFavoriteMenuItem or
toggleFavoriteMenuItem) to maintain consistent naming.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt`:
- Around line 80-105: The parameter name removeFavoriteMenuItem in
FavoritesScreenContent is mismatched with the passed
favoriteViewModel::toggleFavoriteMenuItem; rename one for clarity—either (A)
rename the FavoritesScreenContent parameter to toggleFavoriteMenuItem and update
its type/signature to reflect a toggling action, or (B) change the caller to
pass favoriteViewModel::removeFavoriteMenuItem (or implement
removeFavoriteMenuItem on the ViewModel) if the operation is strictly a removal;
update all references to the chosen symbol (removeFavoriteMenuItem or
toggleFavoriteMenuItem) to maintain consistent naming.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 11956563-3a25-4bd3-be72-9d2a9218fe4f

📥 Commits

Reviewing files that changed from the base of the PR and between cbc3e24 and 7d1a799.

📒 Files selected for processing (2)
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt
  • app/src/main/res/values/strings.xml
✅ Files skipped from review due to trivial changes (1)
  • app/src/main/res/values/strings.xml

@caleb-bit caleb-bit added the ui A UI inconsistency with design. label Apr 12, 2026
Copy link
Copy Markdown
Member

@AndrewCheung360 AndrewCheung360 left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/FilterRow.kt`:
- Line 88: Replace the hardcoded accessibility label in the FilterRow composable
— change contentDescription = "Expand filters" to use a localized string
resource (e.g., contentDescription = stringResource(R.string.expand_filters))
and add the corresponding <string name="expand_filters">Expand filters</string>
to strings.xml if missing so the label is localized.

In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/components/settings/ReportBottomSheet.kt`:
- Around line 189-190: Selected option labels are using raw English strings via
Issue.option which bypasses localization; replace usages to read the string
resource ID (Issue.optionRes) and call stringResource(...) when rendering. In
ReportBottomSheet update the text binding that currently uses
selectedIssue?.option to use stringResource(selectedIssue?.optionRes ?:
R.string.report_choose_option) (or equivalent null-coalescing to the
choose-option string), and in IssueBottomSheet set title =
stringResource(issue.optionRes) instead of using issue.option.

In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/components/upcoming/MealBottomSheet.kt`:
- Around line 120-126: In MealBottomSheet.kt replace each Icon's
contentDescription = null inside the IconButton (the selected/unselected Icon
pairs shown) with a stringResource that reflects the meal and state (use e.g.
stringResource(R.string.a11y_meal_selected_breakfast) when the meal is currently
selected and stringResource(R.string.a11y_meal_select_breakfast) when
unselected); apply the same pattern for lunch, dinner, and late_night icons (use
unique resource names like a11y_meal_selected_lunch / a11y_meal_select_lunch,
etc.), and add those string entries to strings.xml so TalkBack users receive
meaningful labels.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 2dc6524a-154f-486a-a8a2-a1536cfb8c85

📥 Commits

Reviewing files that changed from the base of the PR and between 7d1a799 and 53f6bca.

📒 Files selected for processing (35)
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/details/CalendarButton.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/details/EateryHourBottomSheet.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/details/EateryMenusBottomSheet.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/AppStoreRatingPopup.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/FavoriteButton.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/FilterRow.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/NoEateryFound.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/PaymentMethodsAvailable.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/PaymentMethodsBottomSheet.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/PermissionRequestDialog.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/SearchBar.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/home/EateryHomeSection.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/notifications/FavoriteItemRow.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/settings/AppIconBottomSheet.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/settings/ReportBottomSheet.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/upcoming/MealBottomSheet.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/upcoming/MenuCard.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/AboutScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/CompareMenusScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/EateryDetailScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/HomeScreen.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/OnboardingScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/PrivacyScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/SearchScreen.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
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/UpcomingMenuScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/viewmodels/FavoritesViewModel.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/viewmodels/state/NetworkErrorHandler.kt
  • app/src/main/res/values/strings.xml
✅ Files skipped from review due to trivial changes (11)
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/settings/AppIconBottomSheet.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/NearestScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/NoEateryFound.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/LegalScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/details/EateryMenusBottomSheet.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/upcoming/MenuCard.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/SearchBar.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/details/CalendarButton.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/home/EateryHomeSection.kt
  • app/src/main/res/values/strings.xml
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/notifications/FavoriteItemRow.kt
🚧 Files skipped from review as they are similar to previous changes (1)
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/FavoritesScreen.kt

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
app/src/main/java/com/cornellappdev/android/eatery/ui/components/login/AccountPage.kt (1)

350-367: ⚠️ Potential issue | 🟡 Minor

Localize settings icon accessibility text.

Line 365 and Line 386 still use Icons.Outlined.Settings.name, which is not localized and can be awkward for TalkBack. Use a string resource instead.

Proposed fix
@@
                     IconButton(
                         modifier = Modifier.align(Alignment.CenterEnd),
                         onClick = onSettingsClicked
                     ) {
                         Icon(
                             modifier = Modifier.size(28.dp),
                             imageVector = Icons.Outlined.Settings,
-                            contentDescription = Icons.Outlined.Settings.name,
+                            contentDescription = stringResource(R.string.a11y_settings),
                             tint = Color.White
                         )
                     }
@@
                     IconButton(
                         modifier = Modifier
                             .padding(end = 16.dp)
                             .align(Alignment.End)
                             .size(32.dp),
                         onClick = { onSettingsClicked() }) {
                         Icon(
                             modifier = Modifier.size(28.dp),
                             imageVector = Icons.Outlined.Settings,
-                            contentDescription = Icons.Outlined.Settings.name,
+                            contentDescription = stringResource(R.string.a11y_settings),
                             tint = Color.White
                         )
                     }
<!-- app/src/main/res/values/strings.xml -->
<string name="a11y_settings">Open settings</string>

Also applies to: 396-397

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/components/login/AccountPage.kt`
around lines 350 - 367, Replace the non-localized contentDescription that uses
Icons.Outlined.Settings.name with a string resource (e.g.,
R.string.a11y_settings) for all occurrences where the settings Icon is created
(look for Icon usages inside IconButton and any other Icon with imageVector =
Icons.Outlined.Settings); update the UI composables (IconButton/Icon) to call
stringResource(R.string.a11y_settings) for contentDescription so TalkBack reads
a localized descriptive string instead of the enum name.
🧹 Nitpick comments (2)
app/src/main/java/com/cornellappdev/android/eatery/ui/screens/EateryDetailScreen.kt (2)

548-551: Avoid duplicate TalkBack announcements on icon+text buttons.

Since the button text already labels the action, these icon contentDescriptions can be null to prevent redundant screen-reader output.

♿ Suggested accessibility tweak
                                             Icon(
                                                 painter = painterResource(id = R.drawable.ic_android_phone),
-                                                contentDescription = stringResource(R.string.a11y_phone_order_online)
+                                                contentDescription = null
                                             )
@@
                                         Icon(
                                             painter = painterResource(id = R.drawable.ic_walk),
-                                            contentDescription = stringResource(R.string.a11y_walk_get_directions)
+                                            contentDescription = null
                                         )

Also applies to: 602-605

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/screens/EateryDetailScreen.kt`
around lines 548 - 551, The Icon composable within EateryDetailScreen is
providing a contentDescription that duplicates the button text (painterResource
R.drawable.ic_android_phone with contentDescription =
stringResource(R.string.a11y_phone_order_online)); change the Icon's
contentDescription to null so TalkBack won't announce the icon in addition to
the button label; apply the same change to the other Icon instance noted (the
block around the second occurrence at the referenced lines) so both icon+text
buttons use null contentDescription and rely on the button text for
accessibility.

464-464: Keep loading fallback localization consistent in sticky header.

eatery.name ?: stringResource(R.string.loading) was updated in one place, but EateryHeader still uses hardcoded "Loading...", which can create mixed-language UI.

🌐 Suggested consistency fix
-            text = eatery.name ?: "Loading...",
+            text = eatery.name ?: stringResource(R.string.loading),

Also applies to: 934-940

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/screens/EateryDetailScreen.kt`
at line 464, Update EateryHeader to use the localized loading fallback instead
of the hardcoded "Loading...": replace occurrences of the literal "Loading..."
in the EateryHeader composable (and the similar instances around the
EateryDetailScreen refs noted near the 934-940 region) with
stringResource(R.string.loading) so the sticky header and other UI elements use
the same localized fallback as the rest of the screen.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/components/settings/ReportBottomSheet.kt`:
- Around line 93-94: The selectedIssueLabel (stringResource) is UI text and must
not be sent to sendReport because it localizes the issue identifier; change the
value passed into sendReport (and anywhere you build the report content like the
"$issue: $report" concatenation) to use selectedIssue?.name (the stable enum
identifier) while continuing to use selectedIssueLabel for display in the UI and
any localized placeholders; update calls to sendReport and the content
construction in ReportBottomSheet (references: selectedIssueLabel,
selectedIssue?.name, sendReport, content) so the backend receives the stable
identifier instead of localized text.

---

Outside diff comments:
In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/components/login/AccountPage.kt`:
- Around line 350-367: Replace the non-localized contentDescription that uses
Icons.Outlined.Settings.name with a string resource (e.g.,
R.string.a11y_settings) for all occurrences where the settings Icon is created
(look for Icon usages inside IconButton and any other Icon with imageVector =
Icons.Outlined.Settings); update the UI composables (IconButton/Icon) to call
stringResource(R.string.a11y_settings) for contentDescription so TalkBack reads
a localized descriptive string instead of the enum name.

---

Nitpick comments:
In
`@app/src/main/java/com/cornellappdev/android/eatery/ui/screens/EateryDetailScreen.kt`:
- Around line 548-551: The Icon composable within EateryDetailScreen is
providing a contentDescription that duplicates the button text (painterResource
R.drawable.ic_android_phone with contentDescription =
stringResource(R.string.a11y_phone_order_online)); change the Icon's
contentDescription to null so TalkBack won't announce the icon in addition to
the button label; apply the same change to the other Icon instance noted (the
block around the second occurrence at the referenced lines) so both icon+text
buttons use null contentDescription and rely on the button text for
accessibility.
- Line 464: Update EateryHeader to use the localized loading fallback instead of
the hardcoded "Loading...": replace occurrences of the literal "Loading..." in
the EateryHeader composable (and the similar instances around the
EateryDetailScreen refs noted near the 934-940 region) with
stringResource(R.string.loading) so the sticky header and other UI elements use
the same localized fallback as the rest of the screen.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 559aafde-3c14-4168-b840-a73df781d87c

📥 Commits

Reviewing files that changed from the base of the PR and between 53f6bca and 1473f14.

📒 Files selected for processing (11)
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/FilterRow.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/SearchBar.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/login/AccountPage.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/notifications/FavoriteItemRow.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/settings/ReportBottomSheet.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/upcoming/MealBottomSheet.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/upcoming/MenuCard.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/EateryDetailScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/HomeScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/SearchScreen.kt
  • app/src/main/res/values/strings.xml
✅ Files skipped from review due to trivial changes (4)
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/notifications/FavoriteItemRow.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/SearchScreen.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/screens/HomeScreen.kt
  • app/src/main/res/values/strings.xml
🚧 Files skipped from review as they are similar to previous changes (3)
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/upcoming/MenuCard.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/general/FilterRow.kt
  • app/src/main/java/com/cornellappdev/android/eatery/ui/components/upcoming/MealBottomSheet.kt

@caleb-bit caleb-bit merged commit f160b20 into main Apr 13, 2026
3 checks passed
@caleb-bit caleb-bit deleted the Caleb/favorites-loading branch April 13, 2026 04:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ui A UI inconsistency with design.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Favorites Loading Screen is off-center

2 participants