Bug/instant mix issues (#344)

* fix: song bottom sheet changed to livedata and fixed issue

* fix: refactor bottom sheet instant mix calls to use livedata.
This commit is contained in:
eddyizm 2026-01-09 18:44:59 -08:00 committed by GitHub
parent 5ef5731fe3
commit 64a1966ad8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 105 additions and 299 deletions

View file

@ -6,6 +6,7 @@ import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.OptIn;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
@ -26,6 +27,7 @@ import com.cappielloantonio.tempo.util.MappingUtil;
import com.cappielloantonio.tempo.util.NetworkUtil;
import com.cappielloantonio.tempo.util.Preferences;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@ -36,6 +38,7 @@ public class AlbumBottomSheetViewModel extends AndroidViewModel {
private final FavoriteRepository favoriteRepository;
private final SharingRepository sharingRepository;
private AlbumID3 album;
private final MutableLiveData<List<Child>> instantMix = new MutableLiveData<>(null);
public AlbumBottomSheetViewModel(@NonNull Application application) {
super(application);
@ -131,4 +134,12 @@ public class AlbumBottomSheetViewModel extends AndroidViewModel {
});
}
}
public LiveData<List<Child>> getAlbumInstantMix(LifecycleOwner owner, AlbumID3 album) {
instantMix.setValue(Collections.emptyList());
albumRepository.getInstantMix(album, 20).observe(owner, instantMix::postValue);
return instantMix;
}
}

View file

@ -4,7 +4,12 @@ import android.app.Application;
import android.content.Context;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.OptIn;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.media3.common.util.UnstableApi;
import com.cappielloantonio.tempo.model.Download;
import com.cappielloantonio.tempo.interfaces.StarCallback;
@ -17,6 +22,7 @@ import com.cappielloantonio.tempo.util.DownloadUtil;
import com.cappielloantonio.tempo.util.MappingUtil;
import com.cappielloantonio.tempo.util.Preferences;
import java.util.Collections;
import java.util.Date;
import java.util.stream.Collectors;
import java.util.List;
@ -24,6 +30,7 @@ import java.util.List;
public class ArtistBottomSheetViewModel extends AndroidViewModel {
private final ArtistRepository artistRepository;
private final FavoriteRepository favoriteRepository;
private final MutableLiveData<List<Child>> instantMix = new MutableLiveData<>(null);
private ArtistID3 artist;
@ -95,6 +102,7 @@ public class ArtistBottomSheetViewModel extends AndroidViewModel {
Log.d("ArtistSync", "Starting artist sync for: " + artist.getName());
artistRepository.getArtistAllSongs(artist.getId(), new ArtistRepository.ArtistSongsCallback() {
@OptIn(markerClass = UnstableApi.class)
@Override
public void onSongsCollected(List<Child> songs) {
Log.d("ArtistSync", "Callback triggered with songs: " + (songs != null ? songs.size() : 0));
@ -114,5 +122,12 @@ public class ArtistBottomSheetViewModel extends AndroidViewModel {
Log.d("ArtistSync", "Artist sync preference is disabled");
}
}
///
public LiveData<List<Child>> getArtistInstantMix(LifecycleOwner owner, ArtistID3 artist) {
instantMix.setValue(Collections.emptyList());
artistRepository.getInstantMix(artist, 20).observe(owner, instantMix::postValue);
return instantMix;
}
}