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 d4a6521a..c5227da7 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 @@ -5,6 +5,9 @@ import android.util.Log; import com.cappielloantonio.tempo.subsonic.RetrofitClient; import com.cappielloantonio.tempo.subsonic.Subsonic; import com.cappielloantonio.tempo.subsonic.base.ApiResponse; +import com.cappielloantonio.tempo.util.Preferences; + +import java.util.concurrent.TimeUnit; import retrofit2.Call; @@ -21,7 +24,15 @@ public class SystemClient { public Call ping() { Log.d(TAG, "ping()"); - return systemService.ping(subsonic.getParams()); + Call pingCall = systemService.ping(subsonic.getParams()); + if (Preferences.isInUseServerAddressLocal()) { + pingCall.timeout() + .timeout(1, TimeUnit.SECONDS); + } else { + pingCall.timeout() + .timeout(3, TimeUnit.SECONDS); + } + return pingCall; } public Call getLicense() { 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 c959648b..e18d2ea4 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 @@ -40,6 +40,9 @@ import com.google.android.material.color.DynamicColors; import com.google.common.util.concurrent.MoreExecutors; import java.util.Objects; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @UnstableApi @@ -82,6 +85,7 @@ public class MainActivity extends BaseActivity { @Override protected void onStart() { super.onStart(); + pingServer(); initService(); } @@ -351,6 +355,7 @@ public class MainActivity extends BaseActivity { Preferences.switchInUseServerAddress(); App.refreshSubsonicClient(); pingServer(); + resetView(); } else { Preferences.setOpenSubsonic(subsonicResponse.getOpenSubsonic() != null && subsonicResponse.getOpenSubsonic()); } @@ -361,6 +366,7 @@ public class MainActivity extends BaseActivity { Preferences.switchInUseServerAddress(); App.refreshSubsonicClient(); pingServer(); + resetView(); } else { mainViewModel.ping().observe(this, subsonicResponse -> { if (subsonicResponse == null) { @@ -376,6 +382,18 @@ public class MainActivity extends BaseActivity { } } + private void resetView() { + resetViewModel(); + try { + int id = Objects.requireNonNull(navController.getCurrentDestination()).getId(); + navController.popBackStack(id, true); + navController.navigate(id); + } catch(NullPointerException e) { + e.printStackTrace(); + quit(); + } + } + private void getOpenSubsonicExtensions() { if (Preferences.getToken() != null) { mainViewModel.getOpenSubsonicExtensions().observe(this, openSubsonicExtensions -> {