chore(mobile): search page minor enhancements (#13403)

* chore(mobile): search page retouched

* add placeholder photos

* remove unused page

* focus the search input when tapping on the search controller button

* detail fixed

* remove print statements

* disable scrolling of empty content
This commit is contained in:
Alex 2024-10-14 09:50:07 +07:00 committed by GitHub
parent 1193adf0f5
commit f59b813ffe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 821 additions and 847 deletions

View file

@ -16,7 +16,7 @@ import 'package:immich_mobile/pages/backup/failed_backup_status.page.dart';
import 'package:immich_mobile/pages/albums/albums.page.dart';
import 'package:immich_mobile/pages/library/local_albums.page.dart';
import 'package:immich_mobile/pages/library/people/people_collection.page.dart';
import 'package:immich_mobile/pages/library/places/places_collection.part.dart';
import 'package:immich_mobile/pages/library/places/places_collection.page.dart';
import 'package:immich_mobile/pages/library/library.page.dart';
import 'package:immich_mobile/pages/common/activities.page.dart';
import 'package:immich_mobile/pages/common/album_additional_shared_user_selection.page.dart';
@ -52,7 +52,6 @@ import 'package:immich_mobile/pages/search/map/map_location_picker.page.dart';
import 'package:immich_mobile/pages/search/person_result.page.dart';
import 'package:immich_mobile/pages/search/recently_added.page.dart';
import 'package:immich_mobile/pages/search/search.page.dart';
import 'package:immich_mobile/pages/search/search_input.page.dart';
import 'package:immich_mobile/pages/library/partner/partner.page.dart';
import 'package:immich_mobile/pages/library/partner/partner_detail.page.dart';
import 'package:immich_mobile/pages/library/shared_link/shared_link.page.dart';
@ -97,6 +96,11 @@ class AppRouter extends RootStackRouter {
),
AutoRoute(page: LoginRoute.page, guards: [_duplicateGuard]),
AutoRoute(page: ChangePasswordRoute.page),
AutoRoute(
page: SearchRoute.page,
guards: [_authGuard, _duplicateGuard],
maintainState: false,
),
CustomRoute(
page: TabControllerRoute.page,
guards: [_authGuard, _duplicateGuard],
@ -106,7 +110,7 @@ class AppRouter extends RootStackRouter {
guards: [_authGuard, _duplicateGuard],
),
AutoRoute(
page: SearchInputRoute.page,
page: SearchRoute.page,
guards: [_authGuard, _duplicateGuard],
maintainState: false,
),
@ -244,11 +248,6 @@ class AppRouter extends RootStackRouter {
page: BackupOptionsRoute.page,
guards: [_authGuard, _duplicateGuard],
),
CustomRoute(
page: SearchInputRoute.page,
guards: [_authGuard, _duplicateGuard],
transitionsBuilder: TransitionsBuilders.noTransition,
),
AutoRoute(
page: HeaderSettingsRoute.page,
guards: [_duplicateGuard],

View file

@ -1292,29 +1292,29 @@ class RecentlyAddedRoute extends PageRouteInfo<void> {
}
/// generated route for
/// [SearchInputPage]
class SearchInputRoute extends PageRouteInfo<SearchInputRouteArgs> {
SearchInputRoute({
/// [SearchPage]
class SearchRoute extends PageRouteInfo<SearchRouteArgs> {
SearchRoute({
Key? key,
SearchFilter? prefilter,
List<PageRouteInfo>? children,
}) : super(
SearchInputRoute.name,
args: SearchInputRouteArgs(
SearchRoute.name,
args: SearchRouteArgs(
key: key,
prefilter: prefilter,
),
initialChildren: children,
);
static const String name = 'SearchInputRoute';
static const String name = 'SearchRoute';
static PageInfo page = PageInfo(
name,
builder: (data) {
final args = data.argsAs<SearchInputRouteArgs>(
orElse: () => const SearchInputRouteArgs());
return SearchInputPage(
final args =
data.argsAs<SearchRouteArgs>(orElse: () => const SearchRouteArgs());
return SearchPage(
key: args.key,
prefilter: args.prefilter,
);
@ -1322,8 +1322,8 @@ class SearchInputRoute extends PageRouteInfo<SearchInputRouteArgs> {
);
}
class SearchInputRouteArgs {
const SearchInputRouteArgs({
class SearchRouteArgs {
const SearchRouteArgs({
this.key,
this.prefilter,
});
@ -1334,29 +1334,10 @@ class SearchInputRouteArgs {
@override
String toString() {
return 'SearchInputRouteArgs{key: $key, prefilter: $prefilter}';
return 'SearchRouteArgs{key: $key, prefilter: $prefilter}';
}
}
/// generated route for
/// [SearchPage]
class SearchRoute extends PageRouteInfo<void> {
const SearchRoute({List<PageRouteInfo>? children})
: super(
SearchRoute.name,
initialChildren: children,
);
static const String name = 'SearchRoute';
static PageInfo page = PageInfo(
name,
builder: (data) {
return const SearchPage();
},
);
}
/// generated route for
/// [SettingsPage]
class SettingsRoute extends PageRouteInfo<void> {

View file

@ -2,9 +2,7 @@ import 'package:auto_route/auto_route.dart';
import 'package:flutter/foundation.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/providers/memory.provider.dart';
import 'package:immich_mobile/providers/search/people.provider.dart';
import 'package:immich_mobile/providers/search/search_page_state.provider.dart';
import 'package:immich_mobile/entities/store.entity.dart';
import 'package:immich_mobile/entities/user.entity.dart';
import 'package:immich_mobile/providers/api.provider.dart';
@ -24,13 +22,6 @@ class TabNavigationObserver extends AutoRouterObserver {
TabPageRoute route,
TabPageRoute previousRoute,
) async {
// Perform tasks on re-visit to SearchRoute
if (route.name == 'SearchRoute') {
// Refresh Location State
ref.invalidate(getPreviewPlacesProvider);
ref.invalidate(getAllPeopleProvider);
}
if (route.name == 'HomeRoute') {
ref.invalidate(memoryFutureProvider);
Future(() => ref.read(assetProvider.notifier).getAllAsset());