Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 399b2495 authored by Andy Scherzinger's avatar Andy Scherzinger Committed by GitHub
Browse files

Merge pull request #2797 from nextcloud/fix/do-not-show-crash-dialog-for-network-connection-error

add: nextcloud network exception check
parents 925330c5 a31e5dc6
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -120,7 +120,11 @@ dependencies {

    // Nextcloud SSO
    implementation 'com.github.nextcloud.android-common:ui:0.28.0'
    implementation 'com.github.nextcloud:Android-SingleSignOn:1.3.2'
    implementation("com.github.nextcloud:Android-SingleSignOn:$singleSignOnVersion") {
        version {
            strictly(singleSignOnVersion)
        }
    }
    implementation "com.github.stefan-niedermann.android-commons:shared-preferences:$androidCommonsVersion"
	implementation "com.github.stefan-niedermann.android-commons:reactive-livedata:$androidCommonsVersion"
	implementation "com.github.stefan-niedermann.android-commons:util:$androidCommonsVersion"
+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ public class NotesApplication extends Application {
            return;
        }

        FilesAppTypeRegistry.getInstance().init(new FilesAppType(packageId, accountType, FilesAppType.Type.PROD));
        FilesAppTypeRegistry.getInstance().init(new FilesAppType(packageId, accountType, FilesAppType.Stage.PROD));
    }

    public static BrandingUtil brandingUtil() {
+3 −3
Original line number Diff line number Diff line
@@ -87,8 +87,8 @@ public class MenuAdapter extends RecyclerView.Adapter<MenuViewHolder> {
        // https://github.com/nextcloud/android/pull/8405#issuecomment-852966877
        final int minVersionCode = 30170090;
        try {
            Optional<FilesAppType> prod = FilesAppTypeRegistry.getInstance().getTypes().stream().filter(t -> t.type == FilesAppType.Type.PROD).findFirst();
            Optional<FilesAppType> dev = FilesAppTypeRegistry.getInstance().getTypes().stream().filter(t -> t.type == FilesAppType.Type.DEV).findFirst();
            Optional<FilesAppType> prod = FilesAppTypeRegistry.getInstance().getTypes().stream().filter(t -> t.stage() == FilesAppType.Stage.PROD).findFirst();
            Optional<FilesAppType> dev = FilesAppTypeRegistry.getInstance().getTypes().stream().filter(t -> t.stage() == FilesAppType.Stage.DEV).findFirst();
            if (prod.isPresent() && VersionCheckHelper.getNextcloudFilesVersionCode(context, prod.get()) > minVersionCode) {
                return generateTrashbinAppIntent(context, account, prod.get());
            } else if (dev.isPresent() && VersionCheckHelper.getNextcloudFilesVersionCode(context, dev.get()) > minVersionCode) {
@@ -105,7 +105,7 @@ public class MenuAdapter extends RecyclerView.Adapter<MenuViewHolder> {

    private static Intent generateTrashbinAppIntent(@NonNull Context context, @NonNull Account account, FilesAppType type) throws PackageManager.NameNotFoundException {
        final var packageManager = context.getPackageManager();
        final String packageName = type.packageId;
        final String packageName = type.packageId();
        final var intent = new Intent();
        intent.setClassName(packageName, "com.owncloud.android.ui.trashbin.TrashbinActivity");
        if (packageManager.resolveActivity(intent, 0) != null) {
+18 −10
Original line number Diff line number Diff line
@@ -6,18 +6,25 @@
 */
package it.niedermann.owncloud.notes.persistence;

import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
import static java.net.HttpURLConnection.HTTP_NOT_MODIFIED;
import static java.net.HttpURLConnection.HTTP_UNAVAILABLE;
import static it.niedermann.owncloud.notes.shared.model.DBStatus.LOCAL_DELETED;
import static it.niedermann.owncloud.notes.shared.util.NoteUtil.generateNoteExcerpt;

import android.content.Context;
import android.util.Log;

import androidx.annotation.NonNull;

import com.nextcloud.android.sso.AccountImporter;
import com.nextcloud.android.sso.api.ParsedResponse;
import com.nextcloud.android.sso.exceptions.NextcloudApiNotRespondingException;
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException;
import com.nextcloud.android.sso.exceptions.NextcloudNetworkException;
import com.nextcloud.android.sso.exceptions.TokenMismatchException;
import com.nextcloud.android.sso.model.SingleSignOnAccount;
import com.owncloud.android.lib.common.utils.Log_OC;

import java.util.ArrayList;
import java.util.Calendar;
@@ -26,7 +33,6 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import it.niedermann.owncloud.notes.BuildConfig;
import it.niedermann.owncloud.notes.persistence.entity.Account;
@@ -36,13 +42,6 @@ import it.niedermann.owncloud.notes.shared.model.DBStatus;
import it.niedermann.owncloud.notes.shared.model.ISyncCallback;
import it.niedermann.owncloud.notes.shared.model.SyncResultStatus;
import it.niedermann.owncloud.notes.shared.util.ApiVersionUtil;
import retrofit2.Response;

import static it.niedermann.owncloud.notes.shared.model.DBStatus.LOCAL_DELETED;
import static it.niedermann.owncloud.notes.shared.util.NoteUtil.generateNoteExcerpt;
import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
import static java.net.HttpURLConnection.HTTP_NOT_MODIFIED;
import static java.net.HttpURLConnection.HTTP_UNAVAILABLE;


/**
@@ -221,8 +220,13 @@ abstract class NotesServerSyncTask extends Thread {
            }
            localAccount.setModified(accountFromDatabase.getModified());
            localAccount.setETag(accountFromDatabase.getETag());
            final var modified = localAccount.getModified();
            if (modified == null) {
                Log_OC.e(TAG, "modified is null cannot fetch notes");
                return false;
            }

            final var fetchResponse = notesAPI.getNotes(localAccount.getModified(), localAccount.getETag()).blockingSingle();
            final var fetchResponse = notesAPI.getNotes(modified, localAccount.getETag()).blockingSingle();
            final var remoteNotes = fetchResponse.getResponse();
            final var remoteIDs = new HashSet<Long>();
            // pull remote changes: update or create each remote note
@@ -288,8 +292,12 @@ abstract class NotesServerSyncTask extends Thread {
                    }
                } else if (cause.getClass() == NextcloudApiNotRespondingException.class || cause instanceof NextcloudApiNotRespondingException) {
                    apiProvider.invalidateAPICache(ssoAccount);
                } else if (cause.getClass() == NextcloudNetworkException.class) {
                    Log.w(TAG, "Network connectivity issue during sync");
                    return true;
                }
            }

            exceptions.add(t);
            return false;
        }
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ import com.google.gson.annotations.Expose;
import com.nextcloud.android.sso.api.EmptyResponse;
import com.nextcloud.android.sso.api.NextcloudAPI;
import com.nextcloud.android.sso.api.ParsedResponse;
import com.nextcloud.android.sso.exceptions.NextcloudNetworkException;

import java.util.Calendar;
import java.util.HashMap;
Loading