feat(web): switch to path-based URL strategy
Remove hash from URLs (/#/login -> /login) using usePathUrlStrategy(). Uses conditional imports to only apply on web, keeping mobile/desktop builds unaffected. Required for OIDC callback to work - Authentik redirects to /callback which Flutter now recognizes as a route. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.5
parent
0a6e9de4a8
commit
ff5df30c53
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [1.0.8] - 2026-01-04
|
||||
|
||||
### Changed
|
||||
- Switched from hash-based URLs (`/#/login`) to path-based URLs (`/login`)
|
||||
- Required for OIDC callback to work correctly
|
||||
- Uses conditional import to avoid breaking mobile/desktop builds
|
||||
|
||||
## [1.0.7] - 2026-01-04
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
/// URL strategy with conditional imports for web/non-web platforms.
|
||||
library;
|
||||
|
||||
export 'url_strategy_stub.dart'
|
||||
if (dart.library.js_interop) 'url_strategy_web.dart';
|
||||
@@ -0,0 +1,4 @@
|
||||
/// Stub for non-web platforms - does nothing.
|
||||
void configureUrlStrategy() {
|
||||
// No-op on mobile/desktop
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
/// Web-specific URL strategy configuration.
|
||||
library;
|
||||
|
||||
import 'package:flutter_web_plugins/url_strategy.dart';
|
||||
|
||||
void configureUrlStrategy() {
|
||||
// Use path-based URLs instead of hash-based (e.g., /login instead of /#/login)
|
||||
// Required for OIDC callback to work properly
|
||||
usePathUrlStrategy();
|
||||
}
|
||||
@@ -4,11 +4,15 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import 'app.dart';
|
||||
import 'core/config/url_strategy.dart';
|
||||
import 'version.g.dart';
|
||||
|
||||
void main() {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
// Use path-based URLs on web (no-op on mobile/desktop)
|
||||
configureUrlStrategy();
|
||||
|
||||
developer.log(
|
||||
'${AppVersion.name} v${AppVersion.fullVersion}',
|
||||
name: 'tatlock_ui',
|
||||
|
||||
+3
-1
@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||
# In Windows, build-name is used as the major, minor, and patch parts
|
||||
# of the product and file versions while build-number is used as the build suffix.
|
||||
version: 1.0.7+1
|
||||
version: 1.0.8+1
|
||||
|
||||
environment:
|
||||
sdk: ^3.10.4
|
||||
@@ -30,6 +30,8 @@ environment:
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
flutter_web_plugins:
|
||||
sdk: flutter
|
||||
|
||||
# State Management
|
||||
flutter_riverpod: ^3.0.0
|
||||
|
||||
Reference in New Issue
Block a user