@@ -77,6 +77,8 @@ local INITIAL_STATE = {
7777 title_prefix = " " , -- for animation
7878 },
7979 packages = {
80+ --- @type Package[]
81+ outdated_packages = {},
8082 new_versions_check = {
8183 is_checking = false ,
8284 current = 0 ,
@@ -271,6 +273,8 @@ local function setup_handle(handle)
271273 handle_spawnhandle_change ()
272274 mutate_state (function (state )
273275 state .packages .states [handle .package .name ] = create_initial_package_state ()
276+ state .packages .outdated_packages =
277+ _ .filter (_ .complement (_ .equals (handle .package )), state .packages .outdated_packages )
274278 end )
275279end
276280
@@ -426,7 +430,7 @@ local function check_new_package_version(pkg)
426430 mutate_state (function (state )
427431 state .packages .states [pkg .name ].is_checking_new_version = true
428432 end )
429- a .wait (function (resolve , reject )
433+ return a .wait (function (resolve , reject )
430434 pkg :check_new_version (function (success , new_version )
431435 mutate_state (function (state )
432436 state .packages .states [pkg .name ].is_checking_new_version = false
@@ -467,6 +471,7 @@ local function check_new_visible_package_versions()
467471 )(state .packages .installed )
468472
469473 mutate_state (function (state )
474+ state .packages .outdated_packages = {}
470475 state .packages .new_versions_check .is_checking = true
471476 state .packages .new_versions_check .current = 0
472477 state .packages .new_versions_check .total = # installed_visible_packages
@@ -488,11 +493,14 @@ local function check_new_visible_package_versions()
488493 a .wait_all (_ .map (function (package )
489494 return function ()
490495 local permit = sem :acquire ()
491- pcall (check_new_package_version , package )
496+ local has_new_version = pcall (check_new_package_version , package )
492497 mutate_state (function (state )
493498 state .packages .new_versions_check .current = state .packages .new_versions_check .current + 1
494499 state .packages .new_versions_check .percentage_complete = state .packages .new_versions_check .current
495500 / state .packages .new_versions_check .total
501+ if has_new_version then
502+ table.insert (state .packages .outdated_packages , package )
503+ end
496504 end )
497505 permit :forget ()
498506 end
@@ -551,14 +559,12 @@ end
551559
552560local function update_all_packages ()
553561 local state = get_state ()
554- _ .each (
555- function (pkg )
556- pkg :install (pkg )
557- end ,
558- _ .filter (function (pkg )
559- return state .packages .visible [pkg .name ] and state .packages .states [pkg .name ].new_version
560- end , state .packages .installed )
561- )
562+ _ .each (function (pkg )
563+ pkg :install (pkg )
564+ end , state .packages .outdated_packages )
565+ mutate_state (function (state )
566+ state .packages .outdated_packages = {}
567+ end )
562568end
563569
564570local function toggle_install_log (event )
0 commit comments