Skip to content

Commit

Permalink
fix: refresh doesnt detect new folders
Browse files Browse the repository at this point in the history
fixes #119
  • Loading branch information
MSOB7YY committed Feb 1, 2024
1 parent 531d975 commit f148dfb
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 25 deletions.
42 changes: 18 additions & 24 deletions lib/controller/indexer_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -944,7 +944,7 @@ class Indexer {

if (forceReIndex) {
_clearLists();
if (!useMediaStore) audioFiles = await getAudioFiles(forceReCheckDirs: true);
if (!useMediaStore) audioFiles = await getAudioFiles();
}

printy("Audio Files New: ${audioFiles.length}");
Expand Down Expand Up @@ -1203,9 +1203,9 @@ class Indexer {
///
/// ex: if (.nomedia) was found in [/storage/0/Music/],
/// then subdirectories [/storage/0/Music/folder1/], [/storage/0/Music/folder2/] & [/storage/0/Music/folder2/subfolder/] will be excluded too.
Future<Set<String>> getAudioFiles({bool strictNoMedia = true, bool forceReCheckDirs = false}) async {
Future<Set<String>> getAudioFiles({bool strictNoMedia = true}) async {
tracksExcludedByNoMedia.value = 0;
final allAvailableDirectories = await getAvailableDirectories(forceReCheck: forceReCheckDirs, strictNoMedia: strictNoMedia);
final allAvailableDirectories = await getAvailableDirectories(forceReCheck: true, strictNoMedia: strictNoMedia);

final parameters = {
'allAvailableDirectories': allAvailableDirectories,
Expand All @@ -1227,28 +1227,22 @@ class Indexer {
return allPaths;
}

bool? _latestRespectNoMedia;
Completer<Map<Directory, bool>>? _availableDirs;
Future<Map<Directory, bool>> getAvailableDirectories({bool strictNoMedia = true, bool forceReCheck = false}) async {
if (_availableDirs != null && !forceReCheck && _latestRespectNoMedia == settings.respectNoMedia.value) {
return await _availableDirs!.future;
} else {
_availableDirs = null; // for when forceReCheck enabled.
_availableDirs = Completer<Map<Directory, bool>>();

_latestRespectNoMedia = settings.respectNoMedia.value;

final parameters = {
'directoriesToScan': settings.directoriesToScan.toList(),
'respectNoMedia': settings.respectNoMedia.value,
'strictNoMedia': strictNoMedia, // TODO: expose [strictNoMedia] in settings?
};
final allAvailableDirectories = await _getAvailableDirectoriesIsolate.thready(parameters);

_availableDirs?.complete(allAvailableDirectories);

return allAvailableDirectories;
Completer<Map<Directory, bool>>? _lastAvailableDirectories;
Future<Map<Directory, bool>> getAvailableDirectories({bool forceReCheck = true, bool strictNoMedia = true}) async {
if (forceReCheck == false && _lastAvailableDirectories != null) {
return await _lastAvailableDirectories!.future;
}

_lastAvailableDirectories = null; // for when forceReCheck enabled.
_lastAvailableDirectories = Completer<Map<Directory, bool>>();
final parameters = {
'directoriesToScan': settings.directoriesToScan.toList(),
'respectNoMedia': settings.respectNoMedia.value,
'strictNoMedia': strictNoMedia, // TODO: expose [strictNoMedia] in settings?
};
final dirs = await _getAvailableDirectoriesIsolate.thready(parameters);
_lastAvailableDirectories?.completeIfWasnt(dirs);
return dirs;
}

static Map<Directory, bool> _getAvailableDirectoriesIsolate(Map parameters) {
Expand Down
3 changes: 2 additions & 1 deletion lib/ui/widgets/settings/indexer_settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -810,8 +810,9 @@ class IndexerSettings extends SettingSubpageProvider {
}

Future<void> showRefreshPromptDialog(bool didModifyFolder) async {
// [didModifyFolder] was mainly used to force recheck libraries, now it will always recheck.
RefreshLibraryIconController.repeat();
final currentFiles = await Indexer.inst.getAudioFiles(forceReCheckDirs: didModifyFolder);
final currentFiles = await Indexer.inst.getAudioFiles();
final newPathsLength = Indexer.inst.getNewFoundPaths(currentFiles).length;
final deletedPathLength = Indexer.inst.getDeletedPaths(currentFiles).length;
if (newPathsLength == 0 && deletedPathLength == 0) {
Expand Down

0 comments on commit f148dfb

Please sign in to comment.