diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/SystemRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/SystemRepository.java index 4dc1dea4..f477e6f0 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/repository/SystemRepository.java +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/SystemRepository.java @@ -6,7 +6,11 @@ import androidx.lifecycle.MutableLiveData; import com.cappielloantonio.tempo.App; import com.cappielloantonio.tempo.interfaces.SystemCallback; import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.subsonic.models.OpenSubsonicExtension; import com.cappielloantonio.tempo.subsonic.models.ResponseStatus; +import com.cappielloantonio.tempo.subsonic.models.SubsonicResponse; + +import java.util.List; import retrofit2.Call; import retrofit2.Callback; @@ -43,8 +47,8 @@ public class SystemRepository { }); } - public MutableLiveData ping() { - MutableLiveData pingResult = new MutableLiveData<>(); + public MutableLiveData ping() { + MutableLiveData pingResult = new MutableLiveData<>(); App.getSubsonicClientInstance(false) .getSystemClient() @@ -53,16 +57,39 @@ public class SystemRepository { @Override public void onResponse(@NonNull Call call, @NonNull Response response) { if (response.isSuccessful() && response.body() != null) { - pingResult.postValue(true); + pingResult.postValue(response.body().getSubsonicResponse()); } } @Override public void onFailure(@NonNull Call call, @NonNull Throwable t) { - pingResult.postValue(false); + pingResult.postValue(null); } }); return pingResult; } + + public MutableLiveData> getOpenSubsonicExtensions() { + MutableLiveData> extensionsResult = new MutableLiveData<>(); + + App.getSubsonicClientInstance(false) + .getSystemClient() + .getOpenSubsonicExtensions() + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful() && response.body() != null) { + extensionsResult.postValue(response.body().getSubsonicResponse().getOpenSubsonicExtensions()); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + extensionsResult.postValue(null); + } + }); + + return extensionsResult; + } } diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemClient.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemClient.java index 2d50c6eb..d4a6521a 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemClient.java +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemClient.java @@ -28,4 +28,9 @@ public class SystemClient { Log.d(TAG, "getLicense()"); return systemService.getLicense(subsonic.getParams()); } + + public Call getOpenSubsonicExtensions() { + Log.d(TAG, "getOpenSubsonicExtensions()"); + return systemService.getOpenSubsonicExtensions(subsonic.getParams()); + } } diff --git a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemService.java b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemService.java index 02c4d799..bc0f4c99 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemService.java +++ b/app/src/main/java/com/cappielloantonio/tempo/subsonic/api/system/SystemService.java @@ -14,4 +14,7 @@ public interface SystemService { @GET("getLicense") Call getLicense(@QueryMap Map params); + + @GET("getOpenSubsonicExtensions") + Call getOpenSubsonicExtensions(@QueryMap Map params); } diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/activity/MainActivity.java b/app/src/main/java/com/cappielloantonio/tempo/ui/activity/MainActivity.java index 25913a55..40574fce 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/activity/MainActivity.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/activity/MainActivity.java @@ -70,6 +70,7 @@ public class MainActivity extends BaseActivity { init(); checkConnectionType(); + getOpenSubsonicExtensions(); } @Override @@ -334,11 +335,25 @@ public class MainActivity extends BaseActivity { private void pingServer() { if (Preferences.getToken() != null) { - mainViewModel.ping().observe(this, isPingSuccessfull -> { - if (!isPingSuccessfull && Preferences.showServerUnreachableDialog()) { + mainViewModel.ping().observe(this, subsonicResponse -> { + if (subsonicResponse == null && Preferences.showServerUnreachableDialog()) { ServerUnreachableDialog dialog = new ServerUnreachableDialog(); dialog.show(getSupportFragmentManager(), null); } + + if (subsonicResponse != null) { + Preferences.setOpenSubsonic(subsonicResponse.getOpenSubsonic() != null && subsonicResponse.getOpenSubsonic()); + } + }); + } + } + + private void getOpenSubsonicExtensions() { + if (Preferences.getToken() != null) { + mainViewModel.getOpenSubsonicExtensions().observe(this, openSubsonicExtensions -> { + if (openSubsonicExtensions != null) { + Preferences.setOpenSubsonicExtensions(openSubsonicExtensions); + } }); } } diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/MainViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/MainViewModel.java index 97528ee9..70a62b2e 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/MainViewModel.java +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/MainViewModel.java @@ -8,6 +8,10 @@ import androidx.lifecycle.LiveData; import com.cappielloantonio.tempo.repository.QueueRepository; import com.cappielloantonio.tempo.repository.SystemRepository; +import com.cappielloantonio.tempo.subsonic.models.OpenSubsonicExtension; +import com.cappielloantonio.tempo.subsonic.models.SubsonicResponse; + +import java.util.List; public class MainViewModel extends AndroidViewModel { private static final String TAG = "SearchViewModel"; @@ -25,7 +29,11 @@ public class MainViewModel extends AndroidViewModel { return queueRepository.count() != 0; } - public LiveData ping() { + public LiveData ping() { return systemRepository.ping(); } + + public LiveData> getOpenSubsonicExtensions() { + return systemRepository.getOpenSubsonicExtensions(); + } }