mirror of
https://github.com/transmission/transmission.git
synced 2025-12-20 02:18:42 +00:00
fix: support sort mode, show mode in api_compat (#7952)
* refactor: add api-compat for sort-mode * refactor: add api-compat for show-mode * test: update tests * chore: make clang-tidy happy
This commit is contained in:
@@ -245,7 +245,7 @@ auto constexpr RpcKeys = std::array<ApiKey, 212U>{ {
|
||||
{ TR_KEY_torrent_verify, TR_KEY_torrent_verify_kebab },
|
||||
} };
|
||||
|
||||
auto constexpr SessionKeys = std::array<ApiKey, 139U>{ {
|
||||
auto constexpr SessionKeys = std::array<ApiKey, 157U>{ {
|
||||
{ TR_KEY_activity_date, TR_KEY_activity_date_kebab_APICOMPAT },
|
||||
{ TR_KEY_added_date, TR_KEY_added_date_kebab_APICOMPAT },
|
||||
{ TR_KEY_alt_speed_down, TR_KEY_alt_speed_down_kebab },
|
||||
@@ -349,15 +349,33 @@ auto constexpr SessionKeys = std::array<ApiKey, 139U>{ {
|
||||
{ TR_KEY_seed_queue_size, TR_KEY_seed_queue_size_kebab },
|
||||
{ TR_KEY_seeding_time_seconds, TR_KEY_seeding_time_seconds_kebab_APICOMPAT },
|
||||
{ TR_KEY_session_count, TR_KEY_session_count_kebab_APICOMPAT },
|
||||
{ TR_KEY_show_active, TR_KEY_show_active_kebab_APICOMPAT },
|
||||
{ TR_KEY_show_all, TR_KEY_show_all_kebab_APICOMPAT },
|
||||
{ TR_KEY_show_backup_trackers, TR_KEY_show_backup_trackers_kebab },
|
||||
{ TR_KEY_show_downloading, TR_KEY_show_downloading_kebab_APICOMPAT },
|
||||
{ TR_KEY_show_error, TR_KEY_show_error_kebab_APICOMPAT },
|
||||
{ TR_KEY_show_extra_peer_details, TR_KEY_show_extra_peer_details_kebab },
|
||||
{ TR_KEY_show_filterbar, TR_KEY_show_filterbar_kebab },
|
||||
{ TR_KEY_show_finished, TR_KEY_show_finished_kebab_APICOMPAT },
|
||||
{ TR_KEY_show_notification_area_icon, TR_KEY_show_notification_area_icon_kebab },
|
||||
{ TR_KEY_show_options_window, TR_KEY_show_options_window_kebab },
|
||||
{ TR_KEY_show_paused, TR_KEY_show_paused_kebab_APICOMPAT },
|
||||
{ TR_KEY_show_seeding, TR_KEY_show_seeding_kebab_APICOMPAT },
|
||||
{ TR_KEY_show_statusbar, TR_KEY_show_statusbar_kebab },
|
||||
{ TR_KEY_show_toolbar, TR_KEY_show_toolbar_kebab },
|
||||
{ TR_KEY_show_tracker_scrapes, TR_KEY_show_tracker_scrapes_kebab },
|
||||
{ TR_KEY_show_verifying, TR_KEY_show_verifying_kebab_APICOMPAT },
|
||||
{ TR_KEY_sleep_per_seconds_during_verify, TR_KEY_sleep_per_seconds_during_verify_kebab },
|
||||
{ TR_KEY_sort_by_activity, TR_KEY_sort_by_activity_kebab_APICOMPAT },
|
||||
{ TR_KEY_sort_by_age, TR_KEY_sort_by_age_kebab_APICOMPAT },
|
||||
{ TR_KEY_sort_by_eta, TR_KEY_sort_by_eta_kebab_APICOMPAT },
|
||||
{ TR_KEY_sort_by_id, TR_KEY_sort_by_id_kebab_APICOMPAT },
|
||||
{ TR_KEY_sort_by_name, TR_KEY_sort_by_name_kebab_APICOMPAT },
|
||||
{ TR_KEY_sort_by_progress, TR_KEY_sort_by_progress_kebab_APICOMPAT },
|
||||
{ TR_KEY_sort_by_queue, TR_KEY_sort_by_queue_kebab_APICOMPAT },
|
||||
{ TR_KEY_sort_by_ratio, TR_KEY_sort_by_ratio_kebab_APICOMPAT },
|
||||
{ TR_KEY_sort_by_size, TR_KEY_sort_by_size_kebab_APICOMPAT },
|
||||
{ TR_KEY_sort_by_state, TR_KEY_sort_by_state_kebab_APICOMPAT },
|
||||
{ TR_KEY_sort_mode, TR_KEY_sort_mode_kebab },
|
||||
{ TR_KEY_sort_reversed, TR_KEY_sort_reversed_kebab },
|
||||
{ TR_KEY_speed_Bps, TR_KEY_speed_Bps_kebab_APICOMPAT },
|
||||
@@ -572,14 +590,19 @@ struct CloneState
|
||||
{
|
||||
auto const pop = state_.convert_strings;
|
||||
auto new_key = convert_key(key, state_.style, state_.is_rpc);
|
||||
auto const special =
|
||||
(state_.is_rpc &&
|
||||
|
||||
auto const special_rpc = state_.is_rpc &&
|
||||
(new_key == TR_KEY_method || new_key == TR_KEY_fields || new_key == TR_KEY_ids ||
|
||||
new_key == TR_KEY_torrents));
|
||||
new_key == TR_KEY_torrents);
|
||||
// TODO(ckerr): replace `new_key == TR_KEY_TORRENTS` on previous line with logic to turn on convert
|
||||
// if it's an array inside an array val whose key was `torrents`.
|
||||
// This is for the edge case of table mode: `torrents : [ [ 'key1', 'key2' ], [ ... ] ]`
|
||||
state_.convert_strings |= special;
|
||||
state_.convert_strings |= special_rpc;
|
||||
|
||||
auto const special_settings = !state_.is_rpc &&
|
||||
(new_key == TR_KEY_sort_mode || key == TR_KEY_sort_mode || new_key == TR_KEY_filter_mode ||
|
||||
key == TR_KEY_filter_mode);
|
||||
state_.convert_strings |= special_settings;
|
||||
|
||||
// Crazy case: total_size in free-space, totalSize in torrent-get
|
||||
if (state_.is_free_space_response && new_key == TR_KEY_total_size_camel)
|
||||
|
||||
@@ -568,22 +568,38 @@ auto constexpr MyStatic = std::array<std::string_view, TR_N_KEYS>{
|
||||
"session_id"sv, // rpc
|
||||
"session_set"sv, // rpc
|
||||
"session_stats"sv, // rpc
|
||||
"show-active",
|
||||
"show-all",
|
||||
"show-backup-trackers"sv, // gtk app, qt app
|
||||
"show-downloading",
|
||||
"show-error",
|
||||
"show-extra-peer-details"sv, // gtk app
|
||||
"show-filterbar"sv, // gtk app, qt app
|
||||
"show-finished",
|
||||
"show-notification-area-icon"sv, // gtk app, qt app
|
||||
"show-options-window"sv, // gtk app, qt app
|
||||
"show-paused",
|
||||
"show-seeding",
|
||||
"show-statusbar"sv, // gtk app, qt app
|
||||
"show-toolbar"sv, // gtk app, qt app
|
||||
"show-tracker-scrapes"sv, // gtk app, qt app
|
||||
"show-verifying",
|
||||
"show_active",
|
||||
"show_all",
|
||||
"show_backup_trackers"sv, // gtk app, qt app
|
||||
"show_downloading",
|
||||
"show_error",
|
||||
"show_extra_peer_details"sv, // gtk app
|
||||
"show_filterbar"sv, // gtk app, qt app
|
||||
"show_finished",
|
||||
"show_notification_area_icon"sv, // gtk app, qt app
|
||||
"show_options_window"sv, // gtk app, qt app
|
||||
"show_paused",
|
||||
"show_seeding",
|
||||
"show_statusbar"sv, // gtk app, qt app
|
||||
"show_toolbar"sv, // gtk app, qt app
|
||||
"show_tracker_scrapes"sv, // gtk app, qt app
|
||||
"show_verifying",
|
||||
"sitename"sv, // rpc
|
||||
"size-bytes"sv, // rpc
|
||||
"size-units"sv, // rpc
|
||||
@@ -594,8 +610,28 @@ auto constexpr MyStatic = std::array<std::string_view, TR_N_KEYS>{
|
||||
"sleep-per-seconds-during-verify"sv, // tr_session::Settings
|
||||
"sleep_per_seconds_during_verify"sv, // tr_session::Settings
|
||||
"socket_address"sv, // .resume
|
||||
"sort-by-activity", // gtk app, qt app
|
||||
"sort-by-age", // gtk app, qt app
|
||||
"sort-by-eta", // gtk app, qt app
|
||||
"sort-by-id", // gtk app, qt app
|
||||
"sort-by-name", // gtk app, qt app
|
||||
"sort-by-progress", // gtk app, qt app
|
||||
"sort-by-queue", // gtk app, qt app
|
||||
"sort-by-ratio", // gtk app, qt app
|
||||
"sort-by-size", // gtk app, qt app
|
||||
"sort-by-state", // gtk app, qt app
|
||||
"sort-mode"sv, // gtk app, qt app
|
||||
"sort-reversed"sv, // gtk app, qt app
|
||||
"sort_by_activity", // gtk app, qt app
|
||||
"sort_by_age", // gtk app, qt app
|
||||
"sort_by_eta", // gtk app, qt app
|
||||
"sort_by_id", // gtk app, qt app
|
||||
"sort_by_name", // gtk app, qt app
|
||||
"sort_by_progress", // gtk app, qt app
|
||||
"sort_by_queue", // gtk app, qt app
|
||||
"sort_by_ratio", // gtk app, qt app
|
||||
"sort_by_size", // gtk app, qt app
|
||||
"sort_by_state", // gtk app, qt app
|
||||
"sort_mode"sv, // gtk app, qt app
|
||||
"sort_reversed"sv, // gtk app, qt app
|
||||
"source"sv, // .torrent
|
||||
|
||||
@@ -581,22 +581,38 @@ enum // NOLINT(performance-enum-size)
|
||||
TR_KEY_session_id,
|
||||
TR_KEY_session_set,
|
||||
TR_KEY_session_stats,
|
||||
TR_KEY_show_active_kebab_APICOMPAT,
|
||||
TR_KEY_show_all_kebab_APICOMPAT,
|
||||
TR_KEY_show_backup_trackers_kebab,
|
||||
TR_KEY_show_downloading_kebab_APICOMPAT,
|
||||
TR_KEY_show_error_kebab_APICOMPAT,
|
||||
TR_KEY_show_extra_peer_details_kebab,
|
||||
TR_KEY_show_filterbar_kebab,
|
||||
TR_KEY_show_finished_kebab_APICOMPAT,
|
||||
TR_KEY_show_notification_area_icon_kebab,
|
||||
TR_KEY_show_options_window_kebab,
|
||||
TR_KEY_show_paused_kebab_APICOMPAT,
|
||||
TR_KEY_show_seeding_kebab_APICOMPAT,
|
||||
TR_KEY_show_statusbar_kebab,
|
||||
TR_KEY_show_toolbar_kebab,
|
||||
TR_KEY_show_tracker_scrapes_kebab,
|
||||
TR_KEY_show_verifying_kebab_APICOMPAT,
|
||||
TR_KEY_show_active,
|
||||
TR_KEY_show_all,
|
||||
TR_KEY_show_backup_trackers,
|
||||
TR_KEY_show_downloading,
|
||||
TR_KEY_show_error,
|
||||
TR_KEY_show_extra_peer_details,
|
||||
TR_KEY_show_filterbar,
|
||||
TR_KEY_show_finished,
|
||||
TR_KEY_show_notification_area_icon,
|
||||
TR_KEY_show_options_window,
|
||||
TR_KEY_show_paused,
|
||||
TR_KEY_show_seeding,
|
||||
TR_KEY_show_statusbar,
|
||||
TR_KEY_show_toolbar,
|
||||
TR_KEY_show_tracker_scrapes,
|
||||
TR_KEY_show_verifying,
|
||||
TR_KEY_sitename,
|
||||
TR_KEY_size_bytes_kebab,
|
||||
TR_KEY_size_units_kebab,
|
||||
@@ -607,8 +623,28 @@ enum // NOLINT(performance-enum-size)
|
||||
TR_KEY_sleep_per_seconds_during_verify_kebab,
|
||||
TR_KEY_sleep_per_seconds_during_verify,
|
||||
TR_KEY_socket_address,
|
||||
TR_KEY_sort_by_activity_kebab_APICOMPAT,
|
||||
TR_KEY_sort_by_age_kebab_APICOMPAT,
|
||||
TR_KEY_sort_by_eta_kebab_APICOMPAT,
|
||||
TR_KEY_sort_by_id_kebab_APICOMPAT,
|
||||
TR_KEY_sort_by_name_kebab_APICOMPAT,
|
||||
TR_KEY_sort_by_progress_kebab_APICOMPAT,
|
||||
TR_KEY_sort_by_queue_kebab_APICOMPAT,
|
||||
TR_KEY_sort_by_ratio_kebab_APICOMPAT,
|
||||
TR_KEY_sort_by_size_kebab_APICOMPAT,
|
||||
TR_KEY_sort_by_state_kebab_APICOMPAT,
|
||||
TR_KEY_sort_mode_kebab,
|
||||
TR_KEY_sort_reversed_kebab,
|
||||
TR_KEY_sort_by_activity,
|
||||
TR_KEY_sort_by_age,
|
||||
TR_KEY_sort_by_eta,
|
||||
TR_KEY_sort_by_id,
|
||||
TR_KEY_sort_by_name,
|
||||
TR_KEY_sort_by_progress,
|
||||
TR_KEY_sort_by_queue,
|
||||
TR_KEY_sort_by_ratio,
|
||||
TR_KEY_sort_by_size,
|
||||
TR_KEY_sort_by_state,
|
||||
TR_KEY_sort_mode,
|
||||
TR_KEY_sort_reversed,
|
||||
TR_KEY_source,
|
||||
|
||||
@@ -459,7 +459,7 @@ constexpr std::string_view CurrentSettingsJson = R"json({
|
||||
"download_queue_enabled": true,
|
||||
"download_queue_size": 5,
|
||||
"encryption": 1,
|
||||
"filter_mode": "show-all",
|
||||
"filter_mode": "show_all",
|
||||
"filter_trackers": "",
|
||||
"idle_seeding_limit": 30,
|
||||
"idle_seeding_limit_enabled": false,
|
||||
@@ -516,7 +516,7 @@ constexpr std::string_view CurrentSettingsJson = R"json({
|
||||
"show_toolbar": true,
|
||||
"show_tracker_scrapes": false,
|
||||
"sleep_per_seconds_during_verify": 100,
|
||||
"sort_mode": "sort-by-name",
|
||||
"sort_mode": "sort_by_name",
|
||||
"sort_reversed": false,
|
||||
"speed_limit_down": 100,
|
||||
"speed_limit_down_enabled": false,
|
||||
|
||||
Reference in New Issue
Block a user