Loading app/build.gradle +6 −2 Original line number Diff line number Diff line Loading @@ -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" Loading app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java +1 −1 Original line number Diff line number Diff line Loading @@ -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() { Loading app/src/main/java/it/niedermann/owncloud/notes/main/menu/MenuAdapter.java +3 −3 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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) { Loading app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesServerSyncTask.java +17 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; /** Loading Loading @@ -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(); Loading Loading @@ -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; } Loading app/src/main/java/it/niedermann/owncloud/notes/persistence/sync/NotesAPI.java +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading
app/build.gradle +6 −2 Original line number Diff line number Diff line Loading @@ -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" Loading
app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java +1 −1 Original line number Diff line number Diff line Loading @@ -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() { Loading
app/src/main/java/it/niedermann/owncloud/notes/main/menu/MenuAdapter.java +3 −3 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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) { Loading
app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesServerSyncTask.java +17 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; /** Loading Loading @@ -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(); Loading Loading @@ -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; } Loading
app/src/main/java/it/niedermann/owncloud/notes/persistence/sync/NotesAPI.java +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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