Skip to content

Commit bfa938c

Browse files
committed
fix(explorer): allow setting displayName (closes #1824)
1 parent e3c50ca commit bfa938c

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

quartz/util/fileTrie.test.ts

+32
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,17 @@ describe("FileTrie", () => {
3131
trie.add(data)
3232
assert.strictEqual(trie.children[0].displayName, "Test Title")
3333
})
34+
35+
test("should be able to set displayName", () => {
36+
const data = {
37+
title: "Test Title",
38+
slug: "test",
39+
}
40+
41+
trie.add(data)
42+
trie.children[0].displayName = "Modified"
43+
assert.strictEqual(trie.children[0].displayName, "Modified")
44+
})
3445
})
3546

3647
describe("add", () => {
@@ -121,6 +132,27 @@ describe("FileTrie", () => {
121132
assert.strictEqual(trie.children[0].displayName, "Modified")
122133
assert.strictEqual(trie.children[1].displayName, "Modified")
123134
})
135+
136+
test("map over folders should work", () => {
137+
const data1 = { title: "Test1", slug: "test1" }
138+
const data2 = { title: "Test2", slug: "a/b/test2" }
139+
140+
trie.add(data1)
141+
trie.add(data2)
142+
143+
trie.map((node) => {
144+
if (node.isFolder) {
145+
node.displayName = `Folder: ${node.displayName}`
146+
} else {
147+
node.displayName = `File: ${node.displayName}`
148+
}
149+
})
150+
151+
assert.strictEqual(trie.children[0].displayName, "File: Test1")
152+
assert.strictEqual(trie.children[1].displayName, "Folder: a")
153+
assert.strictEqual(trie.children[1].children[0].displayName, "Folder: b")
154+
assert.strictEqual(trie.children[1].children[0].children[0].displayName, "File: Test2")
155+
})
124156
})
125157

126158
describe("entries", () => {

quartz/util/fileTrie.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,23 @@ export class FileTrieNode<T extends FileTrieData = ContentDetails> {
1111
children: Array<FileTrieNode<T>>
1212

1313
private slugSegments: string[]
14+
private displayNameOverride?: string
1415
data: T | null
1516

1617
constructor(segments: string[], data?: T) {
1718
this.children = []
1819
this.slugSegments = segments
1920
this.data = data ?? null
2021
this.isFolder = false
22+
this.displayNameOverride = undefined
2123
}
2224

2325
get displayName(): string {
24-
return this.data?.title ?? this.slugSegment ?? ""
26+
return this.displayNameOverride ?? this.data?.title ?? this.slugSegment ?? ""
27+
}
28+
29+
set displayName(name: string) {
30+
this.displayNameOverride = name
2531
}
2632

2733
get slug(): FullSlug {

0 commit comments

Comments
 (0)