Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
34fdc77818 | ||
|
|
c374ecbffb |
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [1.1.11] - 2026-01-04
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- API client providers now use `keepAlive: true` to prevent Ref invalidation
|
||||||
|
- Fixes "DioException [unknown]: null" error on /security/users and other API pages
|
||||||
|
- AuthInterceptor's stored Ref was becoming invalid when provider auto-disposed
|
||||||
|
|
||||||
## [1.1.10] - 2026-01-04
|
## [1.1.10] - 2026-01-04
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ import 'api_client_native.dart' if (dart.library.html) 'api_client_web.dart'
|
|||||||
part 'api_client.g.dart';
|
part 'api_client.g.dart';
|
||||||
|
|
||||||
/// Provides the Dio instance for Core API.
|
/// Provides the Dio instance for Core API.
|
||||||
@riverpod
|
///
|
||||||
|
/// Uses keepAlive to prevent auto-dispose - the AuthInterceptor stores
|
||||||
|
/// a Ref that must remain valid for the lifetime of API requests.
|
||||||
|
@Riverpod(keepAlive: true)
|
||||||
Dio coreApiClient(Ref ref) {
|
Dio coreApiClient(Ref ref) {
|
||||||
final options = BaseOptions(
|
final options = BaseOptions(
|
||||||
baseUrl: AppConfig.coreApiUrl,
|
baseUrl: AppConfig.coreApiUrl,
|
||||||
@@ -33,7 +36,10 @@ Dio coreApiClient(Ref ref) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Provides the Dio instance for Tatlock API.
|
/// Provides the Dio instance for Tatlock API.
|
||||||
@riverpod
|
///
|
||||||
|
/// Uses keepAlive to prevent auto-dispose - the AuthInterceptor stores
|
||||||
|
/// a Ref that must remain valid for the lifetime of API requests.
|
||||||
|
@Riverpod(keepAlive: true)
|
||||||
Dio tatlockApiClient(Ref ref) {
|
Dio tatlockApiClient(Ref ref) {
|
||||||
final options = BaseOptions(
|
final options = BaseOptions(
|
||||||
baseUrl: AppConfig.tatlockApiUrl,
|
baseUrl: AppConfig.tatlockApiUrl,
|
||||||
|
|||||||
+1
-4
@@ -14,10 +14,7 @@ void main() async {
|
|||||||
// Use path-based URLs on web (no-op on mobile/desktop)
|
// Use path-based URLs on web (no-op on mobile/desktop)
|
||||||
configureUrlStrategy();
|
configureUrlStrategy();
|
||||||
|
|
||||||
developer.log(
|
debugPrint('🪣 ${AppVersion.name} v${AppVersion.fullVersion}');
|
||||||
'${AppVersion.name} v${AppVersion.fullVersion}',
|
|
||||||
name: 'tatlock_ui',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Initialize auth before starting the app.
|
// Initialize auth before starting the app.
|
||||||
// This handles OIDC callback and silent auth on web.
|
// This handles OIDC callback and silent auth on web.
|
||||||
|
|||||||
+1
-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
|
# 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
|
# 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.
|
# of the product and file versions while build-number is used as the build suffix.
|
||||||
version: 1.1.10+1
|
version: 1.1.11+1
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.10.4
|
sdk: ^3.10.4
|
||||||
|
|||||||
Reference in New Issue
Block a user