Skip to content

Commit

Permalink
Merge pull request #12093 from nextcloud/bugfix/Despite-connection-is…
Browse files Browse the repository at this point in the history
…-restored-message-about-unreachable-server-still-present-9652182

Bugfix Check Network Connection When File Item Clicked
  • Loading branch information
tobiasKaminsky authored Dec 11, 2023
2 parents acc766d + 8be0dbe commit 0e27b34
Show file tree
Hide file tree
Showing 10 changed files with 60 additions and 6 deletions.
5 changes: 5 additions & 0 deletions app/src/androidTest/java/com/owncloud/android/AbstractIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
15 changes: 15 additions & 0 deletions app/src/androidTest/java/com/owncloud/android/UploadIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
4 changes: 4 additions & 0 deletions app/src/debug/java/com/nextcloud/test/TestActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
* and server reachability.
*/
public interface ConnectivityService {
boolean isConnected();

/**
* Check if server is accessible by issuing HTTP status check request.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ class ConnectivityServiceImpl implements ConnectivityService {
private final GetRequestBuilder requestBuilder;
private final WalledCheckCache walledCheckCache;


static class GetRequestBuilder implements Function1<String, GetMethod> {
@Override
public GetMethod invoke(String url) {
Expand All @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,12 @@ protected void onCreate(Bundle savedInstanceState) {
}
}

public void checkInternetConnection() {
if (connectivityService.isConnected()) {
hideInfoBox();
}
}

@Override
protected void onStart() {
super.onStart();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -976,6 +975,8 @@ public boolean onLongItemClicked(OCFile file) {

@Override
public void onItemClicked(OCFile file) {
((FileActivity) mContainerActivity).checkInternetConnection();

if (getCommonAdapter().isMultiSelect()) {
toggleItemToCheckedList(file);
} else {
Expand Down

0 comments on commit 0e27b34

Please sign in to comment.