Skip to content

Commit c556cea

Browse files
committed
perf: use splitFirst & splitLast methods
1 parent dad2464 commit c556cea

20 files changed

+40
-32
lines changed

lib/base/audio_handler.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1226,7 +1226,7 @@ class NamidaAudioVideoHandler<Q extends Playable> extends BasicAudioHandler<Q> {
12261226
final languagesAndBitrate = filenamewe.substring(12, filenamewe.length - 1).split('_');
12271227
final languageCode = languagesAndBitrate.length >= 2 ? languagesAndBitrate[0] : null;
12281228
final languageName = languagesAndBitrate.length >= 3 ? languagesAndBitrate[1] : null;
1229-
final bitrateText = filenamewe.split('_').last;
1229+
final bitrateText = filenamewe.splitLast('_');
12301230
return AudioCacheDetails(
12311231
file: file,
12321232
bitrate: int.tryParse(bitrateText),

lib/class/track.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ extension TrackExtUtils on TrackExtended {
334334
String get extension => path.getExtension;
335335
String get folderPath => path.getDirectoryName;
336336
Folder get folder => Folder(folderPath);
337-
String get folderName => folderPath.split(Platform.pathSeparator).last;
337+
String get folderName => folderPath.splitLast(Platform.pathSeparator);
338338
String get pathToImage {
339339
final identifier = settings.groupArtworksByAlbum.value ? albumIdentifier : filename;
340340
return "${AppDirs.ARTWORKS}$identifier.png";
@@ -510,7 +510,7 @@ extension TrackUtils on Track {
510510
String get extension => path.getExtension;
511511
String get folderPath => path.getDirectoryName;
512512
Folder get folder => Folder(folderPath);
513-
String get folderName => folderPath.split(Platform.pathSeparator).last;
513+
String get folderName => folderPath.splitLast(Platform.pathSeparator);
514514
String get pathToImage {
515515
final identifier = settings.groupArtworksByAlbum.value ? albumIdentifier : filename;
516516
return "${AppDirs.ARTWORKS}$identifier.png";

lib/controller/file_browser.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,7 @@ class _NamidaFileBrowserState<T extends FileSystemEntity> extends State<_NamidaF
622622

623623
if (excludeHidden && extensions.isNotEmpty) {
624624
items.loop((e) {
625-
final filename = e.path.split(_pathSeparator).last;
625+
final filename = e.path.splitLast(_pathSeparator);
626626
if (e is Directory) {
627627
if (!filename.startsWith('.')) onAdd(e);
628628
} else {
@@ -631,13 +631,13 @@ class _NamidaFileBrowserState<T extends FileSystemEntity> extends State<_NamidaF
631631
});
632632
} else if (excludeHidden) {
633633
items.loop((e) {
634-
final fileorDirName = e.path.split(_pathSeparator).last;
634+
final fileorDirName = e.path.splitLast(_pathSeparator);
635635
if (!fileorDirName.startsWith('.')) onAdd(e);
636636
});
637637
} else if (extensions.isNotEmpty) {
638638
items.loop((e) {
639639
if (e is File) {
640-
final filename = e.path.split(_pathSeparator).last;
640+
final filename = e.path.splitLast(_pathSeparator);
641641
if (extensions.any((ext) => filename.endsWith(ext))) onAdd(e);
642642
} else {
643643
onAdd(e);

lib/controller/generators_controller.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ class NamidaGenerator extends NamidaGeneratorBase<TrackWithDate, Track> {
2222
final l = Indexer.getTitleAndArtistFromFilename(trackFilename);
2323
final trackTitle = l.$1;
2424
final trackArtist = l.$2;
25-
final matching1 = fileSystemFilenameCleaned.contains(trackFilename.cleanUpForComparison);
26-
final matching2 = fileSystemFilenameCleaned.contains(trackTitle.split('(').first) && fileSystemFilenameCleaned.contains(trackArtist);
27-
return matching1 || matching2;
25+
if (fileSystemFilenameCleaned.contains(trackFilename.cleanUpForComparison)) return true;
26+
if (fileSystemFilenameCleaned.contains(trackTitle.splitFirst('(')) && fileSystemFilenameCleaned.contains(trackArtist)) return true;
27+
return false;
2828
},
2929
);
3030
}

lib/controller/indexer_controller.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,8 +1044,8 @@ class Indexer {
10441044
final artist = titleAndArtist.length >= 2 ? titleAndArtist[0].trimAll() : UnknownTags.ARTIST;
10451045

10461046
// TODO: split by ( and ) too, but retain Remixes and feat.
1047-
final cleanedUpTitle = title.split('[').first.trimAll();
1048-
final cleanedUpArtist = artist.split(']').last.trimAll();
1047+
final cleanedUpTitle = title.splitFirst('[').trimAll();
1048+
final cleanedUpArtist = artist.splitLast(']').trimAll();
10491049

10501050
return (cleanedUpTitle, cleanedUpArtist);
10511051
}

lib/controller/json_to_history_parser.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -954,7 +954,7 @@ class JsonToHistoryParser {
954954
config: artistsSplitConfig,
955955
);
956956
final matchingArtist = artistsList.isNotEmpty && pieces[0].cleanUpForComparison.contains(artistsList.first.cleanUpForComparison);
957-
final matchingTitle = pieces[2].cleanUpForComparison.contains(title.split('(').first.split('[').first.cleanUpForComparison);
957+
final matchingTitle = pieces[2].cleanUpForComparison.contains(title.splitFirst('(').splitFirst('[').cleanUpForComparison);
958958
return matchingArtist && matchingTitle;
959959
},
960960
);

lib/controller/search_sort_controller.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -965,7 +965,7 @@ class SearchSortController {
965965
while (pathN.isNotEmpty && pathN[pathN.length - 1] == Platform.pathSeparator) {
966966
pathN = pathN.substring(0, pathN.length);
967967
}
968-
if (cleanupFunction(pathN.split(Platform.pathSeparator).last).contains(cleanupFunction(text))) {
968+
if (cleanupFunction(pathN.splitLast(Platform.pathSeparator)).contains(cleanupFunction(text))) {
969969
results.add(pathN);
970970
}
971971
});

lib/controller/storage_cache_manager.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ class _VideoTrimmer {
423423
final filesMap = <File, int>{};
424424
void checkFile(FileSystemEntity e) {
425425
if (e is File) {
426-
final filename = e.path.split(Platform.pathSeparator).last;
426+
final filename = e.path.splitLast(Platform.pathSeparator);
427427
if (filename.startsWith(id)) {
428428
filesMap[e] = e.statSync().size;
429429
}
@@ -513,7 +513,7 @@ class _AudioTrimmer {
513513
Directory(dirPath).listSyncSafe().loop((e) {
514514
if (e.path.endsWith('.part')) {
515515
if (e is File) {
516-
final filename = e.path.split(Platform.pathSeparator).last;
516+
final filename = e.path.splitLast(Platform.pathSeparator);
517517
if (filename.startsWith(id)) {
518518
filesMap[e] = e.statSync().size;
519519
}

lib/controller/thumbnail_manager.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ class ThumbnailManager {
4343
String? finalUrl = url;
4444
final imageUrl = finalUrl?.split('i.ytimg.com/vi/');
4545
if (imageUrl != null && imageUrl.length > 1) {
46-
finalUrl = imageUrl.last.split('?').first.replaceAll('/', '_');
46+
finalUrl = imageUrl.last.splitFirst('?').replaceAll('/', '_');
4747
} else {
48-
if (finalUrl != null) finalUrl = '${finalUrl.split('/').last.split('=').first}.png';
48+
if (finalUrl != null) finalUrl = '${finalUrl.splitLast('/').splitFirst('=')}.png';
4949
}
5050

5151
final dirPrefix = isTemp ? 'temp/' : '';

lib/core/constants.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import 'package:namida/class/lang.dart';
1111
import 'package:namida/class/track.dart';
1212
import 'package:namida/controller/indexer_controller.dart';
1313
import 'package:namida/controller/settings_controller.dart';
14+
import 'package:namida/core/extensions.dart';
1415

1516
class NamidaDeviceInfo {
1617
static int sdkVersion = 21;
@@ -112,7 +113,7 @@ class NamidaLinkUtils {
112113
try {
113114
if (match.groupCount == 3) {
114115
dur = Duration(
115-
hours: int.parse(match[1]!.split(':').first),
116+
hours: int.parse(match[1]!.splitFirst(':')),
116117
minutes: int.parse(match[2]!),
117118
seconds: int.parse(match[3]!),
118119
);

0 commit comments

Comments
 (0)