Skip to content

Commit afe7cc1

Browse files
committed
fix(renterd): files global view full keys
1 parent e5a0d07 commit afe7cc1

File tree

11 files changed

+133
-119
lines changed

11 files changed

+133
-119
lines changed

.changeset/fluffy-timers-allow.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'renterd': patch
3+
---
4+
5+
Fixed an issue where the global files view was not showing full file paths.

apps/renterd/components/Files/FilesViewDropdownMenu.tsx

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,30 @@ import {
88
BaseMenuItem,
99
MenuSeparator,
1010
Option,
11+
TableColumn,
1112
} from '@siafoundation/design-system'
1213
import { CaretDown16, SettingsAdjust16 } from '@siafoundation/react-icons'
1314
import { sortOptions, SortField } from '../../contexts/filesManager/types'
14-
import { useFilesManager } from '../../contexts/filesManager'
1515
import { groupBy } from '@technically/lodash'
1616

17-
export function FilesViewDropdownMenu() {
18-
const {
19-
configurableColumns,
20-
toggleColumnVisibility,
21-
resetDefaultColumnVisibility,
22-
sortField,
23-
setSortField,
24-
sortDirection,
25-
setSortDirection,
26-
visibleColumnIds,
27-
} = useFilesManager()
17+
export function FilesViewDropdownMenu({
18+
tableState,
19+
}: {
20+
tableState: {
21+
sortField: SortField
22+
sortDirection: 'asc' | 'desc'
23+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
24+
visibleColumns: TableColumn<any, any, any>[]
25+
toggleColumnVisibility: (id: string) => void
26+
resetDefaultColumnVisibility: () => void
27+
setSortField: (field: SortField) => void
28+
setSortDirection: (direction: 'asc' | 'desc') => void
29+
configurableColumns: {
30+
label: string
31+
id: string
32+
}[]
33+
}
34+
}) {
2835
return (
2936
<Popover
3037
trigger={
@@ -43,9 +50,9 @@ export function FilesViewDropdownMenu() {
4350
<Label>Order by</Label>
4451
<MenuItemRightSlot>
4552
<Select
46-
value={sortField}
53+
value={tableState.sortField}
4754
onChange={(e) => {
48-
setSortField(e.currentTarget.value as SortField)
55+
tableState.setSortField(e.currentTarget.value as SortField)
4956
}}
5057
>
5158
{Object.entries(groupBy(sortOptions, 'category')).map(
@@ -66,12 +73,14 @@ export function FilesViewDropdownMenu() {
6673
<Label>Direction</Label>
6774
<MenuItemRightSlot>
6875
<Select
69-
value={sortDirection}
76+
value={tableState.sortDirection}
7077
onClick={(e) => {
7178
e.stopPropagation()
7279
}}
7380
onChange={(e) => {
74-
setSortDirection(e.currentTarget.value as 'asc' | 'desc')
81+
tableState.setSortDirection(
82+
e.currentTarget.value as 'asc' | 'desc'
83+
)
7584
}}
7685
>
7786
<Option key="desc" value="desc">
@@ -90,7 +99,7 @@ export function FilesViewDropdownMenu() {
9099
<Button
91100
onClick={(e) => {
92101
e.stopPropagation()
93-
resetDefaultColumnVisibility()
102+
tableState.resetDefaultColumnVisibility()
94103
}}
95104
>
96105
Reset default
@@ -99,12 +108,12 @@ export function FilesViewDropdownMenu() {
99108
</BaseMenuItem>
100109
<BaseMenuItem>
101110
<PoolCombo
102-
options={configurableColumns.map((column) => ({
111+
options={tableState.configurableColumns.map((column) => ({
103112
label: column.label,
104113
value: column.id,
105114
}))}
106-
values={visibleColumnIds}
107-
onChange={(value) => toggleColumnVisibility(value)}
115+
values={tableState.visibleColumns.map((column) => column.id)}
116+
onChange={(value) => tableState.toggleColumnVisibility(value)}
108117
/>
109118
</BaseMenuItem>
110119
</Popover>

apps/renterd/components/FilesDirectory/FilesActionsMenu.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,16 @@ import { useFilesManager } from '../../contexts/filesManager'
1010
import { FilesViewDropdownMenu } from '../Files/FilesViewDropdownMenu'
1111
import { useDialog } from '../../contexts/dialog'
1212
import { useCanUpload } from '../Files/useCanUpload'
13+
import { useFilesDirectory } from '../../contexts/filesDirectory'
14+
import { useUploadsManager } from '../../contexts/uploadsManager'
1315
// esm compat
1416
const { useDropzone } = reactDropzone
1517

1618
export function FilesActionsMenu() {
1719
const { openDialog } = useDialog()
18-
const { uploadFiles, isViewingBuckets } = useFilesManager()
20+
const { isViewingBuckets } = useFilesManager()
21+
const { tableState } = useFilesDirectory()
22+
const { uploadFiles } = useUploadsManager()
1923

2024
const canUpload = useCanUpload()
2125

@@ -63,7 +67,7 @@ export function FilesActionsMenu() {
6367
</Button>
6468
</>
6569
)}
66-
<FilesViewDropdownMenu />
70+
<FilesViewDropdownMenu tableState={tableState} />
6771
</div>
6872
)
6973
}

apps/renterd/components/FilesDirectory/FilesExplorer.tsx

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,7 @@ import { pluralize } from '@siafoundation/units'
77
import { useUploadsManager } from '../../contexts/uploadsManager'
88

99
export function FilesExplorer() {
10-
const {
11-
sortField,
12-
sortDirection,
13-
sortableColumns,
14-
toggleSort,
15-
isViewingBuckets,
16-
visibleColumns,
17-
} = useFilesManager()
10+
const { isViewingBuckets } = useFilesManager()
1811
const { uploadFiles } = useUploadsManager()
1912
const {
2013
datasetPage,
@@ -27,6 +20,7 @@ export function FilesExplorer() {
2720
onDragCancel,
2821
onDragMove,
2922
draggingObjects,
23+
tableState,
3024
} = useFilesDirectory()
3125
const canUpload = useCanUpload()
3226
return (
@@ -44,11 +38,11 @@ export function FilesExplorer() {
4438
pageSize={10}
4539
data={datasetPage}
4640
context={cellContext}
47-
columns={visibleColumns}
48-
sortableColumns={sortableColumns}
49-
sortField={sortField}
50-
sortDirection={sortDirection}
51-
toggleSort={toggleSort}
41+
columns={tableState.visibleColumns}
42+
sortableColumns={tableState.sortableColumns}
43+
sortField={tableState.sortField}
44+
sortDirection={tableState.sortDirection}
45+
toggleSort={tableState.toggleSort}
5246
rowSize="dense"
5347
onDragStart={onDragStart}
5448
onDragOver={onDragOver}

apps/renterd/components/FilesFlat/FilesActionsMenu.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ import { Button } from '@siafoundation/design-system'
22
import { Search16 } from '@siafoundation/react-icons'
33
import { useDialog } from '../../contexts/dialog'
44
import { FilesViewDropdownMenu } from '../Files/FilesViewDropdownMenu'
5+
import { useFilesFlat } from '../../contexts/filesFlat'
56

67
export function FilesActionsMenu() {
78
const { openDialog } = useDialog()
8-
9+
const { tableState } = useFilesFlat()
910
return (
1011
<div className="flex gap-2">
1112
<Button
@@ -15,7 +16,7 @@ export function FilesActionsMenu() {
1516
>
1617
<Search16 />
1718
</Button>
18-
<FilesViewDropdownMenu />
19+
<FilesViewDropdownMenu tableState={tableState} />
1920
</div>
2021
)
2122
}

apps/renterd/components/FilesFlat/FilesExplorer.tsx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
import { Table } from '@siafoundation/design-system'
22
import { EmptyState } from './EmptyState'
33
import { useFilesFlat } from '../../contexts/filesFlat'
4-
import { useFilesManager } from '../../contexts/filesManager'
54

65
export function FilesExplorer() {
7-
const { sortableColumns, visibleColumns, toggleSort } = useFilesManager()
8-
const { datasetPage, datasetState, cellContext, sortField, sortDirection } =
9-
useFilesFlat()
6+
const { datasetPage, datasetState, cellContext, tableState } = useFilesFlat()
107
return (
118
<div className="relative">
129
<Table
@@ -16,11 +13,11 @@ export function FilesExplorer() {
1613
pageSize={10}
1714
data={datasetPage}
1815
context={cellContext}
19-
columns={visibleColumns}
20-
sortableColumns={sortableColumns}
21-
sortField={sortField}
22-
sortDirection={sortDirection}
23-
toggleSort={toggleSort}
16+
columns={tableState.visibleColumns}
17+
sortableColumns={tableState.sortableColumns}
18+
sortField={tableState.sortField}
19+
sortDirection={tableState.sortDirection}
20+
toggleSort={tableState.toggleSort}
2421
rowSize="dense"
2522
/>
2623
</div>

apps/renterd/contexts/filesDirectory/dataset.tsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,19 @@ import { useFilesManager } from '../filesManager'
66
import { defaultDatasetRefreshInterval } from '../../config/swr'
77
import { ObjectsParams } from '@siafoundation/renterd-types'
88
import { usePaginationMarker } from '@siafoundation/design-system'
9+
import { SortField } from '../filesManager/types'
910

1011
const defaultLimit = 50
1112

12-
export function useDataset() {
13-
const {
14-
activeBucketName,
15-
activeDirectoryPath,
16-
fileNamePrefixFilter,
17-
sortDirection,
18-
sortField,
19-
} = useFilesManager()
13+
export function useDataset({
14+
sortField,
15+
sortDirection,
16+
}: {
17+
sortField: SortField
18+
sortDirection: 'asc' | 'desc'
19+
}) {
20+
const { activeBucketName, activeDirectoryPath, fileNamePrefixFilter } =
21+
useFilesManager()
2022
const { limit, marker } = usePaginationMarker(defaultLimit)
2123
const pathParams = bucketAndKeyParamsFromPath(activeDirectoryPath)
2224

apps/renterd/contexts/filesDirectory/index.tsx

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,47 @@
1-
import { useDatasetState, useMultiSelect } from '@siafoundation/design-system'
1+
import {
2+
useDatasetState,
3+
useMultiSelect,
4+
useTableState,
5+
} from '@siafoundation/design-system'
26
import {
37
createContext,
48
MouseEvent,
59
useContext,
610
useEffect,
711
useMemo,
812
} from 'react'
9-
import { CellContext, ObjectData } from '../filesManager/types'
13+
import {
14+
CellContext,
15+
columnsDefaultVisible,
16+
defaultSortField,
17+
sortOptions,
18+
ObjectData,
19+
} from '../filesManager/types'
1020
import { useDataset } from './dataset'
1121
import { useMove } from './move'
1222
import { useFilesManager } from '../filesManager'
23+
import { columns } from './columns'
1324

1425
function useFilesDirectoryMain() {
26+
const tableState = useTableState('renterd/v0/filesDirectory', {
27+
columns,
28+
columnsDefaultVisible,
29+
sortOptions,
30+
defaultSortField,
31+
})
1532
const {
1633
activeDirectory,
1734
activeBucket,
1835
setActiveDirectory,
1936
filters,
20-
visibleColumns,
2137
isViewingBuckets,
2238
} = useFilesManager()
2339

2440
const { limit, marker, nextMarker, isMore, response, refresh, dataset } =
25-
useDataset()
41+
useDataset({
42+
sortField: tableState.sortField,
43+
sortDirection: tableState.sortDirection,
44+
})
2645

2746
const multiSelect = useMultiSelect(dataset)
2847

@@ -141,7 +160,6 @@ function useFilesDirectoryMain() {
141160

142161
return {
143162
datasetState,
144-
visibleColumns,
145163
multiSelect,
146164
cellContext,
147165
refresh,
@@ -159,6 +177,7 @@ function useFilesDirectoryMain() {
159177
draggingObjects,
160178
moveSelectedFiles,
161179
moveSelectedFilesOperationCount,
180+
tableState,
162181
}
163182
}
164183

apps/renterd/contexts/filesFlat/index.tsx

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import { useDatasetState, useMultiSelect } from '@siafoundation/design-system'
1+
import {
2+
useDatasetState,
3+
useMultiSelect,
4+
useTableState,
5+
} from '@siafoundation/design-system'
26
import {
37
createContext,
48
MouseEvent,
@@ -8,21 +12,26 @@ import {
812
} from 'react'
913
import { useDataset } from './dataset'
1014
import { useFilesManager } from '../filesManager'
11-
import { CellContext } from '../filesManager/types'
15+
import {
16+
CellContext,
17+
columnsDefaultVisible,
18+
defaultSortField,
19+
sortOptions,
20+
} from '../filesManager/types'
21+
import { columns } from './columns'
1222

1323
function useFilesFlatMain() {
14-
const {
15-
activeBucket,
16-
sortDirection,
17-
sortField,
18-
filters,
19-
visibleColumns,
20-
isViewingBuckets,
21-
} = useFilesManager()
24+
const tableState = useTableState('renterd/v0/filesFlat', {
25+
columns,
26+
columnsDefaultVisible,
27+
sortOptions,
28+
defaultSortField,
29+
})
30+
const { activeBucket, filters, isViewingBuckets } = useFilesManager()
2231
const { limit, marker, nextMarker, response, isMore, refresh, dataset } =
2332
useDataset({
24-
sortField,
25-
sortDirection,
33+
sortField: tableState.sortField,
34+
sortDirection: tableState.sortDirection,
2635
})
2736

2837
const _datasetPage = useMemo(() => {
@@ -77,14 +86,11 @@ function useFilesFlatMain() {
7786
refresh,
7887
limit,
7988
datasetPage,
80-
visibleColumns,
8189
marker,
8290
nextMarker,
8391
isMore,
8492
datasetPageTotal: dataset?.length || 0,
85-
sortField,
86-
filters,
87-
sortDirection,
93+
tableState,
8894
}
8995
}
9096

0 commit comments

Comments
 (0)