This commit is contained in:
Timothy Jaeryang Baek committed 2026-05-09 01:31:42 +09:00
1 parent b72019db39
commit 6bdc2ffa79
4 files changed
+102 -4

No files matched your search

+34 -4
View File
@@ -92,6 +92,35 @@
let loading = false;
let error: string | null = null;
// ── Sort state ──────────────────────────────────────────────────────
type SortMode = 'name' | 'date';
let sortBy: SortMode = 'name';
let sortAsc = true;
const sortEntries = (items: FileEntry[]): FileEntry[] => {
return [...items].sort((a, b) => {
// Directories always first
if (a.type !== b.type) return a.type === 'directory' ? -1 : 1;
if (sortBy === 'date') {
const aTime = a.modified ?? 0;
const bTime = b.modified ?? 0;
return sortAsc ? aTime - bTime : bTime - aTime;
}
const cmp = a.name.localeCompare(b.name);
return sortAsc ? cmp : -cmp;
});
};
const toggleSort = (mode: SortMode) => {
if (sortBy === mode) {
sortAsc = !sortAsc;
} else {
sortBy = mode;
sortAsc = mode === 'name'; // name defaults asc, date defaults asc (oldest first)
}
entries = sortEntries(entries);
};
// ── Navigation history ──────────────────────────────────────────────
type NavEntry = { path: string; file: string | null };
let navHistory: NavEntry[] = [];
@@ -341,10 +370,7 @@
'Failed to load directory. Check your Terminal connection in Settings → Integrations.';
entries = [];
} else {
entries = result.sort((a, b) => {
if (a.type !== b.type) return a.type === 'directory' ? -1 : 1;
return a.name.localeCompare(b.name);
});
entries = sortEntries(result);
}
};
@@ -918,6 +944,8 @@
{loading}
{canGoBack}
{canGoForward}
{sortBy}
{sortAsc}
onGoBack={goBack}
onGoForward={goForward}
onNavigate={loadDir}
@@ -934,6 +962,7 @@
onUploadFiles={handleUploadFiles}
onDownloadDir={() => downloadFile(currentPath)}
onMove={handleMove}
onSort={toggleSort}
>
{#if fileImageUrl !== null || (fileOfficeSlides !== null && fileOfficeSlides.length > 0)}
<Tooltip content={$i18n.t('Reset view')}>
@@ -1355,6 +1384,7 @@
onRename={handleRename}
onSelect={handleSelect}
onLongPress={enterSelectionMode}
showDate={sortBy === 'date'}
/>
{/each}
</ul>