Skip to content

Commit 55a25cf

Browse files
committed
🔧 fix: code review view
1 parent 397a526 commit 55a25cf

File tree

2 files changed

+53
-2
lines changed

2 files changed

+53
-2
lines changed

extension/inject.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.react-directory-filename-column>svg,
22
.PRIVATE_TreeView-directory-icon>svg,
33
.PRIVATE_TreeView-item-visual>svg,
4+
.ActionList-item-visual--leading > svg,
45
#folder-row-0 svg {
56
background-size: 100% 100%;
67
background-color: transparent;

src/content.ts

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ async function applyUpdatedIcons() {
7676
const processedMainFileNames: Set<Element> = new Set()
7777
const processedTreeFileNames: Set<Element> = new Set()
7878
const processedTreeFolders: Map<Element, boolean> = new Map()
79+
const processedActionListFileNames: Set<Element> = new Set()
80+
const processedActionListFolders: Map<Element, boolean> = new Map()
7981

8082
type SvgFn = (element: Element) => SVGSVGElement | null | undefined
8183

@@ -98,7 +100,8 @@ async function applyUpdatedIcons() {
98100
else
99101
iconClass = getFileClass(fileName) || 'ICON_file'
100102

101-
svgElement?.classList.add(iconClass)
103+
if (iconClass)
104+
svgElement?.classList.add(iconClass)
102105

103106
processedFileNames.add(fileNameElement)
104107
})
@@ -125,6 +128,41 @@ async function applyUpdatedIcons() {
125128
})
126129
}
127130

131+
function processActionListFileNames(fileNames: NodeListOf<Element>, processedFileNames: Set<Element>, svgFn: SvgFn) {
132+
fileNames.forEach((fileNameElement) => {
133+
if (processedFileNames.has(fileNameElement))
134+
return
135+
136+
const fileName = fileNameElement.textContent?.trim() ?? undefined
137+
const svgElement = svgFn(fileNameElement)
138+
const iconClass = getFileClass(fileName) || 'ICON_file'
139+
140+
if (iconClass)
141+
svgElement?.classList.add(iconClass)
142+
143+
processedFileNames.add(fileNameElement)
144+
})
145+
}
146+
147+
function processActionListFolderNames(folderNames: NodeListOf<Element>, processedFolderNames: Map<Element, boolean>, svgFn: SvgFn) {
148+
folderNames.forEach((folderNameElement) => {
149+
const button = folderNameElement.closest('button.ActionList-content')
150+
const isOpen = button?.getAttribute('aria-expanded') === 'true'
151+
152+
if (processedFolderNames.has(folderNameElement) && isOpen === processedFolderNames.get(folderNameElement))
153+
return
154+
155+
const svgElement = svgFn(folderNameElement)
156+
const folderName = folderNameElement.textContent?.trim() ?? undefined
157+
const iconClass = getFolderClass(folderName, isOpen) || (isOpen ? 'ICON_folder-open' : 'ICON_folder')
158+
159+
if (iconClass)
160+
svgElement?.classList.add(iconClass)
161+
162+
processedFolderNames.set(folderNameElement, isOpen)
163+
})
164+
}
165+
128166
function processExtraIcons() {
129167
const extraFolderIcon = document.querySelector('#folder-row-0 svg')
130168
if (extraFolderIcon && !processedMainFileNames.has(extraFolderIcon)) {
@@ -150,12 +188,24 @@ async function applyUpdatedIcons() {
150188
?.querySelector('svg')
151189
processFolderNames(treeFolderNames, processedTreeFolders, treeFolderSvgFn)
152190

153-
const treeFileNames = document.querySelectorAll('span.PRIVATE_TreeView-item-content-text span')
191+
const treeFileNames = document.querySelectorAll('span.PRIVATE_TreeView-item-content-text a, span.PRIVATE_TreeView-item-content-text span')
154192
const treeSvgFn: SvgFn = element =>
155193
element.closest('div.PRIVATE_TreeView-item-content')
156194
?.querySelector('div.PRIVATE_TreeView-item-visual')
157195
?.querySelector('svg')
158196
processFileNames(treeFileNames, processedTreeFileNames, treeSvgFn, processedTreeFolders)
197+
198+
const actionListFolderNames = document.querySelectorAll('li[data-tree-entry-type="directory"] .ActionList-item-label')
199+
const actionListFolderSvgFn: SvgFn = element =>
200+
element.closest('.ActionList-content')
201+
?.querySelector('.ActionList-item-visual--leading svg')
202+
processActionListFolderNames(actionListFolderNames, processedActionListFolders, actionListFolderSvgFn)
203+
204+
const actionListFileNames = document.querySelectorAll('li[data-tree-entry-type="file"] .ActionList-item-label')
205+
const actionListFileSvgFn: SvgFn = element =>
206+
element.closest('.ActionList-content')
207+
?.querySelector('.ActionList-item-visual--leading svg')
208+
processActionListFileNames(actionListFileNames, processedActionListFileNames, actionListFileSvgFn)
159209
}
160210

161211
const observer = new MutationObserver(callback)

0 commit comments

Comments
 (0)