feat: radio stream add/edit dialog

This commit is contained in:
antonio 2023-05-07 19:22:04 +02:00
parent 3ef46a8536
commit 2542b28916
7 changed files with 301 additions and 2 deletions

View file

@ -0,0 +1,43 @@
package com.cappielloantonio.play.viewmodel;
import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import com.cappielloantonio.play.repository.RadioRepository;
import com.cappielloantonio.play.subsonic.models.InternetRadioStation;
public class RadioEditorViewModel extends AndroidViewModel {
private static final String TAG = "RadioEditorViewModel";
private final RadioRepository radioRepository;
private InternetRadioStation toEdit;
public RadioEditorViewModel(@NonNull Application application) {
super(application);
radioRepository = new RadioRepository();
}
public InternetRadioStation getRadioToEdit() {
return toEdit;
}
public void setRadioToEdit(InternetRadioStation internetRadioStation) {
this.toEdit = internetRadioStation;
}
public void createRadio(String name, String streamURL, String homepageURL) {
radioRepository.createInternetRadioStation(name, streamURL, homepageURL);
}
public void updateRadio(String name, String streamURL, String homepageURL) {
if (toEdit != null) radioRepository.updateInternetRadioStation(toEdit.getId(), name, streamURL, homepageURL);
}
public void deleteRadio() {
if (toEdit != null) radioRepository.deleteInternetRadioStation(toEdit.getId());
}
}

View file

@ -4,7 +4,9 @@ import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.repository.RadioRepository;
import com.cappielloantonio.play.subsonic.models.InternetRadioStation;
@ -14,13 +16,16 @@ import java.util.List;
public class RadioViewModel extends AndroidViewModel {
private final RadioRepository radioRepository;
private final MutableLiveData<List<InternetRadioStation>> internetRadioStations = new MutableLiveData<>(null);
public RadioViewModel(@NonNull Application application) {
super(application);
radioRepository = new RadioRepository();
}
public LiveData<List<InternetRadioStation>> getInternetRadioStations() {
return radioRepository.getInternetRadioStations();
public LiveData<List<InternetRadioStation>> getInternetRadioStations(LifecycleOwner owner) {
radioRepository.getInternetRadioStations().observe(owner, internetRadioStations::postValue);
return internetRadioStations;
}
}