Minor refactor

This commit is contained in:
Neeraj Gupta
2025-06-30 16:21:31 +05:30
parent ac8efa9d7d
commit 9903201fa8
6 changed files with 33 additions and 32 deletions

View File

@@ -1,3 +1,4 @@
import "dart:async";
import 'dart:convert';
import "dart:math";
@@ -50,8 +51,9 @@ class AlbumHomeWidgetService {
return selectedAlbums?.map((id) => int.tryParse(id) ?? 0).toList();
}
Future<void> setSelectedAlbums(List<String> selectedAlbums) async {
Future<void> updateSelectedAlbums(List<String> selectedAlbums) async {
await _prefs.setStringList(SELECTED_ALBUMS_KEY, selectedAlbums);
unawaited(_refreshOnSelection());
}
String? getAlbumsLastHash() {
@@ -74,7 +76,7 @@ class AlbumHomeWidgetService {
if (forceFetchNewAlbums) {
_logger.info("Initializing albums widget: updating albums cache");
await _updateAlbumsWidgetCache();
await updateAlbumsChanged(false);
await setSelectionChange(false);
} else {
_logger.info("Initializing albums widget: syncing existing albums");
await _refreshAlbumsWidget();
@@ -84,7 +86,6 @@ class AlbumHomeWidgetService {
Future<void> clearWidget() async {
if (getAlbumsStatus() == WidgetStatus.syncedEmpty) {
_logger.info("Widget already empty, nothing to clear");
return;
}
@@ -93,11 +94,11 @@ class AlbumHomeWidgetService {
await _refreshWidget(message: "AlbumsHomeWidget cleared & updated");
}
bool? getAlbumsChanged() {
bool? hasSelectionChanged() {
return _prefs.getBool(ALBUMS_CHANGED_KEY);
}
Future<void> updateAlbumsChanged(bool value) async {
Future<void> setSelectionChange(bool value) async {
_logger.info("Updating albums changed flag to $value");
await _prefs.setBool(ALBUMS_CHANGED_KEY, value);
}
@@ -132,18 +133,16 @@ class AlbumHomeWidgetService {
}
}
Future<void> albumsChanged() async {
Future<void> _refreshOnSelection() async {
final lastHash = getAlbumsLastHash();
final selectedAlbumIds = await _getEffectiveSelectedAlbumIds();
final currentHash = _calculateHash(selectedAlbumIds);
if (lastHash != null && currentHash == lastHash) {
_logger.info("No changes detected in albums");
return;
}
_logger.info("Albums changed, updating widget");
await updateAlbumsChanged(true);
await setSelectionChange(true);
await initAlbumHomeWidget();
}
@@ -152,7 +151,9 @@ class AlbumHomeWidgetService {
for (final albumId in albumIds) {
final collection = CollectionsService.instance.getCollectionByID(albumId);
if (collection != null) {
if (collection != null &&
!collection.isDeleted &&
collection.isHidden()) {
albums.add(collection);
}
}
@@ -232,7 +233,7 @@ class AlbumHomeWidgetService {
final hasCompletedFirstImport =
LocalSyncService.instance.hasCompletedFirstImport();
if (!hasCompletedFirstImport) {
_logger.warning("First import not completed");
_logger.info("First import not completed");
return true;
}
@@ -241,7 +242,7 @@ class AlbumHomeWidgetService {
final albums = getAlbumsByIds(selectedAlbumIds);
if (albums.isEmpty) {
_logger.warning("Selected albums not found");
_logger.info("Selected albums not found");
return true;
}
@@ -256,7 +257,7 @@ class AlbumHomeWidgetService {
Future<bool> _shouldUpdateWidgetCache() async {
// Check if albums changed flag is set
if (getAlbumsChanged() == true) {
if (hasSelectionChanged() == true) {
return true;
}
@@ -273,7 +274,6 @@ class AlbumHomeWidgetService {
if (currentHash == lastHash) {
final saveStatus = getAlbumsStatus();
switch (saveStatus) {
case WidgetStatus.syncedPartially:
return await countHomeWidgets() > 0;

View File

@@ -145,7 +145,7 @@ class MemoriesCacheService {
unawaited(_prefs.setBool(_shouldUpdateCacheKey, true));
}
Future<List<SmartMemory>> getMemories() async {
Future<List<SmartMemory>> getMemories({bool onlyUseCache = false}) async {
_logger.info("getMemories called");
if (!showAnyMemories) {
_logger.info('Showing memories is disabled in settings, showing none');
@@ -155,6 +155,9 @@ class MemoriesCacheService {
if (_cachedMemories != null && _cachedMemories!.isNotEmpty) {
_logger.info("Found memories in memory cache");
return _cachedMemories!;
} else if (onlyUseCache) {
_logger.info("Only using cache, no memories found");
return [];
}
try {
if (!enableSmartMemories) {
@@ -434,7 +437,7 @@ class MemoriesCacheService {
);
return [];
}
final allMemories = await getMemories();
final allMemories = await getMemories(onlyUseCache: true);
if (onThisDay && pastYears && smart) {
return allMemories;
}

View File

@@ -163,14 +163,12 @@ class MemoryHomeWidgetService {
final hasCompletedFirstImport =
LocalSyncService.instance.hasCompletedFirstImport();
if (!hasCompletedFirstImport) {
_logger.warning("First import not completed");
return true;
}
// Check if memories are enabled
final areMemoriesShown = memoriesCacheService.showAnyMemories;
if (!areMemoriesShown) {
_logger.warning("Memories not enabled");
return true;
}
@@ -262,13 +260,14 @@ class MemoryHomeWidgetService {
_logger.info("Home Widget updated: ${message ?? "standard update"}");
}
Future<void> _updateMemoriesWidgetCache() async {
// _updateMemoriesWidgetCache will return false if no memories were cached
Future<bool> _updateMemoriesWidgetCache() async {
// TODO: Can update the method to fetch directly max limit random memories
final memoriesWithFiles = await _getMemoriesWithFiles();
if (memoriesWithFiles.isEmpty) {
_logger.warning("No memories found, clearing widget");
await clearWidget();
return;
return false;
}
final bool isWidgetPresent = await countHomeWidgets() > 0;
@@ -311,7 +310,7 @@ class MemoryHomeWidgetService {
// Check for blockers again before continuing
if (await _hasAnyBlockers()) {
await clearWidget();
return;
return true;
}
// Show update toast after first item is rendered
@@ -335,7 +334,7 @@ class MemoryHomeWidgetService {
}
if (renderedCount == 0) {
return;
return true;
}
if (isWidgetPresent) {
@@ -345,5 +344,6 @@ class MemoryHomeWidgetService {
await _refreshWidget(
message: "Switched to next memory set, total: $renderedCount",
);
return true;
}
}

View File

@@ -212,7 +212,6 @@ class PeopleHomeWidgetService {
final hasCompletedFirstImport =
LocalSyncService.instance.hasCompletedFirstImport();
if (!hasCompletedFirstImport) {
_logger.warning("First import not completed");
return true;
}
@@ -278,11 +277,11 @@ class PeopleHomeWidgetService {
return peopleIds ?? [];
}
Future<Map<String, (String, Iterable<EnteFile>)>> _getPeople() async {
final peopleIds = await _getEffectiveSelectedPeopleIds();
Future<Map<String, (String, Iterable<EnteFile>)>> _getPeople(
List<String> personIds,
) async {
final Map<String, (String, Iterable<EnteFile>)> peopleFiles = {};
final persons = await PersonService.instance.getCertainPersons(peopleIds);
final persons = await PersonService.instance.getCertainPersons(personIds);
for (final person in persons) {
final clusterFiles = await SearchService.instance
.getClusterFilesForPersonID(person.remoteID);
@@ -321,7 +320,7 @@ class PeopleHomeWidgetService {
Future<void> _updatePeopleWidgetCache() async {
final peopleIds = await _getEffectiveSelectedPeopleIds();
// TODO: Add logic to directly get random people files from database
final peopleWithFiles = await _getPeople();
final peopleWithFiles = await _getPeople(peopleIds);
if (peopleWithFiles.isEmpty) {
_logger.warning("No files found for any people, clearing widget");

View File

@@ -101,10 +101,9 @@ class _AlbumsWidgetSettingsState extends State<AlbumsWidgetSettings> {
.map((e) => e.id.toString())
.toList();
await AlbumHomeWidgetService.instance
.setSelectedAlbums(albums);
.updateSelectedAlbums(albums);
Navigator.pop(context);
await AlbumHomeWidgetService.instance
.albumsChanged();
}
: null,
isDisabled: _selectedAlbums.albums.isEmpty,

View File

@@ -128,7 +128,7 @@ class _HomeWidgetState extends State<HomeWidget> {
super.initState();
if (LocalSyncService.instance.hasCompletedFirstImport()) {
syncWidget();
syncWidget();
}
_tabChangedEventSubscription =
Bus.instance.on<TabChangedEvent>().listen((event) {