diff --git a/app/src/androidTest/java/com/owncloud/android/AbstractIT.java b/app/src/androidTest/java/com/owncloud/android/AbstractIT.java index f3c6e4c76494..48c235647e86 100644 --- a/app/src/androidTest/java/com/owncloud/android/AbstractIT.java +++ b/app/src/androidTest/java/com/owncloud/android/AbstractIT.java @@ -349,6 +349,11 @@ public void uploadFile(File file, String remotePath) { public void uploadOCUpload(OCUpload ocUpload) { ConnectivityService connectivityServiceMock = new ConnectivityService() { + @Override + public boolean isConnected() { + return false; + } + @Override public boolean isInternetWalled() { return false; diff --git a/app/src/androidTest/java/com/owncloud/android/AbstractOnServerIT.java b/app/src/androidTest/java/com/owncloud/android/AbstractOnServerIT.java index d89a63ff944b..64ee4638de12 100644 --- a/app/src/androidTest/java/com/owncloud/android/AbstractOnServerIT.java +++ b/app/src/androidTest/java/com/owncloud/android/AbstractOnServerIT.java @@ -185,6 +185,11 @@ public void uploadOCUpload(OCUpload ocUpload) { public void uploadOCUpload(OCUpload ocUpload, int localBehaviour) { ConnectivityService connectivityServiceMock = new ConnectivityService() { + @Override + public boolean isConnected() { + return false; + } + @Override public boolean isInternetWalled() { return false; diff --git a/app/src/androidTest/java/com/owncloud/android/UploadIT.java b/app/src/androidTest/java/com/owncloud/android/UploadIT.java index f9e23bf498c4..2194f5cc1ee7 100644 --- a/app/src/androidTest/java/com/owncloud/android/UploadIT.java +++ b/app/src/androidTest/java/com/owncloud/android/UploadIT.java @@ -70,6 +70,11 @@ public class UploadIT extends AbstractOnServerIT { targetContext.getContentResolver()); private ConnectivityService connectivityServiceMock = new ConnectivityService() { + @Override + public boolean isConnected() { + return false; + } + @Override public boolean isInternetWalled() { return false; @@ -283,6 +288,11 @@ public BatteryStatus getBattery() { @Test public void testUploadOnWifiOnlyButNoWifi() { ConnectivityService connectivityServiceMock = new ConnectivityService() { + @Override + public boolean isConnected() { + return false; + } + @Override public boolean isInternetWalled() { return false; @@ -362,6 +372,11 @@ public void testUploadOnWifiOnlyAndWifi() { @Test public void testUploadOnWifiOnlyButMeteredWifi() { ConnectivityService connectivityServiceMock = new ConnectivityService() { + @Override + public boolean isConnected() { + return false; + } + @Override public boolean isInternetWalled() { return false; diff --git a/app/src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt b/app/src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt index 2c6a4d03e39f..f7fd21b1e075 100644 --- a/app/src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt @@ -43,9 +43,13 @@ import org.junit.Before import org.junit.Test abstract class FileUploaderIT : AbstractOnServerIT() { - var uploadsStorageManager: UploadsStorageManager? = null + private var uploadsStorageManager: UploadsStorageManager? = null + + private val connectivityServiceMock: ConnectivityService = object : ConnectivityService { + override fun isConnected(): Boolean { + return false + } - val connectivityServiceMock: ConnectivityService = object : ConnectivityService { override fun isInternetWalled(): Boolean = false override fun getConnectivity(): Connectivity = Connectivity.CONNECTED_WIFI } diff --git a/app/src/debug/java/com/nextcloud/test/TestActivity.kt b/app/src/debug/java/com/nextcloud/test/TestActivity.kt index 3fb033bfe315..7844f1379e9a 100644 --- a/app/src/debug/java/com/nextcloud/test/TestActivity.kt +++ b/app/src/debug/java/com/nextcloud/test/TestActivity.kt @@ -56,6 +56,10 @@ class TestActivity : private lateinit var binding: TestLayoutBinding val connectivityServiceMock: ConnectivityService = object : ConnectivityService { + override fun isConnected(): Boolean { + return false + } + override fun isInternetWalled(): Boolean { return false } diff --git a/app/src/main/java/com/nextcloud/client/network/ConnectivityService.java b/app/src/main/java/com/nextcloud/client/network/ConnectivityService.java index 7798f77ddffe..1a314dd2eab1 100644 --- a/app/src/main/java/com/nextcloud/client/network/ConnectivityService.java +++ b/app/src/main/java/com/nextcloud/client/network/ConnectivityService.java @@ -25,6 +25,7 @@ * and server reachability. */ public interface ConnectivityService { + boolean isConnected(); /** * Check if server is accessible by issuing HTTP status check request. diff --git a/app/src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.java b/app/src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.java index 095308851e8b..fd266ddd0284 100644 --- a/app/src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.java +++ b/app/src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.java @@ -47,7 +47,6 @@ class ConnectivityServiceImpl implements ConnectivityService { private final GetRequestBuilder requestBuilder; private final WalledCheckCache walledCheckCache; - static class GetRequestBuilder implements Function1 { @Override public GetMethod invoke(String url) { @@ -67,6 +66,21 @@ public GetMethod invoke(String url) { this.walledCheckCache = walledCheckCache; } + @Override + public boolean isConnected() { + Network nw = platformConnectivityManager.getActiveNetwork(); + NetworkCapabilities actNw = platformConnectivityManager.getNetworkCapabilities(nw); + + if (actNw == null) { + return false; + } + + return actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || + actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) || + actNw.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) || + actNw.hasTransport(NetworkCapabilities.TRANSPORT_BLUETOOTH); + } + @Override public boolean isInternetWalled() { final Boolean cachedValue = walledCheckCache.getValue(); diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java index 8af5840b384e..3d65318ad43f 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java @@ -242,6 +242,12 @@ protected void onCreate(Bundle savedInstanceState) { } } + public void checkInternetConnection() { + if (connectivityService.isConnected()) { + hideInfoBox(); + } + } + @Override protected void onStart() { super.onStart(); diff --git a/app/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java index d65080c11817..bc2618a73f12 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java @@ -219,7 +219,6 @@ protected final void showInfoBox(@StringRes int text) { /** * Hides the toolbar's info box. */ - @VisibleForTesting public final void hideInfoBox() { mInfoBox.setVisibility(View.GONE); } diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index 420cabc849d0..945bd41ec969 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -561,8 +561,7 @@ public void uploadFiles() { getActivity(), ((FileActivity) getActivity()).getUser().orElseThrow(RuntimeException::new), FileDisplayActivity.REQUEST_CODE__SELECT_FILES_FROM_FILE_SYSTEM, - getCurrentFile().isEncrypted() - ); + getCurrentFile().isEncrypted()); } @Override @@ -976,6 +975,8 @@ public boolean onLongItemClicked(OCFile file) { @Override public void onItemClicked(OCFile file) { + ((FileActivity) mContainerActivity).checkInternetConnection(); + if (getCommonAdapter().isMultiSelect()) { toggleItemToCheckedList(file); } else {