misc. changes

This commit is contained in:
ashilkn 2022-08-10 10:18:40 +05:30
parent a0a4e3d1f3
commit d773ecc831
4 changed files with 29 additions and 22 deletions

View file

@ -22,6 +22,7 @@ class SearchService {
final _config = Configuration.instance;
final _logger = Logger((UserService).toString());
final _collectionService = CollectionsService.instance;
static const _kMaximumResultsLimit = 20;
SearchService._privateConstructor();
static final SearchService instance = SearchService._privateConstructor();
@ -31,7 +32,7 @@ class SearchService {
Future.delayed(const Duration(seconds: 5), () async {
// In case home screen loads before 5 seconds and user starts search, future will not be null
_future == null
? FilesDB.instance.getAllFilesFromDB().then((value) {
? getAllFiles().then((value) {
_cachedFiles = value;
})
: null;
@ -60,10 +61,11 @@ class SearchService {
}
Future<List<File>> getFilesOnFilenameSearch(String query) async {
List<File> matchedFiles = [];
List<File> files = await getAllFiles();
//<20 to limit number of files in result
for (int i = 0; (i < files.length) && (matchedFiles.length < 20); i++) {
final List<File> matchedFiles = [];
final List<File> files = await getAllFiles();
for (int i = 0;
(i < files.length) && (matchedFiles.length < _kMaximumResultsLimit);
i++) {
File file = files[i];
if (file.title.contains(RegExp(query, caseSensitive: false))) {
matchedFiles.add(file);
@ -80,8 +82,8 @@ class SearchService {
String query,
) async {
try {
List<File> allFiles = await SearchService.instance.getAllFiles();
List<LocationSearchResult> locationsAndMatchedFiles = [];
final List<File> allFiles = await SearchService.instance.getAllFiles();
final List<LocationSearchResult> locationsAndMatchedFiles = [];
final response = await _dio.get(
_config.getHttpEndpoint() + "/search/location",
@ -135,9 +137,9 @@ class SearchService {
// identify collections which have at least one file as we don't display
// empty collection
List<File> latestCollectionFiles =
final List<File> latestCollectionFiles =
await _collectionService.getLatestCollectionFiles();
Map<int, File> collectionIDToLatestFileMap = {
final Map<int, File> collectionIDToLatestFileMap = {
for (File file in latestCollectionFiles) file.collectionID: file
};
@ -147,7 +149,7 @@ class SearchService {
and has at-least one file
*/
List<Collection> matchedCollection = _collectionService
final List<Collection> matchedCollection = _collectionService
.getCollectionIDtoCollections()
.values
.where(
@ -160,8 +162,10 @@ class SearchService {
c.name.contains(RegExp(query, caseSensitive: false)),
)
.toList();
List<CollectionWithThumbnail> result = [];
final limit = matchedCollection.length < 20 ? matchedCollection.length : 20;
final List<CollectionWithThumbnail> result = [];
final limit = matchedCollection.length < _kMaximumResultsLimit
? matchedCollection.length
: _kMaximumResultsLimit;
for (int i = 0; i < limit; i++) {
Collection collection = matchedCollection[i];
result.add(

View file

@ -60,7 +60,7 @@ class _StatusBarWidgetState extends State<StatusBarWidget> {
AnimatedOpacity(
opacity: _showStatus ? 0 : 1,
duration: const Duration(milliseconds: 1000),
child: const StatusBarBrandingAndSearchWidget(),
child: const TopBarWidget(),
),
AnimatedOpacity(
opacity: _showStatus ? 1 : 0,
@ -206,8 +206,8 @@ class RefreshIndicatorWidget extends StatelessWidget {
}
}
class StatusBarBrandingAndSearchWidget extends StatelessWidget {
const StatusBarBrandingAndSearchWidget({Key key}) : super(key: key);
class TopBarWidget extends StatelessWidget {
const TopBarWidget({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {

View file

@ -10,14 +10,14 @@ import 'package:photos/ui/viewer/gallery/gallery_app_bar_widget.dart';
import 'package:photos/ui/viewer/gallery/gallery_overlay_widget.dart';
class LocationCollectionPage extends StatelessWidget {
final LocationSearchResult locationAndFiles;
final LocationSearchResult locationSearchResult;
final String tagPrefix;
final GalleryType appBarType;
final GalleryType overlayType;
final _selectedFiles = SelectedFiles();
LocationCollectionPage({
this.locationAndFiles,
this.locationSearchResult,
this.tagPrefix = "location_search",
this.appBarType = GalleryType.searchResults,
this.overlayType = GalleryType.searchResults,
@ -28,7 +28,7 @@ class LocationCollectionPage extends StatelessWidget {
Widget build(BuildContext context) {
final gallery = Gallery(
asyncLoader: (creationStartTime, creationEndTime, {limit, asc}) {
final result = locationAndFiles.files
final result = locationSearchResult.files
.where(
(file) =>
file.creationTime >= creationStartTime &&
@ -36,7 +36,10 @@ class LocationCollectionPage extends StatelessWidget {
)
.toList();
return Future.value(
FileLoadResult(result, result.length < locationAndFiles.files.length),
FileLoadResult(
result,
result.length < locationSearchResult.files.length,
),
);
},
reloadEvent: Bus.instance.on<FilesUpdatedEvent>().where(
@ -59,7 +62,7 @@ class LocationCollectionPage extends StatelessWidget {
],
tagPrefix: tagPrefix,
selectedFiles: _selectedFiles,
initialFiles: [locationAndFiles.files[0]],
initialFiles: [locationSearchResult.files[0]],
footer: const SizedBox(height: 120),
);
return Scaffold(
@ -67,7 +70,7 @@ class LocationCollectionPage extends StatelessWidget {
preferredSize: const Size.fromHeight(50.0),
child: GalleryAppBarWidget(
appBarType,
locationAndFiles.location,
locationSearchResult.location,
_selectedFiles,
),
),

View file

@ -68,7 +68,7 @@ class LocationResultsWidget extends StatelessWidget {
routeToPage(
context,
LocationCollectionPage(
locationAndFiles: locationAndMatchedFiles,
locationSearchResult: locationAndMatchedFiles,
),
);
},