@@ -300,63 +300,25 @@ pub async fn encoded_restore(req: Request<Body>) -> Result<Response<Body>, Strin
300300
301301// Get current user settings as JSON for API consumption
302302pub async fn get_json ( req : Request < Body > ) -> Result < Response < Body > , String > {
303- // Create preferences - this should be safe but we wrap it for completeness
304303 let prefs = Preferences :: new ( & req) ;
305304
306- // Try to encode preferences, but provide fallback if it fails
307- let url_encoded = match prefs. to_urlencoded ( ) {
308- Ok ( encoded) => Some ( encoded) ,
309- Err ( e) => {
310- eprintln ! ( "Warning: Failed to encode preferences for settings transfer: {e}" ) ;
311- None
312- }
313- } ;
314-
315- // Create a response structure with encoded preferences for easy transfer
316- let settings_data = serde_json:: json!( {
317- "url_encoded" : url_encoded,
318- "success" : url_encoded. is_some( ) ,
319- "preferences" : {
320- "theme" : prefs. theme,
321- "front_page" : prefs. front_page,
322- "layout" : prefs. layout,
323- "wide" : prefs. wide,
324- "comment_sort" : prefs. comment_sort,
325- "post_sort" : prefs. post_sort,
326- "blur_spoiler" : prefs. blur_spoiler,
327- "show_nsfw" : prefs. show_nsfw,
328- "blur_nsfw" : prefs. blur_nsfw,
329- "use_hls" : prefs. use_hls,
330- "hide_hls_notification" : prefs. hide_hls_notification,
331- "autoplay_videos" : prefs. autoplay_videos,
332- "hide_sidebar_and_summary" : prefs. hide_sidebar_and_summary,
333- "fixed_navbar" : prefs. fixed_navbar,
334- "hide_awards" : prefs. hide_awards,
335- "hide_score" : prefs. hide_score,
336- "disable_visit_reddit_confirmation" : prefs. disable_visit_reddit_confirmation,
337- "video_quality" : prefs. video_quality,
338- "remove_default_feeds" : prefs. remove_default_feeds,
339- "subscriptions" : prefs. subscriptions,
340- "filters" : prefs. filters
305+ // Try to encode preferences and return directly or error with HTTP status
306+ match prefs. to_urlencoded ( ) {
307+ Ok ( encoded) => {
308+ Response :: builder ( )
309+ . status ( 200 )
310+ . header ( "content-type" , "text/plain" )
311+ . header ( "cache-control" , "no-cache, no-store, must-revalidate" )
312+ . body ( encoded. into ( ) )
313+ . map_err ( |e| format ! ( "Failed to build response: {e}" ) )
341314 }
342- } ) ;
343-
344- let body = match serde_json:: to_string ( & settings_data) {
345- Ok ( json) => json,
346315 Err ( e) => {
347- eprintln ! ( "Error serializing settings to JSON : {e}" ) ;
348- return Response :: builder ( )
316+ eprintln ! ( "Warning: Failed to encode preferences for settings transfer : {e}" ) ;
317+ Response :: builder ( )
349318 . status ( 500 )
350- . header ( "content-type" , "application/json " )
351- . body ( r#"{"error": " Failed to serialize settings", "success": false}"# . into ( ) )
352- . map_err ( |e| format ! ( "Failed to build error response: {e}" ) ) ;
319+ . header ( "content-type" , "text/plain " )
320+ . body ( " Failed to encode preferences" . into ( ) )
321+ . map_err ( |e| format ! ( "Failed to build error response: {e}" ) )
353322 }
354- } ;
355-
356- Response :: builder ( )
357- . status ( 200 )
358- . header ( "content-type" , "application/json" )
359- . header ( "cache-control" , "no-cache, no-store, must-revalidate" )
360- . body ( body. into ( ) )
361- . map_err ( |e| format ! ( "Failed to build response: {e}" ) )
323+ }
362324}
0 commit comments