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

Unverified Commit 6a126508 authored by alperozturk's avatar alperozturk Committed by Andy Scherzinger
Browse files

add: nextcloud network exception check

parent 925330c5
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) {
+17 −9
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,6 +220,11 @@ 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 remoteNotes = fetchResponse.getResponse();
@@ -289,7 +293,11 @@ abstract class NotesServerSyncTask extends Thread {
                } else if (cause.getClass() == NextcloudApiNotRespondingException.class || cause instanceof NextcloudApiNotRespondingException) {
                    apiProvider.invalidateAPICache(ssoAccount);
                }
            } else if (t.getClass() == NextcloudNetworkException.class) {
                Log.w(TAG, "Network connectivity issue during sync");
                return true;
            }

            exceptions.add(t);
            return false;
        }
+2 −1
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;
@@ -68,7 +69,7 @@ public class NotesAPI {
        }
    }

    public Observable<ParsedResponse<List<Note>>> getNotes(@NonNull Calendar lastModified, String lastETag) {
    public Observable<ParsedResponse<List<Note>>> getNotes(@NonNull Calendar lastModified, String lastETag) throws NextcloudNetworkException {
        if (ApiVersion.API_VERSION_1_0.equals(usedApiVersion)) {
            return notesAPI_1_0.getNotes(lastModified.getTimeInMillis() / 1_000, lastETag);
        } else if (ApiVersion.API_VERSION_0_2.equals(usedApiVersion)) {
Loading