Conversation
There was a problem hiding this comment.
Pull request overview
This pull request implements deep linking functionality for the StudyU mobile application on both Android and iOS platforms, enabling users to navigate directly to specific content via URLs. The implementation includes platform-specific manifest configurations, web association files for app link verification, and modifications to route handling behavior.
Key changes:
- Added Android App Links and iOS Universal Links support with corresponding verification files
- Configured custom URL scheme
studyu-appfor both platforms - Modified unknown route handling to display a loading screen instead of an error message
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
app/android/app/src/main/AndroidManifest.xml |
Added deep linking intent filters with meta-data for http, https, and custom scheme handling |
app/ios/Runner/Info.plist |
Enabled Flutter deep linking and configured custom URL scheme studyu-app |
app/ios/Runner/Runner.entitlements |
Added associated domains for universal links support |
app/web/.well-known/assetlinks.json |
Created Android app link verification file with package name and certificate fingerprints |
app/web/.well-known/apple-app-site-association |
Created iOS universal links verification file with app ID and path configuration |
app/lib/routes.dart |
Changed unknown route handler from error display to loading screen |
app/lib/l10n/app_localizations_de.dart |
Removed extraneous blank line for formatting consistency |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Visit the preview URL for this PR (updated for commit f4e25b9):
(expires Tue, 24 Mar 2026 10:51:35 GMT) 🔥 via Firebase Hosting GitHub Action 🌎 Sign: 2149dad49ed83535217e50d5c18c0c8c90da629b |
…route handling to a loading screen.
f0cd23a to
c3dd899
Compare
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
- Removed the old routing system and replaced it with GoRouter for improved navigation management. - Created a new app_router.dart file to define route paths and configure the GoRouter instance. - Updated all screen navigation calls to use context.push() and context.go() methods from GoRouter. - Deleted the old routes.dart file as it is no longer needed. - Adjusted the main app structure to initialize the GoRouter in the MyApp widget. - Updated localization files to reflect changes in study schedule descriptions.
… multiple screens
…a new service, routing, and UI.
- Use context.go instead of context.push for navigation consistency - Replace hardcoded 3-second delay with SnackBar for better UX - Remove unused _deepLinkError state variable and error banner UI - Errors are now shown via dismissible SnackBar that persists after navigation
Add redirect logic to extract path from studyu-app:// deep links. When a deep link like studyu-app://invite/12345678 is received, the redirect extracts the path (/invite/12345678) for GoRouter.
Fixes GoException 'no routes for location: /' by adding a root route that redirects to /loading.
- Update DeepLinkService.fetchStudyByInviteCode to use RPC function - Refactor study_selection.dart to use DeepLinkService instead of inline Supabase calls - This removes code duplication and centralizes invite logic
…fetchByInviteCode` methods to the `Study` model.
- Add notifyListeners() to clearPendingDeepLink for state consistency - Pass activeStudyId to processDeepLink in TermsScreen - Handle alreadyEnrolled case to redirect to dashboard - Add try-catch for fetchByInviteCode in InviteCodeDialog - Extract duplicate _getDeepLinkErrorMessage to shared helper
…vite codes, supported by new environment variables and localization.
…e navigation throughout the app
feat: app go_router migration
…plus_platform_interface
feat: study join deeplink
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 23178981 | Triggered | JSON Web Token | f4e25b9 | flutter_common/lib/envs/.env.dev | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secret safely. Learn here the best practices.
- Revoke and rotate this secret.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
TODO
Later todo other branch
This pull request adds deep linking support for both Android and iOS platforms, enabling the app to handle incoming links and route users to specific content. The changes include updates to the app manifests, entitlement files, and the addition of asset association files for web verification. Additionally, the handling of unknown routes in the app has been streamlined.
Deep linking support:
AndroidManifest.xmlby adding relevant intent filters and meta-data for HTTP, HTTPS, and custom schemes.Info.plistand added URL scheme configuration forstudyu-app.Runner.entitlementsto support associated domains for universal links.Web association files:
assetlinks.jsonfor Android andapple-app-site-associationfor iOS in the.well-knowndirectory to support app link verification. [1] [2]Routing improvements:
unknownRoutehandler inroutes.dartto show a loading screen instead of a generic error message, improving the user experience when an unknown route is encountered.