Skip to content

Commit

Permalink
chore: accurate current items being extracted
Browse files Browse the repository at this point in the history
in indexer settings page
  • Loading branch information
MSOB7YY committed Mar 3, 2024
1 parent 1433488 commit 2fa656a
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 16 deletions.
8 changes: 2 additions & 6 deletions lib/controller/indexer_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class Indexer {

final RxBool isIndexing = false.obs;

final currentTrackPathBeingExtracted = ''.obs;
final currentTracksPathsBeingExtracted = <String>[].obs;
final RxSet<String> allAudioFiles = <String>{}.obs;
final RxInt filteredForSizeDurationTracks = 0.obs;
final RxInt duplicatedTracksLength = 0.obs;
Expand Down Expand Up @@ -543,7 +543,6 @@ class Indexer {
);

await for (final item in stream) {
currentTrackPathBeingExtracted.value = item.tags.path;
final trext = extractFunction(item);
if (trext != null) _addTrackToLists(trext, checkForDuplicates, item.tags.artwork);
}
Expand Down Expand Up @@ -741,8 +740,7 @@ class Indexer {
_currentFileNamesMap.clear();
trs.loop((e, _) => _addTrackToLists(e.$1, false, null));
} else {
currentTrackPathBeingExtracted.value = '';

FAudioTaggerController.inst.currentPathsBeingExtracted.clear();
final audioFilesWithoutDuplicates = <String>[];
if (prevDuplicated) {
/// skip duplicated tracks according to filename
Expand Down Expand Up @@ -782,8 +780,6 @@ class Indexer {
extractFunction(part).then((value) => audioFilesCompleters[partIndex].complete());
});
await Future.wait(audioFilesCompleters.map((e) => e.future).toList());

currentTrackPathBeingExtracted.value = '';
}

/// doing some checks to remove unqualified tracks.
Expand Down
21 changes: 19 additions & 2 deletions lib/controller/tagger_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:async';
import 'dart:io';

import 'package:flutter/services.dart';
import 'package:get/get_rx/src/rx_types/rx_types.dart';
import 'package:queue/queue.dart';

import 'package:namida/class/faudiomodel.dart';
Expand Down Expand Up @@ -87,6 +88,8 @@ class FAudioTaggerController {

final _streamControllers = <int, StreamController<FAudioModel>>{};

final currentPathsBeingExtracted = <int, String>{}.obs;

Future<Stream<FAudioModel>> extractMetadataAsStream({
required List<String> paths,
bool extractArtwork = true,
Expand Down Expand Up @@ -116,19 +119,33 @@ class FAudioTaggerController {
streamController.close();
streamSub?.cancel();
_streamControllers.remove(streamKey);
currentPathsBeingExtracted.remove(streamKey);
}

int extractingCount = 0;
void incrementCurrentExtracting() {
if (paths.isEmpty) return;
try {
extractingCount++;
currentPathsBeingExtracted[streamKey] = paths[extractingCount];
} catch (_) {}
}

void onExtract(FAudioModel info) {
streamController.add(info);
toExtract--;
incrementCurrentExtracting();
if (toExtract <= 0) usingStream.completeIfWasnt();
}

currentPathsBeingExtracted[streamKey] = paths[0];

streamSub = initialStream.listen(
(map) {
final path = map['path'] as String;
if (map["ERROR_FAULTY"] == true) {
extractMetadata(
trackPath: map['path'] as String,
trackPath: path,
tagger: false,
ffmpeg: fallbackToFFMPEG,
saveArtworkToCache: saveArtworkToCache,
Expand All @@ -140,7 +157,7 @@ class FAudioTaggerController {
try {
onExtract(FAudioModel.fromMap(map));
} catch (e) {
onExtract(FAudioModel.dummy(map['path'] as String));
onExtract(FAudioModel.dummy(path));
}
}
},
Expand Down
21 changes: 13 additions & 8 deletions lib/ui/widgets/settings/indexer_settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import 'package:namida/base/setting_subpage_provider.dart';
import 'package:namida/controller/indexer_controller.dart';
import 'package:namida/controller/navigator_controller.dart';
import 'package:namida/controller/settings_controller.dart';
import 'package:namida/controller/tagger_controller.dart';
import 'package:namida/controller/video_controller.dart';
import 'package:namida/core/constants.dart';
import 'package:namida/core/enums.dart';
Expand Down Expand Up @@ -346,15 +347,19 @@ class IndexerSettings extends SettingSubpageProvider {
),
Obx(
() {
final p = Indexer.inst.currentTrackPathBeingExtracted.value;
return p == ''
final paths = FAudioTaggerController.inst.currentPathsBeingExtracted.values;
return paths.isEmpty
? const SizedBox()
: Padding(
padding: const EdgeInsets.symmetric(horizontal: 18.0, vertical: 4.0),
child: Text(
p,
style: context.textTheme.displaySmall?.copyWith(fontSize: 11.0.multipliedFontScale),
),
: Column(
children: paths
.map((e) => Padding(
padding: const EdgeInsets.symmetric(horizontal: 18.0, vertical: 4.0),
child: Text(
e,
style: context.textTheme.displaySmall?.copyWith(fontSize: 11.0.multipliedFontScale),
),
))
.toList(),
);
},
),
Expand Down

0 comments on commit 2fa656a

Please sign in to comment.