mirror of
https://github.com/immich-app/immich
synced 2025-11-07 17:27:20 +00:00
Refactor mobile to use OpenApi generated SDK (#336)
This commit is contained in:
parent
d69470e207
commit
ae7e582ec8
276 changed files with 14513 additions and 3003 deletions
|
|
@ -1,21 +1,25 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:auto_route/auto_route.dart';
|
||||
import 'package:immich_mobile/shared/services/network.service.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:immich_mobile/shared/services/api.service.dart';
|
||||
|
||||
class AuthGuard extends AutoRouteGuard {
|
||||
final NetworkService _networkService = NetworkService();
|
||||
|
||||
final ApiService _apiService;
|
||||
AuthGuard(this._apiService);
|
||||
@override
|
||||
void onNavigation(NavigationResolver resolver, StackRouter router) async {
|
||||
try {
|
||||
var res = await _networkService.postRequest(url: 'auth/validateToken');
|
||||
var jsonReponse = jsonDecode(res.toString());
|
||||
if (jsonReponse['authStatus']) {
|
||||
var res = await _apiService.authenticationApi.validateAccessToken();
|
||||
|
||||
if (res != null && res.authStatus) {
|
||||
resolver.next(true);
|
||||
} else {
|
||||
router.replaceAll([const LoginRoute()]);
|
||||
}
|
||||
} catch (e) {
|
||||
router.removeUntil((route) => route.name == "LoginRoute");
|
||||
debugPrint("Error [onNavigation] ${e.toString()}");
|
||||
router.replaceAll([const LoginRoute()]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import 'package:auto_route/auto_route.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/modules/backup/views/album_preview_page.dart';
|
||||
import 'package:immich_mobile/modules/backup/views/backup_album_selection_page.dart';
|
||||
import 'package:immich_mobile/modules/backup/views/failed_backup_status_page.dart';
|
||||
|
|
@ -9,7 +10,6 @@ import 'package:immich_mobile/modules/home/views/home_page.dart';
|
|||
import 'package:immich_mobile/modules/search/views/search_page.dart';
|
||||
import 'package:immich_mobile/modules/search/views/search_result_page.dart';
|
||||
import 'package:immich_mobile/modules/sharing/models/asset_selection_page_result.model.dart';
|
||||
import 'package:immich_mobile/modules/sharing/models/shared_album.model.dart';
|
||||
import 'package:immich_mobile/modules/sharing/views/album_viewer_page.dart';
|
||||
import 'package:immich_mobile/modules/sharing/views/asset_selection_page.dart';
|
||||
import 'package:immich_mobile/modules/sharing/views/create_shared_album_page.dart';
|
||||
|
|
@ -17,12 +17,13 @@ import 'package:immich_mobile/modules/sharing/views/select_additional_user_for_s
|
|||
import 'package:immich_mobile/modules/sharing/views/select_user_for_sharing_page.dart';
|
||||
import 'package:immich_mobile/modules/sharing/views/sharing_page.dart';
|
||||
import 'package:immich_mobile/routing/auth_guard.dart';
|
||||
import 'package:immich_mobile/shared/models/immich_asset.model.dart';
|
||||
import 'package:immich_mobile/modules/backup/views/backup_controller_page.dart';
|
||||
import 'package:immich_mobile/modules/asset_viewer/views/image_viewer_page.dart';
|
||||
import 'package:immich_mobile/shared/services/api.service.dart';
|
||||
import 'package:immich_mobile/shared/views/splash_screen.dart';
|
||||
import 'package:immich_mobile/shared/views/tab_controller_page.dart';
|
||||
import 'package:immich_mobile/modules/asset_viewer/views/video_viewer_page.dart';
|
||||
import 'package:openapi/api.dart';
|
||||
import 'package:photo_manager/photo_manager.dart';
|
||||
|
||||
part 'router.gr.dart';
|
||||
|
|
@ -74,5 +75,9 @@ part 'router.gr.dart';
|
|||
],
|
||||
)
|
||||
class AppRouter extends _$AppRouter {
|
||||
AppRouter() : super(authGuard: AuthGuard());
|
||||
final ApiService _apiService;
|
||||
AppRouter(this._apiService) : super(authGuard: AuthGuard(_apiService));
|
||||
}
|
||||
|
||||
final appRouterProvider =
|
||||
Provider((ref) => AppRouter(ref.watch(apiServiceProvider)));
|
||||
|
|
|
|||
|
|
@ -234,7 +234,7 @@ class ImageViewerRoute extends PageRouteInfo<ImageViewerRouteArgs> {
|
|||
required String imageUrl,
|
||||
required String heroTag,
|
||||
required String thumbnailUrl,
|
||||
required ImmichAsset asset})
|
||||
required AssetResponseDto asset})
|
||||
: super(ImageViewerRoute.name,
|
||||
path: '/image-viewer-page',
|
||||
args: ImageViewerRouteArgs(
|
||||
|
|
@ -263,7 +263,7 @@ class ImageViewerRouteArgs {
|
|||
|
||||
final String thumbnailUrl;
|
||||
|
||||
final ImmichAsset asset;
|
||||
final AssetResponseDto asset;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
|
|
@ -275,7 +275,7 @@ class ImageViewerRouteArgs {
|
|||
/// [VideoViewerPage]
|
||||
class VideoViewerRoute extends PageRouteInfo<VideoViewerRouteArgs> {
|
||||
VideoViewerRoute(
|
||||
{Key? key, required String videoUrl, required ImmichAsset asset})
|
||||
{Key? key, required String videoUrl, required AssetResponseDto asset})
|
||||
: super(VideoViewerRoute.name,
|
||||
path: '/video-viewer-page',
|
||||
args: VideoViewerRouteArgs(
|
||||
|
|
@ -292,7 +292,7 @@ class VideoViewerRouteArgs {
|
|||
|
||||
final String videoUrl;
|
||||
|
||||
final ImmichAsset asset;
|
||||
final AssetResponseDto asset;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
|
|
@ -390,7 +390,7 @@ class AlbumViewerRouteArgs {
|
|||
class SelectAdditionalUserForSharingRoute
|
||||
extends PageRouteInfo<SelectAdditionalUserForSharingRouteArgs> {
|
||||
SelectAdditionalUserForSharingRoute(
|
||||
{Key? key, required SharedAlbum albumInfo})
|
||||
{Key? key, required AlbumResponseDto albumInfo})
|
||||
: super(SelectAdditionalUserForSharingRoute.name,
|
||||
path: '/select-additional-user-for-sharing-page',
|
||||
args: SelectAdditionalUserForSharingRouteArgs(
|
||||
|
|
@ -405,7 +405,7 @@ class SelectAdditionalUserForSharingRouteArgs {
|
|||
|
||||
final Key? key;
|
||||
|
||||
final SharedAlbum albumInfo;
|
||||
final AlbumResponseDto albumInfo;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
|
|
|
|||
|
|
@ -23,7 +23,9 @@ class TabNavigationObserver extends AutoRouterObserver {
|
|||
|
||||
@override
|
||||
Future<void> didChangeTabRoute(
|
||||
TabPageRoute route, TabPageRoute previousRoute) async {
|
||||
TabPageRoute route,
|
||||
TabPageRoute previousRoute,
|
||||
) async {
|
||||
// Perform tasks on re-visit to SearchRoute
|
||||
if (route.name == 'SearchRoute') {
|
||||
// Refresh Location State
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue