refactor: rename clip -> smart search (#6713)

This commit is contained in:
Mert 2024-01-29 09:51:22 -05:00 committed by GitHub
parent e5a70329c9
commit ae7f174948
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 162 additions and 119 deletions

View file

@ -5,14 +5,14 @@ class SearchResultPageState {
final bool isLoading;
final bool isSuccess;
final bool isError;
final bool isClip;
final bool isSmart;
final List<Asset> searchResult;
SearchResultPageState({
required this.isLoading,
required this.isSuccess,
required this.isError,
required this.isClip,
required this.isSmart,
required this.searchResult,
});
@ -20,21 +20,21 @@ class SearchResultPageState {
bool? isLoading,
bool? isSuccess,
bool? isError,
bool? isClip,
bool? isSmart,
List<Asset>? searchResult,
}) {
return SearchResultPageState(
isLoading: isLoading ?? this.isLoading,
isSuccess: isSuccess ?? this.isSuccess,
isError: isError ?? this.isError,
isClip: isClip ?? this.isClip,
isSmart: isSmart ?? this.isSmart,
searchResult: searchResult ?? this.searchResult,
);
}
@override
String toString() {
return 'SearchresultPageState(isLoading: $isLoading, isSuccess: $isSuccess, isError: $isError, isClip: $isClip, searchResult: $searchResult)';
return 'SearchresultPageState(isLoading: $isLoading, isSuccess: $isSuccess, isError: $isError, isSmart: $isSmart, searchResult: $searchResult)';
}
@override
@ -46,7 +46,7 @@ class SearchResultPageState {
other.isLoading == isLoading &&
other.isSuccess == isSuccess &&
other.isError == isError &&
other.isClip == isClip &&
other.isSmart == isSmart &&
listEquals(other.searchResult, searchResult);
}
@ -55,7 +55,7 @@ class SearchResultPageState {
return isLoading.hashCode ^
isSuccess.hashCode ^
isError.hashCode ^
isClip.hashCode ^
isSmart.hashCode ^
searchResult.hashCode;
}
}

View file

@ -14,13 +14,13 @@ class SearchResultPageNotifier extends StateNotifier<SearchResultPageState> {
isError: false,
isLoading: true,
isSuccess: false,
isClip: false,
isSmart: false,
),
);
final SearchService _searchService;
Future<void> search(String searchTerm, {bool clipEnable = true}) async {
Future<void> search(String searchTerm, {bool smartSearch = true}) async {
state = state.copyWith(
searchResult: [],
isError: false,
@ -28,10 +28,8 @@ class SearchResultPageNotifier extends StateNotifier<SearchResultPageState> {
isSuccess: false,
);
List<Asset>? assets = await _searchService.searchAsset(
searchTerm,
clipEnable: clipEnable,
);
List<Asset>? assets =
await _searchService.searchAsset(searchTerm, smartSearch: smartSearch);
if (assets != null) {
state = state.copyWith(
@ -39,7 +37,7 @@ class SearchResultPageNotifier extends StateNotifier<SearchResultPageState> {
isError: false,
isLoading: false,
isSuccess: true,
isClip: clipEnable,
isSmart: smartSearch,
);
} else {
state = state.copyWith(
@ -47,7 +45,7 @@ class SearchResultPageNotifier extends StateNotifier<SearchResultPageState> {
isError: true,
isLoading: false,
isSuccess: false,
isClip: clipEnable,
isSmart: smartSearch,
);
}
}
@ -63,7 +61,7 @@ final searchRenderListProvider = Provider((ref) {
final result = ref.watch(searchResultPageProvider);
return ref.watch(
renderListProviderWithGrouping(
(result.searchResult, result.isClip ? GroupAssetsBy.none : null),
(result.searchResult, result.isSmart ? GroupAssetsBy.none : null),
),
);
});

View file

@ -31,13 +31,13 @@ class SearchService {
Future<List<Asset>?> searchAsset(
String searchTerm, {
bool clipEnable = true,
bool smartSearch = true,
}) async {
// TODO search in local DB: 1. when offline, 2. to find local assets
try {
final SearchResponseDto? results = await _apiService.searchApi.search(
query: searchTerm,
clip: clipEnable,
smart: smartSearch,
);
if (results == null) {
return null;

View file

@ -11,17 +11,17 @@ import 'package:immich_mobile/shared/ui/asset_grid/multiselect_grid.dart';
import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart';
class SearchType {
SearchType({required this.isClip, required this.searchTerm});
SearchType({required this.isSmart, required this.searchTerm});
final bool isClip;
final bool isSmart;
final String searchTerm;
}
SearchType _getSearchType(String searchTerm) {
if (searchTerm.startsWith('m:')) {
return SearchType(isClip: false, searchTerm: searchTerm.substring(2));
return SearchType(isSmart: false, searchTerm: searchTerm.substring(2));
} else {
return SearchType(isClip: true, searchTerm: searchTerm);
return SearchType(isSmart: true, searchTerm: searchTerm);
}
}
@ -52,7 +52,7 @@ class SearchResultPage extends HookConsumerWidget {
Duration.zero,
() => ref
.read(searchResultPageProvider.notifier)
.search(searchType.searchTerm, clipEnable: searchType.isClip),
.search(searchType.searchTerm, smartSearch: searchType.isSmart),
);
return () => searchFocusNode?.dispose();
},
@ -67,7 +67,7 @@ class SearchResultPage extends HookConsumerWidget {
var searchType = _getSearchType(newSearchTerm);
return ref
.watch(searchResultPageProvider.notifier)
.search(searchType.searchTerm, clipEnable: searchType.isClip);
.search(searchType.searchTerm, smartSearch: searchType.isSmart);
}
buildTextField() {