Skip to content

Commit 53ee5ef

Browse files
committed
Brief mode: Show real dir sizes in SelectionInfo
- `getSizeDisplay` now returns recursive size triads for directories when available, falls back to "DIR" when index data is missing - `SelectionInfo` computes `displaySize` using `recursiveSize`/`recursivePhysicalSize` for dirs - Dir size tooltip shows file/folder counts and scanning state via existing `buildDirSizeTooltip`
1 parent b8b8905 commit 53ee5ef

2 files changed

Lines changed: 33 additions & 9 deletions

File tree

apps/desktop/src/lib/file-explorer/selection/SelectionInfo.svelte

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@
1212
} from './selection-info-utils'
1313
import { measureDateColumnWidth } from '../views/full-list-utils'
1414
import { formatFileSize, formatDateTime, getSizeDisplayMode } from '$lib/settings/reactive-settings.svelte'
15-
import { getDisplaySize, buildFileSizeTooltip, buildSelectionSizeTooltip } from '../views/full-list-utils'
15+
import {
16+
getDisplaySize,
17+
buildFileSizeTooltip,
18+
buildDirSizeTooltip,
19+
buildSelectionSizeTooltip,
20+
} from '../views/full-list-utils'
1621
import { isScanning } from '$lib/indexing/index-state.svelte'
1722
import { tooltip } from '$lib/tooltip/tooltip'
1823
import { Hourglass } from '@lucide/svelte'
@@ -66,17 +71,39 @@
6671
// File info mode (Brief mode without selection)
6772
// ========================================================================
6873
74+
// Drive index scanning state — used for stale indicator when dirs are shown
75+
const scanning = $derived(isScanning())
76+
6977
const sizeDisplayMode = $derived(getSizeDisplayMode())
7078
const displayName = $derived(entry?.name ?? '')
7179
const isDirectory = $derived(entry?.isDirectory ?? false)
7280
const isBrokenSymlink = $derived(checkBrokenSymlink(entry))
7381
const isPermissionDenied = $derived(checkPermissionDenied(entry))
74-
const fileDisplaySize = $derived(
75-
entry && !isDirectory ? getDisplaySize(entry.size, entry.physicalSize, sizeDisplayMode) : undefined,
82+
const displaySize = $derived(
83+
entry
84+
? getDisplaySize(
85+
isDirectory ? entry.recursiveSize : entry.size,
86+
isDirectory ? entry.recursivePhysicalSize : entry.physicalSize,
87+
sizeDisplayMode,
88+
)
89+
: undefined,
7690
)
77-
const sizeDisplay = $derived(getSizeDisplay(entry, isBrokenSymlink, isPermissionDenied, fileDisplaySize))
91+
const sizeDisplay = $derived(getSizeDisplay(entry, isBrokenSymlink, isPermissionDenied, displaySize))
7892
const sizeTooltip = $derived(
79-
entry && !isDirectory ? buildFileSizeTooltip(entry.size, entry.physicalSize, formatFileSize) : undefined,
93+
entry
94+
? isDirectory
95+
? buildDirSizeTooltip(
96+
entry.recursiveSize,
97+
entry.recursivePhysicalSize,
98+
entry.recursiveFileCount ?? 0,
99+
entry.recursiveDirCount ?? 0,
100+
scanning,
101+
formatFileSize,
102+
formatNumber,
103+
pluralize,
104+
) || undefined
105+
: buildFileSizeTooltip(entry.size, entry.physicalSize, formatFileSize)
106+
: undefined,
80107
)
81108
// Use formatDateTime from reactive-settings for consistent date formatting with Full mode
82109
const dateDisplay = $derived.by(() => {
@@ -199,9 +226,6 @@
199226
// Selection summary mode
200227
// ========================================================================
201228
202-
// Drive index scanning state — used for stale indicator when dirs are selected
203-
const scanning = $derived(isScanning())
204-
205229
// Computed values for selection summary
206230
const selectedFiles = $derived(stats?.selectedFiles ?? 0)
207231
const selectedDirs = $derived(stats?.selectedDirs ?? 0)

apps/desktop/src/lib/file-explorer/selection/selection-info-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export function getSizeDisplay(
6767
displaySize?: number,
6868
): { value: string; tierClass: string }[] | 'DIR' | null {
6969
if (!entry || isBrokenSymlink || isPermissionDenied) return null
70-
if (entry.isDirectory) return 'DIR'
70+
if (entry.isDirectory) return displaySize !== undefined ? formatSizeTriads(displaySize) : 'DIR'
7171
const size = displaySize ?? entry.size
7272
if (size === undefined) return null
7373
return formatSizeTriads(size)

0 commit comments

Comments
 (0)