@@ -87,7 +87,7 @@ const tags = useTags();
8787const rest = useRestApi ();
8888
8989const defaultPageSize = 50 ;
90- const queryPageSize = parseInt (route .query ?.pageSize as string , 10 );
90+ const queryPageSize = isNaN ( route . query ?. pageSize ) ? defaultPageSize : parseInt (route .query ?.pageSize as string , 10 );
9191const pageSize: Ref <number > = ref (isNaN (queryPageSize ) ? defaultPageSize : queryPageSize );
9292const queryCategoryFilters = route .query ?.categoryFilters as string [] || [];
9393const categoryFilters: Ref <string []> = ref (Array .isArray (queryCategoryFilters ) ? queryCategoryFilters : [queryCategoryFilters ]);
@@ -113,11 +113,19 @@ const selectedSorting = computed({
113113watch (() => route .fullPath , () => {
114114 searchQuery .value = route .query .search as string ?? null ;
115115 itemsSorting .value = route .query .sorting as string ?? null ;
116- pageSize .value = route .query .pageSize as number ?? null ;
117- currentPage .value = route .query .page as number ?? null ;
116+ pageSize .value = isNaN ( route .query .pageSize ) ? parseInt ( route . query . pageSize ) : defaultPageSize ;
117+ currentPage .value = isNaN ( route .query .page ) ? parseInt ( route . query . page ) : 1 ;
118118 layout .value = route .query .layout as string ?? null ;
119- categoryFilters .value = route .query .categoryFilters as string [] ?? null ;
120- tagFilters .value = route .query .tagFilters as string [] ?? null ;
119+
120+ // Ensure categoryFilters is always an array of strings
121+ categoryFilters .value = Array .isArray (route .query .categoryFilters )
122+ ? route .query .categoryFilters as string []
123+ : (route .query .categoryFilters ? [route .query .categoryFilters as string ] : []);
124+
125+ // Ensure tagFilters is always an array of strings
126+ tagFilters .value = Array .isArray (route .query .tagFilters )
127+ ? route .query .tagFilters as string []
128+ : (route .query .tagFilters ? [route .query .tagFilters as string ] : []);
121129});
122130
123131watch ([searchQuery , itemsSorting , pageSize , currentPage , layout , categoryFilters , tagFilters ], () => {
@@ -128,8 +136,8 @@ watch([searchQuery, itemsSorting, pageSize, currentPage, layout, categoryFilters
128136 pageSize: pageSize .value ,
129137 page: currentPage .value ,
130138 layout: layout .value ,
131- categoryFilters: categoryFilters .value ,
132- tagFilters: tagFilters .value
139+ categoryFilters: categoryFilters .value . length > 0 ? categoryFilters . value : [] ,
140+ tagFilters: tagFilters .value . length > 0 ? tagFilters . value : []
133141 }
134142 });
135143
@@ -139,8 +147,8 @@ watch([searchQuery, itemsSorting, pageSize, currentPage, layout, categoryFilters
139147onActivated (() => {
140148 searchQuery .value = route .query .search as string ?? null ;
141149 itemsSorting .value = route .query .sorting as string ?? null ;
142- pageSize .value = route .query .pageSize as number ?? null ;
143- currentPage .value = route .query .page as number ?? null ;
150+ pageSize .value = route .query .pageSize as number ?? defaultPageSize ;
151+ currentPage .value = route .query .page as number ?? 1 ;
144152 layout .value = route .query .layout as string ?? null ;
145153 categoryFilters .value = route .query .categoryFilters as string [] ?? null ;
146154 tagFilters .value = route .query .tagFilters as string [] ?? null ;
@@ -167,6 +175,15 @@ function submitSearch () {
167175}
168176
169177function loadTorrents () {
178+ const query = {
179+ pageSize: pageSize .value ,
180+ page: currentPage .value ,
181+ sorting: itemsSorting .value ,
182+ categories: categoryFilters .value ,
183+ tags: tagFilters .value ,
184+ searchQuery: searchQuery .value
185+ };
186+
170187 rest .value .torrent .getTorrents (
171188 {
172189 pageSize: pageSize .value ,
0 commit comments