1
0
mirror of https://github.com/tw93/Mole.git synced 2026-02-11 12:59:16 +00:00

improve uninstall scan metadata and list refresh UX

This commit is contained in:
tw93
2026-02-10 16:23:15 +08:00
parent e27c323a1b
commit 7d8bfbc9d9
2 changed files with 25 additions and 12 deletions

View File

@@ -35,8 +35,8 @@ readonly MOLE_UNINSTALL_META_CACHE_DIR="$HOME/.cache/mole"
readonly MOLE_UNINSTALL_META_CACHE_FILE="$MOLE_UNINSTALL_META_CACHE_DIR/uninstall_app_metadata_v1"
readonly MOLE_UNINSTALL_META_CACHE_LOCK="${MOLE_UNINSTALL_META_CACHE_FILE}.lock"
readonly MOLE_UNINSTALL_META_REFRESH_TTL=604800 # 7 days
readonly MOLE_UNINSTALL_SCAN_SPINNER_DELAY_SEC="0.15"
readonly MOLE_UNINSTALL_INLINE_METADATA_LIMIT=4
readonly MOLE_UNINSTALL_SCAN_SPINNER_DELAY_SEC="0.25"
readonly MOLE_UNINSTALL_INLINE_METADATA_LIMIT=8
readonly MOLE_UNINSTALL_INLINE_MDLS_TIMEOUT_SEC="0.08"
uninstall_relative_time_from_epoch() {
@@ -44,7 +44,7 @@ uninstall_relative_time_from_epoch() {
local now_epoch="${2:-0}"
if [[ ! "$value_epoch" =~ ^[0-9]+$ || $value_epoch -le 0 ]]; then
echo "..."
echo "Unknown"
return 0
fi
@@ -613,12 +613,19 @@ scan_applications() {
fi
local final_size_kb=0
local final_size="..."
local final_size="N/A"
if [[ "$cached_size_kb" =~ ^[0-9]+$ && $cached_size_kb -gt 0 ]]; then
final_size_kb="$cached_size_kb"
final_size=$(bytes_to_human "$((cached_size_kb * 1024))")
fi
# Fallback to app mtime to avoid unknown "last used" on first scan.
if [[ ! "$final_epoch" =~ ^[0-9]+$ || $final_epoch -le 0 ]]; then
if [[ "$app_mtime" =~ ^[0-9]+$ && $app_mtime -gt 0 ]]; then
final_epoch="$app_mtime"
fi
fi
local final_last_used
final_last_used=$(uninstall_relative_time_from_epoch "$final_epoch" "$current_epoch")
@@ -769,9 +776,15 @@ main() {
hide_cursor
local first_scan=true
while true; do
unset MOLE_INLINE_LOADING MOLE_MANAGED_ALT_SCREEN
if [[ $first_scan == false ]]; then
echo -e "${GRAY}Refreshing application list...${NC}" >&2
fi
first_scan=false
local apps_file=""
if ! apps_file=$(scan_applications); then
return 1
@@ -819,10 +832,10 @@ main() {
local name_width=$(get_display_width "$app_name")
[[ $name_width -gt $max_name_display_width ]] && max_name_display_width=$name_width
local size_display="$size"
[[ -z "$size_display" || "$size_display" == "0" || "$size_display" == "N/A" || "$size_display" == "Unknown" ]] && size_display="..."
[[ -z "$size_display" || "$size_display" == "0" || "$size_display" == "Unknown" ]] && size_display="N/A"
[[ ${#size_display} -gt $max_size_width ]] && max_size_width=${#size_display}
local last_display=$(format_last_used_summary "$last_used")
[[ -z "$last_display" || "$last_display" == "Unknown" || "$last_display" == "Never" ]] && last_display="..."
[[ -z "$last_display" || "$last_display" == "Never" ]] && last_display="Unknown"
[[ ${#last_display} -gt $max_last_width ]] && max_last_width=${#last_display}
done
((max_size_width < 5)) && max_size_width=5
@@ -859,13 +872,13 @@ main() {
[[ $current_width -gt $max_name_display_width ]] && max_name_display_width=$current_width
local size_display="$size"
if [[ -z "$size_display" || "$size_display" == "0" || "$size_display" == "N/A" || "$size_display" == "Unknown" ]]; then
size_display="..."
if [[ -z "$size_display" || "$size_display" == "0" || "$size_display" == "Unknown" ]]; then
size_display="N/A"
fi
local last_display
last_display=$(format_last_used_summary "$last_used")
[[ -z "$last_display" || "$last_display" == "Unknown" || "$last_display" == "Never" ]] && last_display="..."
[[ -z "$last_display" || "$last_display" == "Never" ]] && last_display="Unknown"
summary_rows+=("$display_name|$size_display|$last_display")
done

View File

@@ -12,12 +12,12 @@ format_app_display() {
# Use common function from ui.sh to format last used time
local compact_last_used
compact_last_used=$(format_last_used_summary "$last_used")
if [[ -z "$compact_last_used" || "$compact_last_used" == "Unknown" || "$compact_last_used" == "Never" ]]; then
compact_last_used="..."
if [[ -z "$compact_last_used" || "$compact_last_used" == "Never" ]]; then
compact_last_used="Unknown"
fi
# Format size
local size_str="..."
local size_str="N/A"
[[ "$size" != "0" && "$size" != "" && "$size" != "Unknown" ]] && size_str="$size"
# Calculate available width for app name based on terminal width