Mobile #133
Merged
tahaminachy43 merged 102 commits intoMobile-Stylingfrom May 2, 2026
Merged
Conversation
readme update
…gary/Networking-Icebreakers into frontend/home-page
New GET /api/auth/linkedin/link endpoint (protected, guest-only) that initiates LinkedIn OAuth with the guest user's identity encoded in the state JWT. The existing linkedinCallback detects the linking context and atomically upgrades the guest user to authProvider 'linkedin', populating linkedinId, email, profilePhoto, and name from LinkedIn. Includes validation for non-guest users (403), already-linked accounts (409), and LinkedIn accounts already tied to another user.
Extends the linkedin/link endpoint to accept both guest and local users. Guest users still get fully upgraded to authProvider 'linkedin'. Local users keep authProvider 'local' (preserving password login) and gain linkedinId and profilePhoto from LinkedIn. Only fills in email and profilePhoto when the user doesn't already have them set.
Added a new LeaderboardEntry interface to the EventSpotlight component and updated its props to accept leaderboard entries. Modified the EventPage to fetch and manage leaderboard data, including real-time updates via Pusher. Improved the display logic in EventSpotlight to show either fetched leaderboard entries or a fallback based on connections.
Implement GET /api/events/:eventId/leaderboard and PUT /api/events/:eventId/leaderboard/score endpoints for the web organizer dashboard. Leaderboard shows participant name, profile photo, connections count (computed from ParticipantConnection records), lines completed, and completion status. Scores update via Pusher leaderboard-updated event for live refresh. - Add linesCompleted and completed fields to Participant model - Create leaderboard controller with getLeaderboard and updateScore - Trigger leaderboard-updated Pusher event on score changes and connection create/delete - Update API reference, database schema, and real-time events documentation
…tps://github.com/techstartucalgary/Networking-Icebreakers into STR-112-Generate-Individual-Bingo-Game-questions
…working-Icebreakers into frontend/home-page
…gary/Networking-Icebreakers into frontend/home-page
- Extract emitLeaderboardUpdate helper that recomputes a participant's
connectionsCount and emits a full Pusher payload, replacing duplicated
inline blocks in updateScore and createParticipantConnection.
- Fix createParticipantConnectionByEmails and deleteParticipantConnection,
which previously emitted empty {} payloads that the web client silently
dropped, causing the leaderboard to miss link/unlink events.
- Mirror backend sort tiebreakers in the web Leaderboard component
(completed, then linesCompleted, then connectionsCount).
- Wire mobile NameBingo handleAssign to PUT /leaderboard/score after each
square assignment so linesCompleted and the blackout completed flag
propagate to the live leaderboard.
Fix leaderboard live updates across connection and bingo flows
(Update) Better Social Links
bringing backend up to date
…ame-join-code-to-4-digits Str 113 reduce bingo game join code to 4 digits
- Add eas.json with development, preview, and production build profiles - Add iOS bundleIdentifier and ITSAppUsesNonExemptEncryption to app.json - Add EAS projectId to app.json extra config - Add referenced app icon/splash assets
Without the EXPO_PUBLIC_ prefix, Expo's bundler strips these vars from production builds, leaving them undefined and breaking Pusher connections in EAS/TestFlight builds.
- Change app display name from 'shatter-mobile' to 'Shatter' - Disable expo-camera microphone/audio permissions; only QR scanning is used, so requesting mic access risks App Store rejection
Camera is only used for QR scanning; audio recording is not needed.
Backend: encode 'platform' (mobile|web) into the signed state JWT in linkedinAuth and linkedinLink. In linkedinCallback, verify state first and resolve the redirect target from the platform claim — mobile gets shattermobile://auth, web keeps the existing FRONTEND_URL flow. All success/error redirects in the callback use the resolved target so the mobile app receives the auth code (or error) via deep link. Mobile: switch LinkedIn login from openBrowserAsync to openAuthSessionAsync so the in-app browser closes on the deep-link return and the redirect URL is captured in JS. Extract a shared loginWithLinkedIn helper that handles the full flow (open browser, parse code, exchange, fetch user) and call it from both LoginForm and SignupForm with proper loading/error state.
EAS/TestFlight setup and LinkedIn mobile deep-link
React Native's built-in URL constructor does not robustly handle custom schemes like shattermobile://, causing the deep-link callback URL to fail to parse and login to silently fail. Switch to Linking.parse from expo-linking, which is purpose-built for custom-scheme URLs and is already a project dependency.
Parse LinkedIn deep-link with expo-linking
pulling everything from main to mobile
- Stops background image from zooming when keyboard opens - Make more background image visible - reformat the subtitle so that it looks better
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.
No description provided.