Refactor mobile to use OpenApi generated SDK (#336)

This commit is contained in:
Alex 2022-07-13 07:23:48 -05:00 committed by GitHub
parent d69470e207
commit ae7e582ec8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
276 changed files with 14513 additions and 3003 deletions

View file

@ -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;
}
}
}

View file

@ -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)));

View file

@ -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() {

View file

@ -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