Expose repository via Riverpod provider
epic-no-access-screen-foundation-task-003 — Register NoAccessConfigRepository as a Riverpod provider so downstream components (route guard, access denial service) can depend on it through the standard provider graph. Ensure the provider is scoped correctly and disposed when no longer needed.
Acceptance Criteria
Technical Requirements
Execution Context
Tier 2 - 518 tasks
Can start after Tier 1 completes
Implementation Notes
Use `Provider
Place the provider in the feature's providers file and barrel-export it from the feature's main export file.
Testing Requirements
No dedicated test file required for the provider declaration itself. Testability is validated by overriding `noAccessConfigRepositoryProvider` in `AccessDenialService` and `NoAccessRouteGuard` unit tests using `ProviderContainer(overrides: [noAccessConfigRepositoryProvider.overrideWithValue(mockRepo)])`. Verify this override pattern works correctly as part of the dependent component test tasks.
Supabase remote config may be unavailable at app startup (network error, cold start), causing the repository to return no blocked-role list. If the fallback is empty, blocked users could access the app.
Mitigation & Contingency
Mitigation: Define a local constants fallback list of blocked roles compiled into the app binary. Remote config enriches or overrides this list when available.
Contingency: If remote config repeatedly fails in production, pin the blocked-role list to local constants only and disable remote override until the Supabase config endpoint is stabilised.
url_launcher package behaviour differs between iOS and Android (e.g. canLaunchUrl returning false on some Android configurations), leading to silent failures when the admin portal link is tapped.
Mitigation & Contingency
Mitigation: Run canLaunchUrl check before every launch attempt and surface a descriptive inline error message (e.g. 'Could not open link — visit admin.example.org manually') when the check fails.
Contingency: If canLaunchUrl is consistently unreliable on a target platform, replace the tap-to-open pattern with a copyable text field showing the URL as a fallback.