Skip to content

Commit 399b249

Browse files
Merge pull request #2797 from nextcloud/fix/do-not-show-crash-dialog-for-network-connection-error
add: nextcloud network exception check
2 parents 925330c + a31e5dc commit 399b249

File tree

8 files changed

+71
-16
lines changed

8 files changed

+71
-16
lines changed

app/build.gradle

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,12 @@ dependencies {
120120

121121
// Nextcloud SSO
122122
implementation 'com.github.nextcloud.android-common:ui:0.28.0'
123-
implementation 'com.github.nextcloud:Android-SingleSignOn:1.3.2'
124-
implementation "com.github.stefan-niedermann.android-commons:shared-preferences:$androidCommonsVersion"
123+
implementation("com.github.nextcloud:Android-SingleSignOn:$singleSignOnVersion") {
124+
version {
125+
strictly(singleSignOnVersion)
126+
}
127+
}
128+
implementation "com.github.stefan-niedermann.android-commons:shared-preferences:$androidCommonsVersion"
125129
implementation "com.github.stefan-niedermann.android-commons:reactive-livedata:$androidCommonsVersion"
126130
implementation "com.github.stefan-niedermann.android-commons:util:$androidCommonsVersion"
127131
implementation "com.github.stefan-niedermann.nextcloud-commons:sso-glide:$commonsVersion"

app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ private void registerFilesAppType() {
6161
return;
6262
}
6363

64-
FilesAppTypeRegistry.getInstance().init(new FilesAppType(packageId, accountType, FilesAppType.Type.PROD));
64+
FilesAppTypeRegistry.getInstance().init(new FilesAppType(packageId, accountType, FilesAppType.Stage.PROD));
6565
}
6666

