@@ -586,49 +586,50 @@ defmodule LiveAdmin.Components.Container.Index do
586586 fn ->
587587 pid = self ( )
588588
589- LiveAdmin.PubSub . broadcast ( session . id , { :job , % { pid: pid , progress: 0 , label: label } } )
589+ LiveAdmin.PubSub . update_job ( session . id , pid , progress: 0 , label: label )
590590
591591 records = Resource . all ( ids , resource , prefix , repo )
592592
593- { type , message } =
594- records
595- |> Enum . with_index ( )
596- |> Enum . reduce ( 0 , fn { record , i } , failed_count ->
597- try do
598- case apply ( mod , func , [ record | args ] ) do
599- { :ok , _ } -> failed_count
600- { :error , _ } -> failed_count + 1
601- end
602- rescue
603- _ -> failed_count + 1
604- after
605- LiveAdmin.PubSub . broadcast (
606- session . id ,
607- { :job , % { pid: pid , progress: ( i + 1 ) / length ( records ) } }
608- )
593+ records
594+ |> Enum . with_index ( )
595+ |> Enum . reduce ( 0 , fn { record , i } , failed_count ->
596+ try do
597+ case apply ( mod , func , [ record | args ] ) do
598+ { :ok , _ } -> failed_count
599+ { :error , _ } -> failed_count + 1
609600 end
610- end )
611- |> case do
612- 0 ->
613- { :success ,
614- trans ( "%{name} action run successfully on %{count} records" ,
615- inter: [ name: name , count: length ( records ) ]
616- ) }
617-
618- error_count ->
619- { :error ,
620- trans (
621- "%{name} action failed on %{error_count} records (%{success_count} succeeeded)" ,
622- inter: [
623- name: name ,
624- error_count: error_count ,
625- success_count: length ( records ) - error_count
626- ]
627- ) }
601+ rescue
602+ _ -> failed_count + 1
603+ after
604+ LiveAdmin.PubSub . update_job ( session . id , pid , progress: ( i + 1 ) / length ( records ) )
628605 end
606+ end )
607+ |> case do
608+ 0 ->
609+ LiveAdmin.PubSub . announce (
610+ session . id ,
611+ :success ,
612+ trans ( "%{name} action run successfully on %{count} records" ,
613+ inter: [ name: name , count: length ( records ) ]
614+ )
615+ )
616+
617+ error_count ->
618+ LiveAdmin.PubSub . announce (
619+ session . id ,
620+ :error ,
621+ trans (
622+ "%{name} action failed on %{error_count} records (%{success_count} succeeeded)" ,
623+ inter: [
624+ name: name ,
625+ error_count: error_count ,
626+ success_count: length ( records ) - error_count
627+ ]
628+ )
629+ )
630+ end
629631
630- LiveAdmin.PubSub . broadcast ( session . id , { :job , % { pid: pid , progress: 1 } } )
631- LiveAdmin.PubSub . broadcast ( session . id , { :announce , % { message: message , type: type } } )
632+ LiveAdmin.PubSub . update_job ( session . id , pid , progress: 1 )
632633 end ,
633634 timeout: :infinity
634635 )
0 commit comments