@@ -10,8 +10,9 @@ use pointercrate_core_pages::{
1010 head:: { Head , HeadLike } ,
1111 PageConfiguration , PageFragment ,
1212} ;
13+ use rocket:: tokio:: runtime:: Handle ;
14+ use rocket:: tokio:: task:: block_in_place;
1315use rocket:: {
14- futures,
1516 http:: { ContentType , Header , Status } ,
1617 response:: Responder ,
1718 serde:: json:: Json ,
@@ -42,20 +43,22 @@ impl<'r, 'o: 'r> Responder<'r, 'o> for Page {
4243 let language = preferences. get ( LOCALE_COOKIE_NAME ) . ok_or ( Status :: InternalServerError ) ?;
4344 let lang_id = LocaleConfiguration :: get ( ) . by_code ( language) ;
4445
45- let ( page_config, nav_bar, footer) = futures:: executor:: block_on ( async {
46- LANGUAGE
47- . scope ( lang_id. language , async {
48- let page_config = request
49- . rocket ( )
50- . state :: < fn ( ) -> PageConfiguration > ( )
51- . ok_or ( Status :: InternalServerError ) ?( ) ;
52-
53- let nav_bar = page_config. nav_bar . render ( ) ;
54- let footer = page_config. footer . render ( ) ;
55-
56- Ok ( ( page_config, nav_bar, footer) )
57- } )
58- . await
46+ let ( page_config, nav_bar, footer) = block_in_place ( move || {
47+ Handle :: current ( ) . block_on ( async {
48+ LANGUAGE
49+ . scope ( lang_id. language , async {
50+ let page_config = request
51+ . rocket ( )
52+ . state :: < fn ( ) -> PageConfiguration > ( )
53+ . ok_or ( Status :: InternalServerError ) ?( ) ;
54+
55+ let nav_bar = page_config. nav_bar . render ( ) ;
56+ let footer = page_config. footer . render ( ) ;
57+
58+ Ok ( ( page_config, nav_bar, footer) )
59+ } )
60+ . await
61+ } )
5962 } ) ?;
6063
6164 let fragment = self . 0 ;
0 commit comments