Modify CategoryOptions serialization to JSON

When a category's download path option is set to "Default", its `downloadPath` is serialized into JSON as `undefined`. This results in the `downloadPath` field being omitted from `torrents/categories` and `torrents/maindata` payloads (as is expected with an `undefined` value).

The use of `undefined` here causes an issue in the WebUI. Specifically, when the category previously contained a value for this field (i.e. download path option set to either "Yes" or "No"), the `processMap` logic in `SyncController` does not detect the removal this field. This results in the category's new `downloadPath` not being properly sent to the client. By switching from `undefined` to `null`, we ensure that the `downloadPath` value is always included in the category's payload. This allows `processMap` to properly detect whenever the value changes.

This change is backwards compatible with existing categories.json files. Older qBittorrent versions should also be able to parse new categories.json files containing `null`.

More context: cd3fbfbf9b (r2173148696)

PR #22958.
This commit is contained in:
Thomas Piccirello
2025-07-06 12:17:57 -04:00
committed by GitHub
parent c5a282a02f
commit 2ebe8595c9
3 changed files with 7 additions and 2 deletions

View File

@@ -1,5 +1,10 @@
# WebAPI Changelog
## 2.11.10
* [#22932](https://github.com/qbittorrent/qBittorrent/pull/22932)
* `torrents/categories` and `sync/maindata` now serialize categories' `downloadPath` to `null`, rather than `undefined`
## 2.11.9
* [#21015](https://github.com/qbittorrent/qBittorrent/pull/21015)