Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2021-03-24 15:06:00 +0300
committerGitHub <noreply@github.com>2021-03-24 15:06:00 +0300
commitefd3ad59e17fadb5c7638d51f8ae36d538be88b3 (patch)
tree21eb62122a48855bfa4acfa55f1fad121b077d7c /app
parent0e7f8d449e6780120ef641c07cca04ca8e017046 (diff)
Provide setting to disable eTags
See #888
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java19
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/SyncHelper.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/OcsProjectDataProvider.java1
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java4
-rw-r--r--app/src/main/res/drawable/ic_baseline_speed_24.xml5
-rw-r--r--app/src/main/res/values/setup.xml1
-rw-r--r--app/src/main/res/values/strings.xml2
-rw-r--r--app/src/main/res/xml/settings.xml7
9 files changed, 39 insertions, 8 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java
index 988753d48..9e1b7d7f4 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java
@@ -62,6 +62,9 @@ public interface DeckAPI {
@GET("v1.0/boards")
Observable<ParsedResponse<List<FullBoard>>> getBoards(@Query("details") boolean verbose, @Header(MODIFIED_SINCE_HEADER) String lastSync, @Header(IF_NONE_MATCH) String eTag);
+ @GET("v1.0/boards")
+ Observable<ParsedResponse<List<FullBoard>>> getBoards(@Query("details") boolean verbose, @Header(MODIFIED_SINCE_HEADER) String lastSync);
+
// Stacks
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java
index a1051b98c..8cadbaec8 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java
@@ -53,6 +53,8 @@ import static it.niedermann.nextcloud.deck.util.MimeTypeUtil.TEXT_PLAIN;
public class ServerAdapter {
private final String prefKeyWifiOnly;
+ private final String prefKeyEtags;
+ final SharedPreferences sharedPreferences;
@NonNull
private final Context applicationContext;
@@ -65,7 +67,9 @@ public class ServerAdapter {
public ServerAdapter(@NonNull Context applicationContext, @Nullable String ssoAccountName) {
this.applicationContext = applicationContext;
prefKeyWifiOnly = applicationContext.getResources().getString(R.string.pref_key_wifi_only);
+ prefKeyEtags = applicationContext.getResources().getString(R.string.pref_key_etags);
provider = new ApiProvider(applicationContext, ssoAccountName);
+ sharedPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext);
}
public String getServerUrl() {
@@ -90,7 +94,6 @@ public class ServerAdapter {
public boolean hasInternetConnection() {
ConnectivityManager cm = (ConnectivityManager) applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
- SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext);
if (sharedPreferences.getBoolean(prefKeyWifiOnly, false)) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
Network network = cm.getActiveNetwork();
@@ -106,8 +109,6 @@ public class ServerAdapter {
}
return networkInfo.isConnected();
}
-
-
} else {
return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected();
}
@@ -128,9 +129,13 @@ public class ServerAdapter {
}
public void getBoards(IResponseCallback<ParsedResponse<List<FullBoard>>> responseCallback) {
- RequestHelper.request(provider, () ->
- provider.getDeckAPI().getBoards(true, getLastSyncDateFormatted(responseCallback.getAccount().getId()), responseCallback.getAccount().getBoardsEtag()),
- responseCallback);
+ RequestHelper.request(provider, () -> isEtagsEnabled()
+ ? provider.getDeckAPI().getBoards(true, getLastSyncDateFormatted(responseCallback.getAccount().getId()), responseCallback.getAccount().getBoardsEtag())
+ : provider.getDeckAPI().getBoards(true, getLastSyncDateFormatted(responseCallback.getAccount().getId())), responseCallback);
+ }
+
+ public boolean isEtagsEnabled() {
+ return sharedPreferences.getBoolean(prefKeyEtags, true);
}
public void getCapabilities(String eTag, IResponseCallback<ParsedResponse<Capabilities>> responseCallback) {
@@ -224,7 +229,7 @@ public class ServerAdapter {
ensureInternetConnection();
RequestHelper.request(provider, () -> {
final Account account = responseCallback.getAccount();
- if(account != null && account.getServerDeckVersionAsObject().supportsFileAttachments()) {
+ if (account != null && account.getServerDeckVersionAsObject().supportsFileAttachments()) {
return provider.getDeckAPI().getCard_1_1(boardId, stackId, cardId, getLastSyncDateFormatted(responseCallback.getAccount().getId()));
}
return provider.getDeckAPI().getCard_1_0(boardId, stackId, cardId, getLastSyncDateFormatted(responseCallback.getAccount().getId()));
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/SyncHelper.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/SyncHelper.java
index f0d912639..1e683b0c5 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/SyncHelper.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/SyncHelper.java
@@ -27,11 +27,14 @@ public class SyncHelper {
private long accountId;
private IResponseCallback<Boolean> responseCallback;
private final Instant lastSync;
+ private final boolean etagsEnabled;
public SyncHelper(ServerAdapter serverAdapter, DataBaseAdapter dataBaseAdapter, Instant lastSync) {
this.serverAdapter = serverAdapter;
this.dataBaseAdapter = dataBaseAdapter;
this.lastSync = lastSync;
+ // check only once per sync
+ this.etagsEnabled = serverAdapter.isEtagsEnabled();
}
// Sync Server -> App
@@ -59,7 +62,7 @@ public class SyncHelper {
DeckLog.warn("Conflicting changes on entity: " + existingEntity);
// TODO: what to do?
} else {
- if (entityFromServer.getEtag() != null && entityFromServer.getEtag().equals(existingEntity.getEtag())) {
+ if (etagsEnabled && entityFromServer.getEtag() != null && entityFromServer.getEtag().equals(existingEntity.getEtag())) {
DeckLog.log("[" + provider.getClass().getSimpleName() + "] ETags do match! skipping " + existingEntity.getClass().getSimpleName() + " with localId: " + existingEntity.getLocalId());
continue;
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/OcsProjectDataProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/OcsProjectDataProvider.java
index b9bfb8b31..5379be6d9 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/OcsProjectDataProvider.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/OcsProjectDataProvider.java
@@ -33,6 +33,7 @@ public class OcsProjectDataProvider extends AbstractSyncDataProvider<OcsProject>
public void onError(Throwable throwable) {
super.onError(throwable);
// dont break the sync!
+ // TODO i got here HTTP 404 once, maybe this should be considered?
DeckLog.logError(throwable);
responder.onResponse(Collections.emptyList());
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
index d002bb09b..b22b58a08 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
@@ -24,6 +24,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
private BrandedSwitchPreference wifiOnlyPref;
private BrandedSwitchPreference compactPref;
private BrandedSwitchPreference debuggingPref;
+ private BrandedSwitchPreference eTagPref;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
@@ -75,6 +76,8 @@ public class SettingsFragment extends PreferenceFragmentCompat {
} else {
DeckLog.error("Could not find preference with key: \"" + getString(R.string.pref_key_debugging) + "\"");
}
+
+ eTagPref = findPreference(getString(R.string.pref_key_etags));
}
@Override
@@ -85,6 +88,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
wifiOnlyPref.applyBrand(mainColor);
compactPref.applyBrand(mainColor);
debuggingPref.applyBrand(mainColor);
+ eTagPref.applyBrand(mainColor);
});
}
}
diff --git a/app/src/main/res/drawable/ic_baseline_speed_24.xml b/app/src/main/res/drawable/ic_baseline_speed_24.xml
new file mode 100644
index 000000000..4f24621a4
--- /dev/null
+++ b/app/src/main/res/drawable/ic_baseline_speed_24.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#757575"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M20.38,8.57l-1.23,1.85a8,8 0,0 1,-0.22 7.58L5.07,18A8,8 0,0 1,15.58 6.85l1.85,-1.23A10,10 0,0 0,3.35 19a2,2 0,0 0,1.72 1h13.85a2,2 0,0 0,1.74 -1,10 10,0 0,0 -0.27,-10.44zM10.59,15.41a2,2 0,0 0,2.83 0l5.66,-8.49 -8.49,5.66a2,2 0,0 0,0 2.83z"/>
+</vector>
diff --git a/app/src/main/res/values/setup.xml b/app/src/main/res/values/setup.xml
index 51dd29465..f9fc4f697 100644
--- a/app/src/main/res/values/setup.xml
+++ b/app/src/main/res/values/setup.xml
@@ -10,6 +10,7 @@
<string name="pref_key_compact" translatable="false">compact</string>
<string name="pref_key_background_sync" translatable="false">backgroundSync</string>
<string name="pref_key_debugging" translatable="false">debugging</string>
+ <string name="pref_key_etags" translatable="false">eTags</string>
<string name="pref_value_background_sync_off">off</string>
<string name="pref_value_background_15_minutes">15_minutes</string>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4ae9abd36..94a85f592 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -145,6 +145,8 @@
<string name="settings_branding_title">Branding</string>
<string name="settings_compact_title">Compact mode</string>
<string name="settings_debugging">Debug logs</string>
+ <string name="settings_etags">Use ETags</string>
+ <string name="settings_etags_summary">Speeds up synchronization</string>
<string name="settings_background_sync">Background synchronization</string>
<string name="pref_value_wifi_and_mobile">Sync on Wi-Fi and mobile data</string>
<string name="pref_value_wifi_only">Sync only on Wi-Fi</string>
diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml
index cccee377e..a75c1630e 100644
--- a/app/src/main/res/xml/settings.xml
+++ b/app/src/main/res/xml/settings.xml
@@ -42,5 +42,12 @@
android:key="@string/pref_key_debugging"
android:title="@string/settings_debugging"
app:defaultValue="false" />
+
+ <it.niedermann.nextcloud.deck.ui.branding.BrandedSwitchPreference
+ android:icon="@drawable/ic_baseline_speed_24"
+ android:key="@string/pref_key_etags"
+ android:summary="@string/settings_etags_summary"
+ android:title="@string/settings_etags"
+ app:defaultValue="true" />
</it.niedermann.nextcloud.deck.ui.branding.BrandedPreferenceCategory>
</PreferenceScreen>