6767
public static BrandingUtil brandingUtil() {

app/src/main/java/it/niedermann/owncloud/notes/main/menu/MenuAdapter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@ private static Intent generateTrashbinIntent(@NonNull Context context, @NonNull
8787
// https://github.com/nextcloud/android/pull/8405#issuecomment-852966877
8888
final int minVersionCode = 30170090;
8989
try {
90-
Optional<FilesAppType> prod = FilesAppTypeRegistry.getInstance().getTypes().stream().filter(t -> t.type == FilesAppType.Type.PROD).findFirst();
91-
Optional<FilesAppType> dev = FilesAppTypeRegistry.getInstance().getTypes().stream().filter(t -> t.type == FilesAppType.Type.DEV).findFirst();
90+
Optional<FilesAppType> prod = FilesAppTypeRegistry.getInstance().getTypes().stream().filter(t -> t.stage() == FilesAppType.Stage.PROD).findFirst();
91+
Optional<FilesAppType> dev = FilesAppTypeRegistry.getInstance().getTypes().stream().filter(t -> t.stage() == FilesAppType.Stage.DEV).findFirst();
9292
if (prod.isPresent() && VersionCheckHelper.getNextcloudFilesVersionCode(context, prod.get()) > minVersionCode) {
9393
return generateTrashbinAppIntent(context, account, prod.get());
9494
} else if (dev.isPresent() && VersionCheckHelper.getNextcloudFilesVersionCode(context, dev.get()) > minVersionCode) {
@@ -105,7 +105,7 @@ private static Intent generateTrashbinIntent(@NonNull Context context, @NonNull
105105

106106
private static Intent generateTrashbinAppIntent(@NonNull Context context, @NonNull Account account, FilesAppType type) throws PackageManager.NameNotFoundException {
107107
final var packageManager = context.getPackageManager();
108-
final String packageName = type.packageId;
108+
final String packageName = type.packageId();
109109
final var intent = new Intent();
110110
intent.setClassName(packageName, "com.owncloud.android.ui.trashbin.TrashbinActivity");
111111
if (packageManager.resolveActivity(intent, 0) != null) {

app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesServerSyncTask.java

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,25 @@
66
*/
77
package it.niedermann.owncloud.notes.persistence;
88

9+
import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
10+
import static java.net.HttpURLConnection.HTTP_NOT_MODIFIED;
11+
import static java.net.HttpURLConnection.HTTP_UNAVAILABLE;
12+
import static it.niedermann.owncloud.notes.shared.model.DBStatus.LOCAL_DELETED;
13+
import static it.niedermann.owncloud.notes.shared.util.NoteUtil.generateNoteExcerpt;
14+
915
import android.content.Context;
1016
import android.util.Log;
1117

1218
import androidx.annotation.NonNull;
1319

1420
import com.nextcloud.android.sso.AccountImporter;
15-
import com.nextcloud.android.sso.api.ParsedResponse;
1621
import com.nextcloud.android.sso.exceptions.NextcloudApiNotRespondingException;
1722
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
1823
import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException;
24+
import com.nextcloud.android.sso.exceptions.NextcloudNetworkException;
1925
import com.nextcloud.android.sso.exceptions.TokenMismatchException;
2026
import com.nextcloud.android.sso.model.SingleSignOnAccount;
27+
import com.owncloud.android.lib.common.utils.Log_OC;
2128

2229
import java.util.ArrayList;
2330
import java.util.Calendar;
@@ -26,7 +33,6 @@
2633
import java.util.HashSet;
2734
import java.util.List;
2835
import java.util.Map;
29-
import java.util.Set;
3036

3137
import it.niedermann.owncloud.notes.BuildConfig;
3238
import it.niedermann.owncloud.notes.persistence.entity.Account;
@@ -36,13 +42,6 @@
3642
import it.niedermann.owncloud.notes.shared.model.ISyncCallback;
3743
import it.niedermann.owncloud.notes.shared.model.SyncResultStatus;
3844
import it.niedermann.owncloud.notes.shared.util.ApiVersionUtil;
39-
import retrofit2.Response;
40-
41-
import static it.niedermann.owncloud.notes.shared.model.DBStatus.LOCAL_DELETED;
42-
import static it.niedermann.owncloud.notes.shared.util.NoteUtil.generateNoteExcerpt;
43-
import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
44-
import static java.net.HttpURLConnection.HTTP_NOT_MODIFIED;
45-
import static java.net.HttpURLConnection.HTTP_UNAVAILABLE;
4645

4746

4847
/**
@@ -221,8 +220,13 @@ private boolean pullRemoteChanges() {
221220
}
222221
localAccount.setModified(accountFromDatabase.getModified());
223222
localAccount.setETag(accountFromDatabase.getETag());
223+
final var modified = localAccount.getModified();
224+
if (modified == null) {
225+
Log_OC.e(TAG, "modified is null cannot fetch notes");
226+
return false;
227+
}
224228

225-
final var fetchResponse = notesAPI.getNotes(localAccount.getModified(), localAccount.getETag()).blockingSingle();
229+
final var fetchResponse = notesAPI.getNotes(modified, localAccount.getETag()).blockingSingle();
226230
final var remoteNotes = fetchResponse.getResponse();
227231
final var remoteIDs = new HashSet<Long>();
228232
// pull remote changes: update or create each remote note
@@ -288,8 +292,12 @@ private boolean pullRemoteChanges() {
288292
}
289293
} else if (cause.getClass() == NextcloudApiNotRespondingException.class || cause instanceof NextcloudApiNotRespondingException) {
290294
apiProvider.invalidateAPICache(ssoAccount);
295+
} else if (cause.getClass() == NextcloudNetworkException.class) {
296+
Log.w(TAG, "Network connectivity issue during sync");
297+
return true;
291298
}
292299
}
300+
293301
exceptions.add(t);
294302
return false;
295303
}

app/src/main/java/it/niedermann/owncloud/notes/persistence/sync/NotesAPI.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.nextcloud.android.sso.api.EmptyResponse;
1616
import com.nextcloud.android.sso.api.NextcloudAPI;
1717
import com.nextcloud.android.sso.api.ParsedResponse;
18+
import com.nextcloud.android.sso.exceptions.NextcloudNetworkException;
1819

1920
import java.util.Calendar;
2021
import java.util.HashMap;

app/src/test/java/it/niedermann/owncloud/notes/persistence/NotesServerSyncTaskTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public void testPushLocalChanges() {
8888

8989
@Test
9090
public void testPullRemoteChanges() {
91+
when(account.getModified()).thenReturn(Calendar.getInstance());
9192
when(repo.getAccountById(anyLong())).thenReturn(account);
9293
when(repo.getIdMap(anyLong())).thenReturn(Map.of(1000L, 1L, 2000L, 2L));
9394
when(repo.updateIfNotModifiedLocallyAndAnyRemoteColumnHasChanged(anyLong(), anyLong(), anyString(), anyBoolean(), anyString(), anyString(), anyString(), anyString())).thenReturn(1);

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ buildscript {
1616
kotlinVersion = '2.2.20'
1717
commonsVersion = '2.3.7'
1818
androidCommonsVersion = '1.1.0'
19+
singleSignOnVersion = "17df25ce03d98b9d868249b41f7300bff6c54f3e"
1920
}
2021
repositories {
2122
mavenCentral()

gradle/verification-metadata.xml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@
239239
<trusted-key id="E7DC75FC24FB3C8DFE8086AD3D5839A2262CBBFB" group="org.jetbrains.kotlinx"/>
240240
<trusted-key id="E85AED155021AF8A6C6B7A4A7C7D8456294423BA" group="org.objenesis"/>
241241
<trusted-key id="E9CC3CD1AE59E851E4DB3FA350FFD7487D34B5B9">
242+
<trusting group="io.reactivex.rxjava3" name="rxjava" version="3.1.11"/>
242243
<trusting group="io.reactivex.rxjava3" name="rxjava" version="3.1.8"/>
243244
<trusting group="io.reactivex.rxjava3" name="rxjava" version="3.1.9"/>
244245
</trusted-key>
@@ -10217,6 +10218,40 @@
1021710218
</sha256>
1021810219
</artifact>
1021910220
</component>
10221+
<component group="com.github.nextcloud" name="Android-SingleSignOn" version="17df25ce03d98b9d868249b41f7300bff6c54f3e">
10222+
<artifact name="Android-SingleSignOn-17df25ce03d98b9d868249b41f7300bff6c54f3e.aar">
10223+
<sha256 value="97b62266de15af013d48af801fdd13f5328338514c3ff757122095530a66ff84" origin="Generated by Gradle" reason="Artifact is not signed"/>
10224+
</artifact>
10225+
<artifact name="Android-SingleSignOn-17df25ce03d98b9d868249b41f7300bff6c54f3e.module">
10226+
<sha256 value="01e8491b4df0312fe8839af1497d4509a64a3fa73932b007421bd6857c286bb7" origin="Generated by Gradle" reason="Artifact is not signed"/>
10227+
</artifact>
10228+
</component>
10229+
<component group="com.github.nextcloud" name="Android-SingleSignOn" version="1d31061d17">
10230+
<artifact name="Android-SingleSignOn-1d31061d17.aar">
10231+
<sha256 value="e35b753b2142d329cc800314d5d31abf9a9ece72c28c5f9c830ed57176cee0b4" origin="Generated by Gradle" reason="Artifact is not signed"/>
10232+
</artifact>
10233+
<artifact name="Android-SingleSignOn-1d31061d17.module">
10234+
<sha256 value="a41c20f05f198d96fb8d0c8d33abec1b207e36650949c15de3fab45e0dcd6b2a" origin="Generated by Gradle" reason="Artifact is not signed"/>
10235+
</artifact>
10236+
</component>
10237+
<component group="com.github.nextcloud" name="Android-SingleSignOn" version="1d31061d17e1bd88b6501fa436a753ada4273230">
10238+
<artifact name="Android-SingleSignOn-1d31061d17e1bd88b6501fa436a753ada4273230.module">
10239+
<sha256 value="7567b6eb9817a4785a900eef12dfb0231611b030db2b17721c6fc62785f6d77c" origin="Generated by Gradle" reason="Artifact is not signed"/>
10240+
</artifact>
10241+
</component>
10242+
<component group="com.github.nextcloud" name="Android-SingleSignOn" version="ab41fe72d4">
10243+
<artifact name="Android-SingleSignOn-ab41fe72d4.aar">
10244+
<sha256 value="60cf4e8db291c411be42d725edb16a8ee8eae28ede740475a3bbbcae660b7621" origin="Generated by Gradle" reason="Artifact is not signed"/>
10245+
</artifact>
10246+
<artifact name="Android-SingleSignOn-ab41fe72d4.module">
10247+
<sha256 value="ce809fc39073f82ac59c9a5cc38134045857ec5169acc1f24d09e2cc3421234e" origin="Generated by Gradle" reason="Artifact is not signed"/>
10248+
</artifact>
10249+
</component>
10250+
<component group="com.github.nextcloud" name="Android-SingleSignOn" version="c8e05ec00f086e8fc464a6bc112a4b7e7cd38c4a">
10251+
<artifact name="Android-SingleSignOn-c8e05ec00f086e8fc464a6bc112a4b7e7cd38c4a.module">
10252+
<sha256 value="4d59876c3a6313d225cf0f847fc54e04eddb6e6eaf66d92587544752c02e2185" origin="Generated by Gradle" reason="Artifact is not signed"/>
10253+
</artifact>
10254+
</component>
1022010255
<component group="com.github.nextcloud" name="android-common" version="0.14.0">
1022110256
<artifact name="android-common-0.14.0.jar">
1022210257
<sha256 value="12473a2140bdf23575f487ddce434ba8cdfc5bc28f99ddf7f6b6418c67597632" origin="Generated by Gradle" reason="Artifact is not signed"/>
@@ -13002,6 +13037,11 @@
1300213037
<sha256 value="b25bece50483de9a3e1dfd25011c2d85330216ef8a81b86f6abebdbdf9b0f127" origin="Generated by Gradle"/>
1300313038
</artifact>
1300413039
</component>
13040+
<component group="io.reactivex.rxjava3" name="rxjava" version="3.1.11">
13041+
<artifact name="rxjava-3.1.11.module">
13042+
<pgp value="E9CC3CD1AE59E851E4DB3FA350FFD7487D34B5B9"/>
13043+
</artifact>
13044+
</component>
1300513045
<component group="io.reactivex.rxjava3" name="rxjava" version="3.1.9">
1300613046
<artifact name="rxjava-3.1.9.jar">
1300713047
<sha256 value="88cba16c7f0fe78a8cc9b8c46469c8596cf166037ce22c2adfc4440cd6312e20" origin="Generated by Gradle"/>

0 commit comments

Comments
 (0)