From eaf271005420998b7eb3f7ba29e006db667bd602 Mon Sep 17 00:00:00 2001 From: eddyizm Date: Sat, 30 Aug 2025 09:23:44 -0700 Subject: [PATCH] fix: minor refactor of sync album observer --- .../viewmodel/StarredAlbumsSyncViewModel.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredAlbumsSyncViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredAlbumsSyncViewModel.java index 0f45bedd..492ed010 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredAlbumsSyncViewModel.java +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/StarredAlbumsSyncViewModel.java @@ -7,6 +7,7 @@ import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LiveData; +import androidx.lifecycle.Observer; import androidx.lifecycle.MutableLiveData; import com.cappielloantonio.tempo.repository.AlbumRepository; @@ -49,19 +50,22 @@ public class StarredAlbumsSyncViewModel extends AndroidViewModel { CountDownLatch latch = new CountDownLatch(albums.size()); for (AlbumID3 album : albums) { - albumRepository.getAlbumTracks(album.getId()).observeForever(songs -> { - if (songs != null) { - allSongs.addAll(songs); - } - latch.countDown(); - - if (latch.getCount() == 0) { - callback.onSongsCollected(allSongs); + LiveData> albumTracks = albumRepository.getAlbumTracks(album.getId()); + albumTracks.observeForever(new Observer>() { + @Override + public void onChanged(List songs) { + if (songs != null) { + allSongs.addAll(songs); + } + latch.countDown(); + + if (latch.getCount() == 0) { + callback.onSongsCollected(allSongs); + albumTracks.removeObserver(this); + } } }); } - - albumRepository.removeObserver(this); } private interface AlbumSongsCallback {