@@ -50,16 +50,15 @@ fn Listing(cx: Scope) -> Element {
50
50
fut. restart ( ) ;
51
51
}
52
52
53
+ let router_state = use_router ( & cx) ;
53
54
let create_dir_state = use_state ( & cx, || None as Option < String > ) ;
54
55
if let Some ( dir_path) = create_dir_state. get ( ) {
55
56
create_dir_state. set ( None ) ;
56
57
fut. restart ( ) ;
57
- use_router ( & cx ) . replace_route ( dir_path. as_str ( ) , None , None ) ;
58
+ router_state . replace_route ( dir_path. as_str ( ) , None , None ) ;
58
59
59
60
return cx. render ( rsx ! {
60
- Router {
61
- Route { to: "" , Listing { } }
62
- }
61
+ Listing { }
63
62
} ) ;
64
63
}
65
64
@@ -101,7 +100,7 @@ fn CreateDirectory(
101
100
}
102
101
103
102
let parent_dir = parent_dir. clone ( ) ;
104
- let create_dir_state = create_dir_state. clone ( ) ;
103
+ let create_dir_state = create_dir_state. to_owned ( ) ;
105
104
cx. spawn ( async move {
106
105
let json_req = JsonRequest :: CreateDirectory {
107
106
dir_name : dir_name. clone ( ) ,
@@ -116,7 +115,11 @@ fn CreateDirectory(
116
115
match resp {
117
116
Ok ( resp) => {
118
117
info ! ( "created directory: {:?}" , resp) ;
119
- create_dir_state. set ( Some ( format ! ( "{}/{}" , parent_dir, dir_name) ) ) ;
118
+ create_dir_state. set ( Some ( if parent_dir == "/" {
119
+ dir_name
120
+ } else {
121
+ format ! ( "{}/{}" , parent_dir, dir_name)
122
+ } ) ) ;
120
123
}
121
124
Err ( err) => {
122
125
info ! ( "failed to create directory: {}" , err) ;
@@ -293,36 +296,38 @@ fn TableRow<'a>(cx: Scope<'a, DirEntryProps<'a>>) -> Element {
293
296
img { src: "data:image/x-icon;base64,AAABAAEAEBACAAAAAACwAAAAFgAAACgAAAAQAAAAIAAAAAEAAQAAAAAAQAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAA////AAKnAAB6MgAASlIAAEtCAAB7AAAAAnkAAP/YAACDBQAAUGMAAPy/AAACQAAAel4AAEpSAABK0gAAel4AAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" , alt: "QRCode" }
294
297
}
295
298
296
- a {
297
- href: "#" ,
298
- prevent_default: "onclick" ,
299
- onclick: move |_| {
300
- let path = format!( "/api/ffprobe{}/{}" , cx. props. cur_path, entry. file_name) ;
301
- let info_state = cx. props. info_state. clone( ) ;
302
- cx. spawn( async move {
303
- let resp = Request :: get( path. as_str( ) )
304
- . send( )
305
- . await ;
306
-
307
- match resp {
308
- Ok ( resp) => {
309
- let text = resp. text( ) . await . unwrap_or( "" . to_string( ) ) ;
310
- if text. is_empty( ) || text == "\" {\\ n\\ n}\\ n\" " {
311
- info_state. set( Some ( "Not Available!" . to_string( ) ) ) ;
312
- } else {
313
- let json_resp: serde_json:: Value = serde_json:: from_str( text. as_str( ) ) . unwrap_or( serde_json:: Value :: default ( ) ) ;
314
- let json_str = json_resp. to_string( ) . replace( "\\ n" , "\n " ) . replace( "\\ " , "" ) ;
315
- info_state. set( Some ( json_str) ) ;
299
+ ( entry. file_type == common:: FileType :: File ) . then( || rsx!(
300
+ a {
301
+ href: "#" ,
302
+ prevent_default: "onclick" ,
303
+ onclick: move |_| {
304
+ let path = format!( "/api/ffprobe{}/{}" , cx. props. cur_path, entry. file_name) ;
305
+ let info_state = cx. props. info_state. clone( ) ;
306
+ cx. spawn( async move {
307
+ let resp = Request :: get( path. as_str( ) )
308
+ . send( )
309
+ . await ;
310
+
311
+ match resp {
312
+ Ok ( resp) => {
313
+ let text = resp. text( ) . await . unwrap_or( "" . to_string( ) ) ;
314
+ if text. is_empty( ) || text == "\" {\\ n\\ n}\\ n\" " {
315
+ info_state. set( Some ( "Not Available!" . to_string( ) ) ) ;
316
+ } else {
317
+ let json_resp: serde_json:: Value = serde_json:: from_str( text. as_str( ) ) . unwrap_or( serde_json:: Value :: default ( ) ) ;
318
+ let json_str = json_resp. to_string( ) . replace( "\\ n" , "\n " ) . replace( "\\ " , "" ) ;
319
+ info_state. set( Some ( json_str) ) ;
320
+ }
321
+ }
322
+ Err ( err) => {
323
+ error!( "failed: {}" , err) ;
316
324
}
317
325
}
318
- Err ( err) => {
319
- error!( "failed: {}" , err) ;
320
- }
321
- }
322
- } ) ;
323
- } ,
324
- "ℹ️ " ,
325
- }
326
+ } ) ;
327
+ } ,
328
+ "ℹ️ " ,
329
+ }
330
+ ) ) ,
326
331
327
332
a {
328
333
href: "{api_link}" ,
0 commit comments