1313import androidx .annotation .Nullable ;
1414import androidx .annotation .WorkerThread ;
1515
16+ import com .google .gson .JsonSyntaxException ;
1617import com .nextcloud .android .sso .model .SingleSignOnAccount ;
1718
19+ import io .reactivex .Observable ;
1820import it .niedermann .owncloud .notes .shared .model .Capabilities ;
1921
2022@ WorkerThread
@@ -27,6 +29,8 @@ public class CapabilitiesClient {
2729 @ WorkerThread
2830 public static Capabilities getCapabilities (@ NonNull Context context , @ NonNull SingleSignOnAccount ssoAccount , @ Nullable String lastETag , @ NonNull ApiProvider apiProvider ) throws Throwable {
2931 final var ocsAPI = apiProvider .getOcsAPI (context , ssoAccount );
32+ final var repository = NotesRepository .getInstance (context );
33+
3034 try {
3135 final var response = ocsAPI .getCapabilities (lastETag ).blockingSingle ();
3236 final var capabilities = response .getResponse ().ocs .data ;
@@ -37,12 +41,16 @@ public static Capabilities getCapabilities(@NonNull Context context, @NonNull Si
3741 Log .w (TAG , "Response headers of capabilities are null" );
3842 }
3943
40- final var repository = NotesRepository .getInstance (context );
4144 repository .insertCapabilities (capabilities );
42-
4345 return capabilities ;
4446 } catch (RuntimeException e ) {
4547 final var cause = e .getCause ();
48+
49+ if (e instanceof JsonSyntaxException || (cause instanceof JsonSyntaxException )) {
50+ Log .w (TAG , "JSON parse error, likely 304 Not Modified" );
51+ return repository .getCapabilities ();
52+ }
53+
4654 if (cause != null ) {
4755 throw cause ;
4856 } else {
0 commit comments