Skip to content

Commit

Permalink
Fix minimum free disk space setting not working (fixes #277) (#278)
Browse files Browse the repository at this point in the history
* WIP

* Revert "WIP"

This reverts commit 98b34c4.

* WIP

* Revert "WIP"

This reverts commit 3b9fc96.

* Add de/serializer for MinDiskFree

* Move MinDiskFree out of Folder

* Move MinDiskFree out of Folder (2)

* Revert "Move MinDiskFree out of Folder (2)"

This reverts commit 65f87db.

* Revert "Move MinDiskFree out of Folder"

This reverts commit b71350b.

* Revert "Add de/serializer for MinDiskFree"

This reverts commit 5827426.

* RestApi: Add MinDiskFreeSerializer, MinDiskFreeDeserializer

* Revert "RestApi: Add MinDiskFreeSerializer, MinDiskFreeDeserializer"

This reverts commit 3922f24.

* Test

* Revert "Test"

This reverts commit 3550095.

* FolderActivity/DeviceActivity: Fix restApi unavailable in onCreate()

* Model/Folder#MinDiskFree: Initialize members (fixes #277)

* ConfigXml#getFolders: Add MinDiskFree (fixes #277)

* ConfigXml: Write back minDiskFree (fixes #277)

* Ignore notices about updating gradle dependencies

* ConfigXml: Make number parsing more safe

* FolderActivity#initFolder: Add new Folder.MinDiskFree

* Handle minDiskFree.value as String instead of float

* Revert "Handle minDiskFree.value as String instead of float"

This reverts commit 0552cfc.

* WIP

* Revert "WIP"

This reverts commit 0a3df91.

* RestApi: Avoid creating duplicate Gson() instances

* Model/Folder: Use Integer instead of Float

See gson glitch:
google/gson#1290
google/gson#968

* Try MinDiskFree.value as Long instead of Integer

* Revert "Try MinDiskFree.value as Long instead of Integer"

This reverts commit d358862.

* Revert "Model/Folder: Use Integer instead of Float"

This reverts commit ca3931b.

* Update model/Options: MinHomeDiskFree (fixes #277)
  • Loading branch information
Catfriend1 committed Jan 27, 2019
1 parent fb07486 commit 5911914
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 5 deletions.
Expand Up @@ -655,6 +655,7 @@ private void initFolder() {
mFolder.rescanIntervalS = 3600;
mFolder.paused = false;
mFolder.type = Constants.FOLDER_TYPE_SEND_RECEIVE; // Default for {@link #checkWriteAndUpdateUI}.
mFolder.minDiskFree = new Folder.MinDiskFree();
mFolder.versioning = new Folder.Versioning();
}

Expand Down
Expand Up @@ -51,8 +51,8 @@ public static class Versioning implements Serializable {
}

public static class MinDiskFree {
public float value;
public String unit;
public float value = 1;
public String unit = "%";
}

public void addDevice(final Device device) {
Expand Down
Expand Up @@ -29,16 +29,23 @@ public class Options {
public int progressUpdateIntervalS;
public boolean symlinksEnabled;
public boolean limitBandwidthInLan;
public int minHomeDiskFreePct;
public String releasesURL;
public String[] alwaysLocalNets;
public boolean overwriteRemoteDeviceNamesOnConnect;
public int tempIndexMinBlocks;
public String defaultFolderPath;

// Since v0.14.28, Issue #3307, PR #4087
public MinHomeDiskFree minHomeDiskFree;

// Since v1.0.0, see https://github.com/syncthing/syncthing/pull/4888
public int maxConcurrentScans;

public static class MinHomeDiskFree {
public float value = 1;
public String unit = "%";
}

public static final int USAGE_REPORTING_UNDECIDED = 0;
public static final int USAGE_REPORTING_DENIED = -1;

Expand Down
31 changes: 29 additions & 2 deletions app/src/main/java/com/nutomic/syncthingandroid/util/ConfigXml.java
Expand Up @@ -446,6 +446,16 @@ public List<Folder> getFolders() {
}
}

// MinDiskFree
/*
<minDiskFree unit="MB">5</minDiskFree>
*/
folder.minDiskFree = new Folder.MinDiskFree();
Element elementMinDiskFree = (Element) r.getElementsByTagName("minDiskFree").item(0);
folder.minDiskFree.unit = getAttributeOrDefault(elementMinDiskFree, "unit", "%");
folder.minDiskFree.value = getContentOrDefault(elementMinDiskFree, 1f);
// Log.v(TAG, "folder.minDiskFree.unit=" + folder.minDiskFree.unit + ", folder.minDiskFree.value=" + folder.minDiskFree.value);

// Versioning
/*
<versioning></versioning>
Expand Down Expand Up @@ -533,8 +543,25 @@ public void updateFolder(final Folder folder) {
elementDevice.setAttribute("introducedBy", device.introducedBy);
}

// minDiskFree
if (folder.minDiskFree != null) {
// Pass 1: Remove all minDiskFree nodes from XML (usually one)
Element elementMinDiskFree = (Element) r.getElementsByTagName("minDiskFree").item(0);
if (elementMinDiskFree != null) {
Log.v(TAG, "updateFolder: nodeMinDiskFree: Removing minDiskFree node");
removeChildElementFromTextNode(r, elementMinDiskFree);
}

// Pass 2: Add minDiskFree node from the POJO model to XML.
Node nodeMinDiskFree = mConfig.createElement("minDiskFree");
r.appendChild(nodeMinDiskFree);
elementMinDiskFree = (Element) nodeMinDiskFree;
elementMinDiskFree.setAttribute("unit", folder.minDiskFree.unit);
setConfigElement(r, "minDiskFree", Float.toString(folder.minDiskFree.value));
}

// Versioning
// Pass 1: Remove all versioning nodes in XML (usually one)
// Pass 1: Remove all versioning nodes from XML (usually one)
/*
NodeList nlVersioning = r.getElementsByTagName("versioning");
for (int j = nlVersioning.getLength() - 1; j >= 0; j--) {
Expand All @@ -548,7 +575,7 @@ public void updateFolder(final Folder folder) {
removeChildElementFromTextNode(r, elementVersioning);
}

// Pass 2: Add versioning node from the POJO model.
// Pass 2: Add versioning node from the POJO model to XML.
Node nodeVersioning = mConfig.createElement("versioning");
r.appendChild(nodeVersioning);
elementVersioning = (Element) nodeVersioning;
Expand Down

0 comments on commit 5911914

Please sign in to comment.