From 728c6068cdd419343370505bb4910f903aa896a2 Mon Sep 17 00:00:00 2001 From: adrian Date: Sat, 24 Jan 2026 20:02:26 -0300 Subject: [PATCH] Synchronize writing of downloads to avoid numbered folders like 'AJR (1)'. --- .../geleia/service/DownloadService.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/adrianvictor/geleia/service/DownloadService.java b/app/src/main/java/org/adrianvictor/geleia/service/DownloadService.java index ac661493..7cb72766 100644 --- a/app/src/main/java/org/adrianvictor/geleia/service/DownloadService.java +++ b/app/src/main/java/org/adrianvictor/geleia/service/DownloadService.java @@ -36,6 +36,8 @@ public class DownloadService extends Service { private ExecutorService executor; private DownloadNotification notification; + private static final Object lock = new Object(); + @Override public void onCreate() { super.onCreate(); @@ -88,13 +90,18 @@ public class DownloadService extends Service { root = DocumentFile.fromFile(new File(location)); } - DocumentFile artist = root.findFile(MusicUtil.ascii(song.artistName)); - if (artist == null) { - artist = root.createDirectory(MusicUtil.ascii(song.artistName)); - } - DocumentFile album = artist.findFile(MusicUtil.ascii(song.albumName)); - if (album == null) { - album = artist.createDirectory(MusicUtil.ascii(song.albumName)); + DocumentFile artist; + DocumentFile album; + + synchronized (lock) { + artist = root.findFile(MusicUtil.ascii(song.artistName)); + if (artist == null) { + artist = root.createDirectory(MusicUtil.ascii(song.artistName)); + } + album = artist.findFile(MusicUtil.ascii(song.albumName)); + if (album == null) { + album = artist.createDirectory(MusicUtil.ascii(song.albumName)); + } } String fileName = song.discNumber + "." + song.trackNumber + " - " + MusicUtil.ascii(song.title) + "." + song.container;