Match UI of MyListing and Home#80
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 51 minutes and 18 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughAdds comprehensive iOS native Xcode build configuration (project files, CocoaPods integration, app delegate, assets, and plist) for the PolyBuys app. Updates frontend UI components with refined theme-based styling tokens, introduces a flat shell style variant for listing cards, and adjusts responsive layout logic. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 1 | ❌ 4❌ Failed checks (3 warnings, 1 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
frontend/app/(tabs)/index.tsx (1)
570-574:⚠️ Potential issue | 🟡 MinorDead code:
isDesktopWebis alwaysfalsein the mobile branch.Since this code is inside the mobile (non-web) render path (after line 489's web return),
isDesktopWebwill always befalsehere becauseisDesktopWeb = isWeb && width >= 1024. ThelistContainerDesktopstyle will never be applied.🧹 Proposed fix
contentContainerStyle={[ styles.listContainer, - isDesktopWeb && styles.listContainerDesktop, { paddingBottom: Math.max(insets.bottom + 60, 80) }, ]}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@frontend/app/`(tabs)/index.tsx around lines 570 - 574, The conditional styles array in contentContainerStyle contains a dead branch: isDesktopWeb && styles.listContainerDesktop will always be false inside the mobile (non-web) render path; remove that check and the unreachable styles.listContainerDesktop from the mobile branch (or replace it with the intended mobile style, e.g., styles.listContainerMobile) so contentContainerStyle only includes relevant styles (keep styles.listContainer and the paddingBottom object); refer to isDesktopWeb, styles.listContainerDesktop and contentContainerStyle to locate and update the code.
🧹 Nitpick comments (2)
frontend/components/ListingCard.tsx (1)
239-240: Consider removing unused style objects.
imageContainerHomeandimageContainerHomeWebare empty objects that have no effect when applied. If they're not intended as placeholders for future styling, consider removing them and their references in lines 143-144 to reduce noise.♻️ Proposed cleanup
<View style={[ styles.imageContainer, - isHomeDensity && styles.imageContainerHome, - isHomeDensity && isWeb && styles.imageContainerHomeWeb, ]} >And remove the style definitions:
imageContainer: { width: '100%', height: LISTING_IMAGE_HEIGHT, backgroundColor: colors.surface, borderRadius: borderRadius.sm, overflow: 'hidden', position: 'relative', }, - imageContainerHome: {}, - imageContainerHomeWeb: {}, saveButton: {🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@frontend/components/ListingCard.tsx` around lines 239 - 240, Remove the unused empty style objects imageContainerHome and imageContainerHomeWeb from the ListingCard component's styles and delete any references to them in the component JSX (where those styles are spread/applied around the image container, previously referenced near the image rendering code). If these were intended as placeholders, either add the intended styles or replace their usages with the appropriate existing style object (e.g., imageContainer or imageContainerWeb); otherwise remove both the definitions and their usages to clean up dead code.frontend/app/(tabs)/index.tsx (1)
294-305: Consider simplifying the nested ternary for readability.The contentPadding calculation has deeply nested ternaries that are difficult to follow. Consider extracting this into a helper function or using a more explicit conditional structure.
♻️ Proposed refactor
- const contentPadding = isWeb - ? isDesktopWeb - ? spacing.xl - : width >= 900 - ? spacing.lg - : 10 - : width >= 900 - ? spacing.xxl - : isCompactLayout - ? spacing.md - : spacing.lg; + const contentPadding = (() => { + if (isWeb) { + if (isDesktopWeb) return spacing.xl; + if (width >= 900) return spacing.lg; + return 10; + } + if (width >= 900) return spacing.xxl; + if (isCompactLayout) return spacing.md; + return spacing.lg; + })();🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@frontend/app/`(tabs)/index.tsx around lines 294 - 305, The nested ternary calculating contentPadding (using isCompactLayout, isWeb, isDesktopWeb, width, and spacing) is hard to read; refactor it into a small helper function (e.g., getContentPadding) or replace with an explicit if/else/switch so the branching is clear: evaluate isWeb first, then isDesktopWeb/width cases, and finally the non-web width/isCompactLayout cases, returning the appropriate spacing value; update the contentPadding assignment to call the new helper to improve readability and maintain the same return values.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@frontend/ios/.xcode.env`:
- Line 11: The export of NODE_BINARY using command -v node can be empty in
non-interactive Xcode shells, so add a guard immediately after setting
NODE_BINARY to detect an empty value and fail fast: check if "$NODE_BINARY" is
unset or empty and print a clear error message (e.g., "Node binary not found;
ensure Node is installed and in PATH for Xcode build") then exit with non-zero
status; reference the NODE_BINARY variable and the build script invocations that
use "$NODE_BINARY" so maintainers can locate and verify the guard is placed
before any usage.
In `@frontend/ios/Podfile.properties.json`:
- Around line 2-3: The EX_DEV_CLIENT_NETWORK_INSPECTOR flag is hardcoded to
"true" in Podfile.properties.json and unconditionally applied in the Podfile;
remove this hardcoded entry or gate its export in the Podfile so it only applies
to dev-client/Debug builds. Modify Podfile.properties.json to omit
EX_DEV_CLIENT_NETWORK_INSPECTOR (or set it via CI/dev-only script), and in the
Podfile update the logic around the export of
ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] (the conditional that currently sets it
on line ~17) to check the build scheme or a DEV_CLIENT env var (e.g., only set
when config == "Debug" or when ENV['DEV_CLIENT'] == "1") before exporting it.
Ensure references to EX_DEV_CLIENT_NETWORK_INSPECTOR in Podfile and any build
scripts are updated to match this conditional behavior.
In `@frontend/ios/PolyBuys.xcodeproj/project.pbxproj`:
- Line 494: The LIBRARY_SEARCH_PATHS entry is malformed: fix the quoted path
separation so the SDK path and the inherited token are two separate
space-separated quoted entries (replace the single quoted string containing
escaped quotes with two quoted values), e.g., change the LIBRARY_SEARCH_PATHS
value to have "$(SDKROOT)/usr/lib/swift" "$(inherited)"; update both occurrences
of the LIBRARY_SEARCH_PATHS setting (Debug and Release configs) to use this
corrected syntax.
In `@frontend/ios/PolyBuys.xcodeproj/xcshareddata/xcschemes/PolyBuys.xcscheme`:
- Around line 31-39: The scheme's TestableReference block references a
non-existent test target (BuildableName/BlueprintName "PolyBuysTests" with
BlueprintIdentifier "00E356ED1AD99517003FC87E"); remove or fix that
TestableReference in the TestAction: either delete the entire <TestableReference
...>...</TestableReference> entry if you don't have tests yet, or replace
BlueprintName/BuildableName and BlueprintIdentifier with the actual target
values for "PolyBuys" (use the real BlueprintIdentifier from your
project.pbxproj) so the TestAction points to a valid buildable.
In `@frontend/ios/PolyBuys/AppDelegate.swift`:
- Line 1: Remove the invalid access-level modifier on the import by changing the
import statement in AppDelegate.swift (the line with "internal import Expo") to
a plain import; locate the import in the AppDelegate.swift top-level imports and
delete the "internal" token so it uses "import Expo" for Swift 5.0
compatibility.
In `@frontend/ios/PolyBuys/PolyBuys.entitlements`:
- Around line 5-6: The entitlements file currently hardcodes the APNs
environment via the aps-environment key in PolyBuys.entitlements; update it to
use a build variable instead and add the corresponding build settings: replace
the literal string value for aps-environment with the variable reference
$(APS_ENVIRONMENT) in PolyBuys.entitlements, then define
APS_ENVIRONMENT=development for the Debug configuration and
APS_ENVIRONMENT=production for the Release configuration (or alternatively
create separate entitlements files per configuration and point each build
configuration to the appropriate file).
---
Outside diff comments:
In `@frontend/app/`(tabs)/index.tsx:
- Around line 570-574: The conditional styles array in contentContainerStyle
contains a dead branch: isDesktopWeb && styles.listContainerDesktop will always
be false inside the mobile (non-web) render path; remove that check and the
unreachable styles.listContainerDesktop from the mobile branch (or replace it
with the intended mobile style, e.g., styles.listContainerMobile) so
contentContainerStyle only includes relevant styles (keep styles.listContainer
and the paddingBottom object); refer to isDesktopWeb,
styles.listContainerDesktop and contentContainerStyle to locate and update the
code.
---
Nitpick comments:
In `@frontend/app/`(tabs)/index.tsx:
- Around line 294-305: The nested ternary calculating contentPadding (using
isCompactLayout, isWeb, isDesktopWeb, width, and spacing) is hard to read;
refactor it into a small helper function (e.g., getContentPadding) or replace
with an explicit if/else/switch so the branching is clear: evaluate isWeb first,
then isDesktopWeb/width cases, and finally the non-web width/isCompactLayout
cases, returning the appropriate spacing value; update the contentPadding
assignment to call the new helper to improve readability and maintain the same
return values.
In `@frontend/components/ListingCard.tsx`:
- Around line 239-240: Remove the unused empty style objects imageContainerHome
and imageContainerHomeWeb from the ListingCard component's styles and delete any
references to them in the component JSX (where those styles are spread/applied
around the image container, previously referenced near the image rendering
code). If these were intended as placeholders, either add the intended styles or
replace their usages with the appropriate existing style object (e.g.,
imageContainer or imageContainerWeb); otherwise remove both the definitions and
their usages to clean up dead code.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 43d0cc22-a2a8-4c4d-9beb-d836b4e3a730
⛔ Files ignored due to path filters (5)
frontend/ios/Podfile.lockis excluded by!**/*.lockfrontend/ios/PolyBuys/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.pngis excluded by!**/*.pngfrontend/ios/PolyBuys/Images.xcassets/SplashScreenLegacy.imageset/image.pngis excluded by!**/*.pngfrontend/ios/PolyBuys/Images.xcassets/SplashScreenLegacy.imageset/image@2x.pngis excluded by!**/*.pngfrontend/ios/PolyBuys/Images.xcassets/SplashScreenLegacy.imageset/image@3x.pngis excluded by!**/*.png
📒 Files selected for processing (24)
frontend/app/(tabs)/_layout.tsxfrontend/app/(tabs)/index.tsxfrontend/app/(tabs)/my-listings.tsxfrontend/components/FilterBar.tsxfrontend/components/ListingCard.tsxfrontend/ios/.gitignorefrontend/ios/.xcode.envfrontend/ios/Podfilefrontend/ios/Podfile.properties.jsonfrontend/ios/PolyBuys.xcodeproj/project.pbxprojfrontend/ios/PolyBuys.xcodeproj/xcshareddata/xcschemes/PolyBuys.xcschemefrontend/ios/PolyBuys.xcworkspace/contents.xcworkspacedatafrontend/ios/PolyBuys/AppDelegate.swiftfrontend/ios/PolyBuys/Images.xcassets/AppIcon.appiconset/Contents.jsonfrontend/ios/PolyBuys/Images.xcassets/Contents.jsonfrontend/ios/PolyBuys/Images.xcassets/SplashScreenBackground.colorset/Contents.jsonfrontend/ios/PolyBuys/Images.xcassets/SplashScreenLegacy.imageset/Contents.jsonfrontend/ios/PolyBuys/Info.plistfrontend/ios/PolyBuys/PolyBuys-Bridging-Header.hfrontend/ios/PolyBuys/PolyBuys.entitlementsfrontend/ios/PolyBuys/PrivacyInfo.xcprivacyfrontend/ios/PolyBuys/SplashScreen.storyboardfrontend/ios/PolyBuys/Supporting/Expo.plistfrontend/ios/sentry.properties
| # Customize the NODE_BINARY variable here. | ||
| # For example, to use nvm with brew, add the following line | ||
| # . "$(brew --prefix nvm)/nvm.sh" --no-use | ||
| export NODE_BINARY=$(command -v node) |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify how NODE_BINARY is consumed across Xcode scripts.
rg -n '\$NODE_BINARY|\$\{NODE_BINARY:-node\}|source "\$PODS_ROOT/\.\./\.xcode\.env"' frontend/ios/PolyBuys.xcodeproj/project.pbxprojRepository: codebox-calpoly/PolyBuys
Length of output: 1866
Add a guard to fail fast if Node binary cannot be found.
The Xcode build script (line 223 of project.pbxproj) directly invokes "$NODE_BINARY" multiple times without a fallback. If command -v node returns empty in Xcode's non-interactive shell environment, these calls will fail and break the iOS build.
Proposed change
-export NODE_BINARY=$(command -v node)
+NODE_BINARY="$(command -v node || true)"
+if [ -z "$NODE_BINARY" ]; then
+ echo "error: node binary not found in PATH. Set NODE_BINARY in .xcode.env.local." >&2
+ exit 1
+fi
+export NODE_BINARY📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| export NODE_BINARY=$(command -v node) | |
| NODE_BINARY="$(command -v node || true)" | |
| if [ -z "$NODE_BINARY" ]; then | |
| echo "error: node binary not found in PATH. Set NODE_BINARY in .xcode.env.local." >&2 | |
| exit 1 | |
| fi | |
| export NODE_BINARY |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@frontend/ios/.xcode.env` at line 11, The export of NODE_BINARY using command
-v node can be empty in non-interactive Xcode shells, so add a guard immediately
after setting NODE_BINARY to detect an empty value and fail fast: check if
"$NODE_BINARY" is unset or empty and print a clear error message (e.g., "Node
binary not found; ensure Node is installed and in PATH for Xcode build") then
exit with non-zero status; reference the NODE_BINARY variable and the build
script invocations that use "$NODE_BINARY" so maintainers can locate and verify
the guard is placed before any usage.
| /usr/lib/swift, | ||
| "$(inherited)", | ||
| ); | ||
| LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check if this is the standard Expo-generated format or a typo
rg -n "LIBRARY_SEARCH_PATHS" frontend/ios/Repository: codebox-calpoly/PolyBuys
Length of output: 313
🏁 Script executed:
# Check the surrounding lines for context around LIBRARY_SEARCH_PATHS
sed -n '490,510p' frontend/ios/PolyBuys.xcodeproj/project.pbxprojRepository: codebox-calpoly/PolyBuys
Length of output: 744
🏁 Script executed:
# Check line 552 context in Release configuration
sed -n '548,560p' frontend/ios/PolyBuys.xcodeproj/project.pbxprojRepository: codebox-calpoly/PolyBuys
Length of output: 519
🏁 Script executed:
# Search for other build settings to see the pattern used for multi-value settings
rg -n "LIBRARY_SEARCH_PATHS|FRAMEWORK_SEARCH_PATHS|HEADER_SEARCH_PATHS" frontend/ios/PolyBuys.xcodeproj/project.pbxprojRepository: codebox-calpoly/PolyBuys
Length of output: 217
🌐 Web query:
pbxproj LIBRARY_SEARCH_PATHS syntax multiple paths escaped quotes xcode
💡 Result:
In Xcode's project.pbxproj file, the LIBRARY_SEARCH_PATHS build setting is a space-separated list of paths. To specify multiple paths, separate them with spaces. Paths containing spaces must be enclosed in double quotes ("). Alternatively, escape spaces within paths using backslashes (), though quoting is preferred for readability. Example syntax in pbxproj: LIBRARY_SEARCH_PATHS = "$(SRCROOT)/path1" "$(SRCROOT)/path with spaces/path2" "$(SRCROOT)/path3"; This matches the syntax for similar settings like HEADER_SEARCH_PATHS and FRAMEWORK_SEARCH_PATHS, as documented in Apple's build settings reference. Quotes prevent the shell/command line from misinterpreting spaces as argument separators, which is critical for command-line builds (e.g., xcodebuild). When editing project.pbxproj manually, ensure values are properly quoted to avoid build failures. Xcode's UI handles quoting automatically, but direct edits require attention to this format.
Citations:
- 1: https://developer.apple.com/documentation/Xcode/build-settings-reference
- 2: https://stackoverflow.com/questions/35837185/how-are-libraries-named-in-xcode-how-do-i-navigate-to-a-specific-library
- 3: https://stackoverflow.com/questions/14906361/what-do-double-quotes-signify-in-xcodes-search-paths
- 4: [Xcode] Fix missing escapes for spaces in HEADER_SEARCH_PATHS swiftlang/swift-package-manager#2770
Malformed LIBRARY_SEARCH_PATHS — fix path separation syntax.
The escaped quotes do not properly separate paths. In pbxproj files, LIBRARY_SEARCH_PATHS must be space-separated, not a single quoted string with escaped quotes. The current syntax creates a malformed path value $(SDKROOT)/usr/lib/swift"$(inherited)" with literal quote characters embedded.
Correct format:
LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift" "$(inherited)";
This same issue appears on Line 552 in the Release configuration and should be fixed in both places.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@frontend/ios/PolyBuys.xcodeproj/project.pbxproj` at line 494, The
LIBRARY_SEARCH_PATHS entry is malformed: fix the quoted path separation so the
SDK path and the inherited token are two separate space-separated quoted entries
(replace the single quoted string containing escaped quotes with two quoted
values), e.g., change the LIBRARY_SEARCH_PATHS value to have
"$(SDKROOT)/usr/lib/swift" "$(inherited)"; update both occurrences of the
LIBRARY_SEARCH_PATHS setting (Debug and Release configs) to use this corrected
syntax.
| @@ -0,0 +1,69 @@ | |||
| internal import Expo | |||
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
Does Swift 5.0 support internal import syntax?
💡 Result:
No, Swift 5.0 does not support internal import syntax such as internal import Module. This feature was introduced by SE-0409 "Access-level modifiers on import declarations", which was implemented in Swift 6.0. In Swift 5.0, plain import Module behaves as if public, but access level modifiers like internal on imports were not available. The proposal explicitly states it preserves the Swift 5 behavior where the only official import is public-like, and implementation began much later (around 2023), available experimentally in Swift 5.9+ via -enable-experimental-feature AccessLevelOnImport. Swift 5.0 release notes (2019) mention no such import syntax changes.
Citations:
- 1: https://github.com/apple/swift-evolution/blob/main/proposals/0409-access-level-on-imports.md
- 2: https://github.com/swiftlang/swift-evolution/blob/main/proposals/0409-access-level-on-imports.md
- 3: https://swift.org/blog/swift-5-released
- 4: https://developer.apple.com/documentation/xcode-release-notes/swift-5-release-notes-for-xcode-10_2
- 5: https://swift.p2hp.com/swift-evolution
- 6: https://polpiella.dev/swift-6-import-access-level
- 7: https://hackingwithswift.com/swift/6.0/access-level-import
- 8: Sema: Lift flag requirement for access levels on imports now that SE-0409 has been accepted swiftlang/swift#68967
🏁 Script executed:
# Find and read the AppDelegate.swift file
find . -name "AppDelegate.swift" -type f 2>/dev/null | head -5Repository: codebox-calpoly/PolyBuys
Length of output: 109
🏁 Script executed:
# Check for Swift version configuration in project files
fd -t f "\.pbxproj$" | head -5Repository: codebox-calpoly/PolyBuys
Length of output: 115
🏁 Script executed:
# Read the first few lines of AppDelegate.swift to verify line 1
head -10 ./frontend/ios/PolyBuys/AppDelegate.swiftRepository: codebox-calpoly/PolyBuys
Length of output: 312
🏁 Script executed:
# Check Swift version in pbxproj
grep -i "SWIFT_VERSION" frontend/ios/PolyBuys.xcodeproj/project.pbxproj | head -20Repository: codebox-calpoly/PolyBuys
Length of output: 117
Remove internal keyword from import statement for Swift 5.0 compatibility.
Line 1 uses internal import Expo, which is a Swift 6 feature (SE-0409). The project is configured for Swift 5.0 and does not support access-level modifiers on imports, causing a compilation error.
Change to:
-internal import Expo
+import Expo📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| internal import Expo | |
| import Expo |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@frontend/ios/PolyBuys/AppDelegate.swift` at line 1, Remove the invalid
access-level modifier on the import by changing the import statement in
AppDelegate.swift (the line with "internal import Expo") to a plain import;
locate the import in the AppDelegate.swift top-level imports and delete the
"internal" token so it uses "import Expo" for Swift 5.0 compatibility.
| <key>aps-environment</key> | ||
| <string>development</string> |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify entitlements/build-config wiring for APS env.
rg -n 'CODE_SIGN_ENTITLEMENTS|APS_ENVIRONMENT|PolyBuys.entitlements' frontend/ios/PolyBuys.xcodeproj/project.pbxproj
rg -n 'aps-environment' frontend/ios/PolyBuys/PolyBuys.entitlementsRepository: codebox-calpoly/PolyBuys
Length of output: 283
🏁 Script executed:
#!/bin/bash
# Get context around the CODE_SIGN_ENTITLEMENTS assignments
echo "=== Context around CODE_SIGN_ENTITLEMENTS assignments ==="
sed -n '375,390p' frontend/ios/PolyBuys.xcodeproj/project.pbxproj | head -20
echo ""
sed -n '410,425p' frontend/ios/PolyBuys.xcodeproj/project.pbxproj | head -20
echo ""
echo "=== Checking for build configuration names ==="
rg -n 'buildConfigurationName|Release|Debug' frontend/ios/PolyBuys.xcodeproj/project.pbxproj | head -30
echo ""
echo "=== Full entitlements file ==="
cat frontend/ios/PolyBuys/PolyBuys.entitlements
echo ""
echo "=== Search for any aps-environment or APS_ENVIRONMENT references ==="
rg -i 'aps.environment|APS_ENVIRONMENT' frontend/ios/PolyBuys.xcodeproj/ --type plist --type xmlRepository: codebox-calpoly/PolyBuys
Length of output: 6377
APNs environment must differ between Debug and Release configurations.
Both Debug and Release build configurations use the same PolyBuys.entitlements file with aps-environment hardcoded to development (lines 5-6). This breaks push notifications in Release and TestFlight builds—APNs tokens generated with a development environment won't validate against the production push certificate.
Solution: Either create separate entitlements files per configuration or add APS_ENVIRONMENT build variables and use $(APS_ENVIRONMENT) in the entitlements file. If using build variables, ensure they are defined in both Debug and Release build settings:
- Debug:
APS_ENVIRONMENT = development - Release:
APS_ENVIRONMENT = production
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@frontend/ios/PolyBuys/PolyBuys.entitlements` around lines 5 - 6, The
entitlements file currently hardcodes the APNs environment via the
aps-environment key in PolyBuys.entitlements; update it to use a build variable
instead and add the corresponding build settings: replace the literal string
value for aps-environment with the variable reference $(APS_ENVIRONMENT) in
PolyBuys.entitlements, then define APS_ENVIRONMENT=development for the Debug
configuration and APS_ENVIRONMENT=production for the Release configuration (or
alternatively create separate entitlements files per configuration and point
each build configuration to the appropriate file).
99c617e to
023061a
Compare
Closes #61
Linear: POLY-61 (e.g., POLY-123)
Summary
Match UI of MyListing Page with Home Page + Refactored layout on Home Page (Suggestion)
How to Test
Steps to verify locally:
npm run lintnpm run typechecknpm testnpm run dev:backend(in terminal A)npm run dev(in terminal B)Checklist
npm run lint)devScreenshots / Demos
Summary by CodeRabbit
Release Notes
New Features
Style
Chores