@@ -42,6 +42,7 @@ window.qBittorrent.Search ??= (() => {
4242 searchSeedsFilterChanged : searchSeedsFilterChanged ,
4343 searchSizeFilterChanged : searchSizeFilterChanged ,
4444 searchSizeFilterPrefixChanged : searchSizeFilterPrefixChanged ,
45+ searchRememberFiltersChanged : searchRememberFiltersChanged ,
4546 closeSearchTab : closeSearchTab ,
4647 } ;
4748 } ;
@@ -128,6 +129,7 @@ window.qBittorrent.Search ??= (() => {
128129
129130 const init = ( ) => {
130131 document . getElementById ( "searchInTorrentName" ) . value = ( window . qBittorrent . ClientData . get ( "search_in_filter" ) === "names" ) ? "names" : "everywhere" ;
132+ document . getElementById ( "searchRememberFilters" ) . checked = ( window . qBittorrent . ClientData . get ( "search_remember_filters" ) === true ) ;
131133 const searchResultsTableContextMenu = new window . qBittorrent . ContextMenu . ContextMenu ( {
132134 targets : "#searchResultsTableDiv tbody tr" ,
133135 menu : "searchResultsTableMenu" ,
@@ -875,21 +877,51 @@ window.qBittorrent.Search ??= (() => {
875877 searchText . filterPattern = "" ;
876878 document . getElementById ( "searchInNameFilter" ) . value = "" ;
877879
878- searchSeedsFilter . min = 0 ;
879- searchSeedsFilter . max = 0 ;
880+ // When the user opted to remember filters, new search tabs start from the
881+ // previously stored values instead of the hardcoded defaults.
882+ const remember = isRememberFiltersEnabled ( ) ;
883+ const clientData = window . qBittorrent . ClientData ;
884+
885+ searchSeedsFilter . min = remember ? Number ( clientData . get ( "search_min_seeds" ) ?? 0 ) : 0 ;
886+ searchSeedsFilter . max = remember ? Number ( clientData . get ( "search_max_seeds" ) ?? 0 ) : 0 ;
880887 document . getElementById ( "searchMinSeedsFilter" ) . value = searchSeedsFilter . min ;
881888 document . getElementById ( "searchMaxSeedsFilter" ) . value = searchSeedsFilter . max ;
882889
883- searchSizeFilter . min = 0 ;
884- searchSizeFilter . minUnit = 2 ; // B = 0, KiB = 1, MiB = 2, GiB = 3, TiB = 4, PiB = 5, EiB = 6
885- searchSizeFilter . max = 0 ;
886- searchSizeFilter . maxUnit = 3 ;
890+ // B = 0, KiB = 1, MiB = 2, GiB = 3, TiB = 4, PiB = 5, EiB = 6
891+ searchSizeFilter . min = remember ? Number ( clientData . get ( "search_min_size" ) ?? 0 ) : 0 ;
892+ searchSizeFilter . minUnit = remember ? Number ( clientData . get ( "search_min_size_unit" ) ?? 2 ) : 2 ;
893+ searchSizeFilter . max = remember ? Number ( clientData . get ( "search_max_size" ) ?? 0 ) : 0 ;
894+ searchSizeFilter . maxUnit = remember ? Number ( clientData . get ( "search_max_size_unit" ) ?? 3 ) : 3 ;
887895 document . getElementById ( "searchMinSizeFilter" ) . value = searchSizeFilter . min ;
888896 document . getElementById ( "searchMinSizePrefix" ) . value = searchSizeFilter . minUnit ;
889897 document . getElementById ( "searchMaxSizeFilter" ) . value = searchSizeFilter . max ;
890898 document . getElementById ( "searchMaxSizePrefix" ) . value = searchSizeFilter . maxUnit ;
891899 } ;
892900
901+ const isRememberFiltersEnabled = ( ) => document . getElementById ( "searchRememberFilters" ) . checked ;
902+
903+ const getCurrentFilterData = ( ) => ( {
904+ search_min_seeds : Number ( document . getElementById ( "searchMinSeedsFilter" ) . value ) ,
905+ search_max_seeds : Number ( document . getElementById ( "searchMaxSeedsFilter" ) . value ) ,
906+ search_min_size : Number ( document . getElementById ( "searchMinSizeFilter" ) . value ) ,
907+ search_min_size_unit : Number ( document . getElementById ( "searchMinSizePrefix" ) . value ) ,
908+ search_max_size : Number ( document . getElementById ( "searchMaxSizeFilter" ) . value ) ,
909+ search_max_size_unit : Number ( document . getElementById ( "searchMaxSizePrefix" ) . value ) ,
910+ } ) ;
911+
912+ const saveFiltersIfRemembered = ( ) => {
913+ if ( isRememberFiltersEnabled ( ) )
914+ window . qBittorrent . ClientData . set ( getCurrentFilterData ( ) ) . catch ( console . error ) ;
915+ } ;
916+
917+ const searchRememberFiltersChanged = ( ) => {
918+ const enabled = isRememberFiltersEnabled ( ) ;
919+ const data = { search_remember_filters : enabled } ;
920+ if ( enabled )
921+ Object . assign ( data , getCurrentFilterData ( ) ) ;
922+ window . qBittorrent . ClientData . set ( data ) . catch ( console . error ) ;
923+ } ;
924+
893925 const getSearchInTorrentName = ( ) => {
894926 return ( document . getElementById ( "searchInTorrentName" ) . value === "names" ) ? "names" : "everywhere" ;
895927 } ;
@@ -904,6 +936,7 @@ window.qBittorrent.Search ??= (() => {
904936 searchSeedsFilter . min = document . getElementById ( "searchMinSeedsFilter" ) . value ;
905937 searchSeedsFilter . max = document . getElementById ( "searchMaxSeedsFilter" ) . value ;
906938
939+ saveFiltersIfRemembered ( ) ;
907940 searchFilterChanged ( ) ;
908941 } ;
909942
@@ -913,6 +946,7 @@ window.qBittorrent.Search ??= (() => {
913946 searchSizeFilter . max = document . getElementById ( "searchMaxSizeFilter" ) . value ;
914947 searchSizeFilter . maxUnit = document . getElementById ( "searchMaxSizePrefix" ) . value ;
915948
949+ saveFiltersIfRemembered ( ) ;
916950 searchFilterChanged ( ) ;
917951 } ;
918952
0 commit comments