Skip to content

Commit 99c7278

Browse files
committed
fix(resources): sort unknown owners last and align the knowledge sort menu
An owner id that resolves to no workspace member renders an empty cell, but its sort key was `''`, so those rows floated to the TOP of an ascending Owner sort while every other valueless cell sorted last. They now key `null` and follow the same nulls-last rule on all three pages. The Knowledge sort menu also listed Owner after Last Updated while its column order — and Tables' menu — put Owner before it.
1 parent bae8c9c commit 99c7278

4 files changed

Lines changed: 16 additions & 7 deletions

File tree

apps/sim/app/workspace/[workspaceId]/components/folders/resource-sort.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,15 @@ describe('sortResources', () => {
9494
expect(names(sorted)).toEqual(['folder-z', 'item-a'])
9595
})
9696

97+
it('sorts a row whose cell renders empty last, not first', () => {
98+
// An owner id that resolves to no workspace member renders an empty cell, so its key is
99+
// `null` — passing `''` instead would float those rows to the top of an ascending sort.
100+
const rows = [entry('unknown-owner', 'item', null), entry('ada', 'item', 'Ada')]
101+
102+
expect(names(sortResources([...rows], 'asc'))).toEqual(['ada', 'unknown-owner'])
103+
expect(names(sortResources([...rows], 'desc'))).toEqual(['ada', 'unknown-owner'])
104+
})
105+
97106
it('breaks ties by name ascending regardless of direction', () => {
98107
const rows = [
99108
entry('charlie', 'item', 1),

apps/sim/app/workspace/[workspaceId]/files/files.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@ export function Files() {
545545
: sortColumn === 'updated'
546546
? new Date(folder.updatedAt).getTime()
547547
: sortColumn === 'owner'
548-
? (membersById.get(folder.userId)?.name ?? '')
548+
? (membersById.get(folder.userId)?.name ?? null)
549549
: folder.name,
550550
})
551551
}
@@ -565,7 +565,7 @@ export function Files() {
565565
: sortColumn === 'updated'
566566
? new Date(file.updatedAt).getTime()
567567
: sortColumn === 'owner'
568-
? (membersById.get(file.uploadedBy)?.name ?? '')
568+
? (membersById.get(file.uploadedBy)?.name ?? null)
569569
: file.name,
570570
})
571571
}

apps/sim/app/workspace/[workspaceId]/knowledge/knowledge.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ export function Knowledge() {
490490
: sortColumn === 'updated'
491491
? new Date(folder.updatedAt).getTime()
492492
: sortColumn === 'owner'
493-
? (membersById.get(folder.userId)?.name ?? '')
493+
? (membersById.get(folder.userId)?.name ?? null)
494494
: folder.name,
495495
})
496496
}
@@ -512,7 +512,7 @@ export function Knowledge() {
512512
: sortColumn === 'updated'
513513
? new Date(kb.updatedAt).getTime()
514514
: sortColumn === 'owner'
515-
? (membersById.get(kb.userId)?.name ?? '')
515+
? (membersById.get(kb.userId)?.name ?? null)
516516
: kb.name,
517517
})
518518
}
@@ -966,8 +966,8 @@ export function Knowledge() {
966966
{ id: 'tokens', label: 'Tokens' },
967967
{ id: 'connectors', label: 'Connectors' },
968968
{ id: 'created', label: 'Created' },
969-
{ id: 'updated', label: 'Last Updated' },
970969
{ id: 'owner', label: 'Owner' },
970+
{ id: 'updated', label: 'Last Updated' },
971971
],
972972
active: activeSort,
973973
onSort: onSortColumn,

apps/sim/app/workspace/[workspaceId]/tables/tables.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ export function Tables() {
342342
: sortColumn === 'updated'
343343
? new Date(folder.updatedAt).getTime()
344344
: sortColumn === 'owner'
345-
? (membersById.get(folder.userId)?.name ?? '')
345+
? (membersById.get(folder.userId)?.name ?? null)
346346
: folder.name,
347347
})
348348
}
@@ -362,7 +362,7 @@ export function Tables() {
362362
: sortColumn === 'updated'
363363
? new Date(table.updatedAt).getTime()
364364
: sortColumn === 'owner'
365-
? (membersById.get(table.createdBy)?.name ?? '')
365+
? (membersById.get(table.createdBy)?.name ?? null)
366366
: table.name,
367367
})
368368
}

0 commit comments

Comments
 (0)