fix(explorer): allow setting displayName (closes #1824)
This commit is contained in:
		@@ -31,6 +31,17 @@ describe("FileTrie", () => {
 | 
				
			|||||||
      trie.add(data)
 | 
					      trie.add(data)
 | 
				
			||||||
      assert.strictEqual(trie.children[0].displayName, "Test Title")
 | 
					      assert.strictEqual(trie.children[0].displayName, "Test Title")
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    test("should be able to set displayName", () => {
 | 
				
			||||||
 | 
					      const data = {
 | 
				
			||||||
 | 
					        title: "Test Title",
 | 
				
			||||||
 | 
					        slug: "test",
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      trie.add(data)
 | 
				
			||||||
 | 
					      trie.children[0].displayName = "Modified"
 | 
				
			||||||
 | 
					      assert.strictEqual(trie.children[0].displayName, "Modified")
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  describe("add", () => {
 | 
					  describe("add", () => {
 | 
				
			||||||
@@ -121,6 +132,27 @@ describe("FileTrie", () => {
 | 
				
			|||||||
      assert.strictEqual(trie.children[0].displayName, "Modified")
 | 
					      assert.strictEqual(trie.children[0].displayName, "Modified")
 | 
				
			||||||
      assert.strictEqual(trie.children[1].displayName, "Modified")
 | 
					      assert.strictEqual(trie.children[1].displayName, "Modified")
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    test("map over folders should work", () => {
 | 
				
			||||||
 | 
					      const data1 = { title: "Test1", slug: "test1" }
 | 
				
			||||||
 | 
					      const data2 = { title: "Test2", slug: "a/b/test2" }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      trie.add(data1)
 | 
				
			||||||
 | 
					      trie.add(data2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      trie.map((node) => {
 | 
				
			||||||
 | 
					        if (node.isFolder) {
 | 
				
			||||||
 | 
					          node.displayName = `Folder: ${node.displayName}`
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          node.displayName = `File: ${node.displayName}`
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      assert.strictEqual(trie.children[0].displayName, "File: Test1")
 | 
				
			||||||
 | 
					      assert.strictEqual(trie.children[1].displayName, "Folder: a")
 | 
				
			||||||
 | 
					      assert.strictEqual(trie.children[1].children[0].displayName, "Folder: b")
 | 
				
			||||||
 | 
					      assert.strictEqual(trie.children[1].children[0].children[0].displayName, "File: Test2")
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  describe("entries", () => {
 | 
					  describe("entries", () => {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,6 +11,7 @@ export class FileTrieNode<T extends FileTrieData = ContentDetails> {
 | 
				
			|||||||
  children: Array<FileTrieNode<T>>
 | 
					  children: Array<FileTrieNode<T>>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private slugSegments: string[]
 | 
					  private slugSegments: string[]
 | 
				
			||||||
 | 
					  private displayNameOverride?: string
 | 
				
			||||||
  data: T | null
 | 
					  data: T | null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor(segments: string[], data?: T) {
 | 
					  constructor(segments: string[], data?: T) {
 | 
				
			||||||
@@ -18,10 +19,15 @@ export class FileTrieNode<T extends FileTrieData = ContentDetails> {
 | 
				
			|||||||
    this.slugSegments = segments
 | 
					    this.slugSegments = segments
 | 
				
			||||||
    this.data = data ?? null
 | 
					    this.data = data ?? null
 | 
				
			||||||
    this.isFolder = false
 | 
					    this.isFolder = false
 | 
				
			||||||
 | 
					    this.displayNameOverride = undefined
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get displayName(): string {
 | 
					  get displayName(): string {
 | 
				
			||||||
    return this.data?.title ?? this.slugSegment ?? ""
 | 
					    return this.displayNameOverride ?? this.data?.title ?? this.slugSegment ?? ""
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  set displayName(name: string) {
 | 
				
			||||||
 | 
					    this.displayNameOverride = name
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get slug(): FullSlug {
 | 
					  get slug(): FullSlug {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user