@@ -411,8 +411,7 @@ pub fn handle_ui_command(cmd: UiCommand, ctx: &mut UiCommandContext<'_>) {
411411 }
412412 }
413413 UiCommand :: EditPost => {
414- let ( status, max_post_chars, enter_to_send) =
415- ( get_selected_status ( state) . cloned ( ) , state. max_post_chars , state. config . enter_to_send ) ;
414+ let status = get_selected_status ( state) . cloned ( ) ;
416415 let Some ( status) = status else {
417416 live_region. announce ( "No post selected" ) ;
418417 return ;
@@ -427,46 +426,8 @@ pub fn handle_ui_command(cmd: UiCommand, ctx: &mut UiCommandContext<'_>) {
427426 live_region. announce ( "Cannot verify ownership" ) ;
428427 return ;
429428 }
430- let Some ( ( edit, config) ) =
431- dialogs:: prompt_for_edit ( frame, target, max_post_chars, & state. poll_limits , enter_to_send)
432- else {
433- return ;
434- } ;
435429 if let Some ( handle) = & state. network_handle {
436- state. pending_post = Some ( crate :: PendingPost {
437- config,
438- operation : crate :: PostOperation :: Edit { status_id : target. id . clone ( ) } ,
439- last_result : edit. clone ( ) ,
440- } ) ;
441- let media = edit
442- . media
443- . into_iter ( )
444- . map ( |item| {
445- if item. is_existing {
446- network:: EditMedia :: Existing ( item. path )
447- } else {
448- network:: EditMedia :: New ( network:: MediaUpload {
449- path : item. path ,
450- description : item. description ,
451- } )
452- }
453- } )
454- . collect ( ) ;
455-
456- handle. send ( NetworkCommand :: EditStatus {
457- status_id : target. id . clone ( ) ,
458- content : edit. content ,
459- sensitive : edit. sensitive ,
460- spoiler_text : edit. spoiler_text ,
461- language : edit. language ,
462- media,
463- poll : edit. poll . map ( |poll| network:: PollData {
464- options : poll. options ,
465- expires_in : poll. expires_in ,
466- multiple : poll. multiple ,
467- hide_totals : poll. hide_totals ,
468- } ) ,
469- } ) ;
430+ handle. send ( NetworkCommand :: FetchStatusSource { status : Box :: new ( target. clone ( ) ) } ) ;
470431 } else {
471432 live_region. announce ( "Network not available" ) ;
472433 }
@@ -2777,3 +2738,51 @@ fn close_timeline(
27772738 }
27782739 update_window_title ( state, frame) ;
27792740}
2741+
2742+ pub fn run_edit_post_dialog (
2743+ frame : & Frame ,
2744+ state : & mut AppState ,
2745+ target : & crate :: mastodon:: Status ,
2746+ source_text : Option < & str > ,
2747+ ) {
2748+ let max_post_chars = state. max_post_chars ;
2749+ let enter_to_send = state. config . enter_to_send ;
2750+ let Some ( ( edit, config) ) =
2751+ dialogs:: prompt_for_edit ( frame, target, source_text, max_post_chars, & state. poll_limits , enter_to_send)
2752+ else {
2753+ return ;
2754+ } ;
2755+ if let Some ( handle) = & state. network_handle {
2756+ state. pending_post = Some ( crate :: PendingPost {
2757+ config,
2758+ operation : crate :: PostOperation :: Edit { status_id : target. id . clone ( ) } ,
2759+ last_result : edit. clone ( ) ,
2760+ } ) ;
2761+ let media = edit
2762+ . media
2763+ . into_iter ( )
2764+ . map ( |item| {
2765+ if item. is_existing {
2766+ network:: EditMedia :: Existing ( item. path )
2767+ } else {
2768+ network:: EditMedia :: New ( network:: MediaUpload { path : item. path , description : item. description } )
2769+ }
2770+ } )
2771+ . collect ( ) ;
2772+
2773+ handle. send ( NetworkCommand :: EditStatus {
2774+ status_id : target. id . clone ( ) ,
2775+ content : edit. content ,
2776+ sensitive : edit. sensitive ,
2777+ spoiler_text : edit. spoiler_text ,
2778+ language : edit. language ,
2779+ media,
2780+ poll : edit. poll . map ( |poll| network:: PollData {
2781+ options : poll. options ,
2782+ expires_in : poll. expires_in ,
2783+ multiple : poll. multiple ,
2784+ hide_totals : poll. hide_totals ,
2785+ } ) ,
2786+ } ) ;
2787+ }
2788+ }
0 commit comments