From 11d76fa290106d22c171facddd291b2598aca3cb Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Sat, 5 Feb 2022 18:36:49 +0100 Subject: [PATCH] Creation of podcast repository layer --- .../play/repository/PodcastRepository.java | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 app/src/main/java/com/cappielloantonio/play/repository/PodcastRepository.java diff --git a/app/src/main/java/com/cappielloantonio/play/repository/PodcastRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/PodcastRepository.java new file mode 100644 index 00000000..6e961423 --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/play/repository/PodcastRepository.java @@ -0,0 +1,92 @@ +package com.cappielloantonio.play.repository; + +import android.app.Application; +import android.util.Log; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.cappielloantonio.play.App; +import com.cappielloantonio.play.model.PodcastChannel; +import com.cappielloantonio.play.model.PodcastEpisode; +import com.cappielloantonio.play.subsonic.models.SubsonicResponse; +import com.cappielloantonio.play.util.MappingUtil; + +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class PodcastRepository { + private static final String TAG = "SongRepository"; + + private final Application application; + + public PodcastRepository(Application application) { + this.application = application; + } + + public MutableLiveData> getPodcastChannels(boolean includeEpisodes, String channelId) { + MutableLiveData> livePodcastChannel = new MutableLiveData<>(); + + App.getSubsonicClientInstance(application, false) + .getPodcastClient() + .getPodcasts(includeEpisodes, channelId) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getPodcasts() != null) { + livePodcastChannel.setValue(MappingUtil.mapPodcastChannel(response.body().getPodcasts().getChannels())); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + + return livePodcastChannel; + } + + public MutableLiveData> getNewestPodcastEpisodes(int count) { + MutableLiveData> liveNewestPodcastEpisodes = new MutableLiveData<>(); + + App.getSubsonicClientInstance(application, false) + .getPodcastClient() + .getNewestPodcasts(count) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null && response.body().getNewestPodcasts() != null) { + liveNewestPodcastEpisodes.setValue(MappingUtil.mapPodcastEpisode(response.body().getNewestPodcasts().getEpisodes())); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + Log.d(TAG, "onFailure()"); + } + }); + + return liveNewestPodcastEpisodes; + } + + public void refreshPodcasts() { + App.getSubsonicClientInstance(application, false) + .getPodcastClient() + .refreshPodcasts() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + + } + }); + } +}