|
6 | 6 | */ |
7 | 7 | package it.niedermann.owncloud.notes.persistence; |
8 | 8 |
|
| 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 | + |
9 | 15 | import android.content.Context; |
10 | 16 | import android.util.Log; |
11 | 17 |
|
12 | 18 | import androidx.annotation.NonNull; |
13 | 19 |
|
14 | 20 | import com.nextcloud.android.sso.AccountImporter; |
15 | | -import com.nextcloud.android.sso.api.ParsedResponse; |
16 | 21 | import com.nextcloud.android.sso.exceptions.NextcloudApiNotRespondingException; |
17 | 22 | import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException; |
18 | 23 | import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException; |
| 24 | +import com.nextcloud.android.sso.exceptions.NextcloudNetworkException; |
19 | 25 | import com.nextcloud.android.sso.exceptions.TokenMismatchException; |
20 | 26 | import com.nextcloud.android.sso.model.SingleSignOnAccount; |
| 27 | +import com.owncloud.android.lib.common.utils.Log_OC; |
21 | 28 |
|
22 | 29 | import java.util.ArrayList; |
23 | 30 | import java.util.Calendar; |
|
26 | 33 | import java.util.HashSet; |
27 | 34 | import java.util.List; |
28 | 35 | import java.util.Map; |
29 | | -import java.util.Set; |
30 | 36 |
|
31 | 37 | import it.niedermann.owncloud.notes.BuildConfig; |
32 | 38 | import it.niedermann.owncloud.notes.persistence.entity.Account; |
|
36 | 42 | import it.niedermann.owncloud.notes.shared.model.ISyncCallback; |
37 | 43 | import it.niedermann.owncloud.notes.shared.model.SyncResultStatus; |
38 | 44 | 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; |
46 | 45 |
|
47 | 46 |
|
48 | 47 | /** |
@@ -221,8 +220,13 @@ private boolean pullRemoteChanges() { |
221 | 220 | } |
222 | 221 | localAccount.setModified(accountFromDatabase.getModified()); |
223 | 222 | 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 | + } |
224 | 228 |
|
225 | | - final var fetchResponse = notesAPI.getNotes(localAccount.getModified(), localAccount.getETag()).blockingSingle(); |
| 229 | + final var fetchResponse = notesAPI.getNotes(modified, localAccount.getETag()).blockingSingle(); |
226 | 230 | final var remoteNotes = fetchResponse.getResponse(); |
227 | 231 | final var remoteIDs = new HashSet<Long>(); |
228 | 232 | // pull remote changes: update or create each remote note |
@@ -288,8 +292,12 @@ private boolean pullRemoteChanges() { |
288 | 292 | } |
289 | 293 | } else if (cause.getClass() == NextcloudApiNotRespondingException.class || cause instanceof NextcloudApiNotRespondingException) { |
290 | 294 | apiProvider.invalidateAPICache(ssoAccount); |
| 295 | + } else if (cause.getClass() == NextcloudNetworkException.class) { |
| 296 | + Log.w(TAG, "Network connectivity issue during sync"); |
| 297 | + return true; |
291 | 298 | } |
292 | 299 | } |
| 300 | + |
293 | 301 | exceptions.add(t); |
294 | 302 | return false; |
295 | 303 | } |
|
0 commit comments