瀏覽代碼

Merge pull request #12093 from nextcloud/bugfix/Despite-connection-is-restored-message-about-unreachable-server-still-present-9652182

Bugfix Check Network Connection When File Item Clicked
Tobias Kaminsky 1 年之前
父節點
當前提交
0e27b344bb

+ 5 - 0
app/src/androidTest/java/com/owncloud/android/AbstractIT.java

@@ -349,6 +349,11 @@ public abstract class AbstractIT {
 
 
     public void uploadOCUpload(OCUpload ocUpload) {
     public void uploadOCUpload(OCUpload ocUpload) {
         ConnectivityService connectivityServiceMock = new ConnectivityService() {
         ConnectivityService connectivityServiceMock = new ConnectivityService() {
+            @Override
+            public boolean isConnected() {
+                return false;
+            }
+
             @Override
             @Override
             public boolean isInternetWalled() {
             public boolean isInternetWalled() {
                 return false;
                 return false;

+ 5 - 0
app/src/androidTest/java/com/owncloud/android/AbstractOnServerIT.java

@@ -185,6 +185,11 @@ public abstract class AbstractOnServerIT extends AbstractIT {
 
 
     public void uploadOCUpload(OCUpload ocUpload, int localBehaviour) {
     public void uploadOCUpload(OCUpload ocUpload, int localBehaviour) {
         ConnectivityService connectivityServiceMock = new ConnectivityService() {
         ConnectivityService connectivityServiceMock = new ConnectivityService() {
+            @Override
+            public boolean isConnected() {
+                return false;
+            }
+
             @Override
             @Override
             public boolean isInternetWalled() {
             public boolean isInternetWalled() {
                 return false;
                 return false;

+ 15 - 0
app/src/androidTest/java/com/owncloud/android/UploadIT.java

@@ -70,6 +70,11 @@ public class UploadIT extends AbstractOnServerIT {
                                   targetContext.getContentResolver());
                                   targetContext.getContentResolver());
 
 
     private ConnectivityService connectivityServiceMock = new ConnectivityService() {
     private ConnectivityService connectivityServiceMock = new ConnectivityService() {
+        @Override
+        public boolean isConnected() {
+            return false;
+        }
+
         @Override
         @Override
         public boolean isInternetWalled() {
         public boolean isInternetWalled() {
             return false;
             return false;
@@ -283,6 +288,11 @@ public class UploadIT extends AbstractOnServerIT {
     @Test
     @Test
     public void testUploadOnWifiOnlyButNoWifi() {
     public void testUploadOnWifiOnlyButNoWifi() {
         ConnectivityService connectivityServiceMock = new ConnectivityService() {
         ConnectivityService connectivityServiceMock = new ConnectivityService() {
+            @Override
+            public boolean isConnected() {
+                return false;
+            }
+
             @Override
             @Override
             public boolean isInternetWalled() {
             public boolean isInternetWalled() {
                 return false;
                 return false;
@@ -362,6 +372,11 @@ public class UploadIT extends AbstractOnServerIT {
     @Test
     @Test
     public void testUploadOnWifiOnlyButMeteredWifi() {
     public void testUploadOnWifiOnlyButMeteredWifi() {
         ConnectivityService connectivityServiceMock = new ConnectivityService() {
         ConnectivityService connectivityServiceMock = new ConnectivityService() {
+            @Override
+            public boolean isConnected() {
+                return false;
+            }
+
             @Override
             @Override
             public boolean isInternetWalled() {
             public boolean isInternetWalled() {
                 return false;
                 return false;

+ 6 - 2
app/src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt

@@ -43,9 +43,13 @@ import org.junit.Before
 import org.junit.Test
 import org.junit.Test
 
 
 abstract class FileUploaderIT : AbstractOnServerIT() {
 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 isInternetWalled(): Boolean = false
         override fun getConnectivity(): Connectivity = Connectivity.CONNECTED_WIFI
         override fun getConnectivity(): Connectivity = Connectivity.CONNECTED_WIFI
     }
     }

+ 4 - 0
app/src/debug/java/com/nextcloud/test/TestActivity.kt

@@ -56,6 +56,10 @@ class TestActivity :
     private lateinit var binding: TestLayoutBinding
     private lateinit var binding: TestLayoutBinding
 
 
     val connectivityServiceMock: ConnectivityService = object : ConnectivityService {
     val connectivityServiceMock: ConnectivityService = object : ConnectivityService {
+        override fun isConnected(): Boolean {
+            return false
+        }
+
         override fun isInternetWalled(): Boolean {
         override fun isInternetWalled(): Boolean {
             return false
             return false
         }
         }

+ 1 - 0
app/src/main/java/com/nextcloud/client/network/ConnectivityService.java

@@ -25,6 +25,7 @@ package com.nextcloud.client.network;
  * and server reachability.
  * and server reachability.
  */
  */
 public interface ConnectivityService {
 public interface ConnectivityService {
+    boolean isConnected();
 
 
     /**
     /**
      * Check if server is accessible by issuing HTTP status check request.
      * Check if server is accessible by issuing HTTP status check request.

+ 15 - 1
app/src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.java

@@ -47,7 +47,6 @@ class ConnectivityServiceImpl implements ConnectivityService {
     private final GetRequestBuilder requestBuilder;
     private final GetRequestBuilder requestBuilder;
     private final WalledCheckCache walledCheckCache;
     private final WalledCheckCache walledCheckCache;
 
 
-
     static class GetRequestBuilder implements Function1<String, GetMethod> {
     static class GetRequestBuilder implements Function1<String, GetMethod> {
         @Override
         @Override
         public GetMethod invoke(String url) {
         public GetMethod invoke(String url) {
@@ -67,6 +66,21 @@ class ConnectivityServiceImpl implements ConnectivityService {
         this.walledCheckCache = walledCheckCache;
         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
     @Override
     public boolean isInternetWalled() {
     public boolean isInternetWalled() {
         final Boolean cachedValue = walledCheckCache.getValue();
         final Boolean cachedValue = walledCheckCache.getValue();

+ 6 - 0
app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java

@@ -242,6 +242,12 @@ public abstract class FileActivity extends DrawerActivity
         }
         }
     }
     }
 
 
+    public void checkInternetConnection() {
+        if (connectivityService.isConnected()) {
+            hideInfoBox();
+        }
+    }
+
     @Override
     @Override
     protected void onStart() {
     protected void onStart() {
         super.onStart();
         super.onStart();

+ 0 - 1
app/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java

@@ -219,7 +219,6 @@ public abstract class ToolbarActivity extends BaseActivity implements Injectable
     /**
     /**
      * Hides the toolbar's info box.
      * Hides the toolbar's info box.
      */
      */
-    @VisibleForTesting
     public final void hideInfoBox() {
     public final void hideInfoBox() {
         mInfoBox.setVisibility(View.GONE);
         mInfoBox.setVisibility(View.GONE);
     }
     }

+ 3 - 2
app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -561,8 +561,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
             getActivity(),
             getActivity(),
             ((FileActivity) getActivity()).getUser().orElseThrow(RuntimeException::new),
             ((FileActivity) getActivity()).getUser().orElseThrow(RuntimeException::new),
             FileDisplayActivity.REQUEST_CODE__SELECT_FILES_FROM_FILE_SYSTEM,
             FileDisplayActivity.REQUEST_CODE__SELECT_FILES_FROM_FILE_SYSTEM,
-                                                        getCurrentFile().isEncrypted()
-                                                        );
+            getCurrentFile().isEncrypted());
     }
     }
 
 
     @Override
     @Override
@@ -976,6 +975,8 @@ public class OCFileListFragment extends ExtendedListFragment implements
 
 
     @Override
     @Override
     public void onItemClicked(OCFile file) {
     public void onItemClicked(OCFile file) {
+        ((FileActivity) mContainerActivity).checkInternetConnection();
+
         if (getCommonAdapter().isMultiSelect()) {
         if (getCommonAdapter().isMultiSelect()) {
             toggleItemToCheckedList(file);
             toggleItemToCheckedList(file);
         } else {
         } else {