mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-06 11:30:13 +08:00
wip: replace packages with pure files
This commit is contained in:
1 parent
2d95ca382f
commit
87b8ca5d04
112 files changed
+740
-522
No files matched your search
@@ -0,0 +1,60 @@
|
||||
import { FileObject } from './file.js'
|
||||
import FileNode from './fileNode.js'
|
||||
|
||||
export interface FileGraphUpdateEvent {
|
||||
add?: FileObject[]
|
||||
remove?: FileObject[]
|
||||
discover?: FileObject[]
|
||||
}
|
||||
|
||||
export default class FileGraph extends FileNode {
|
||||
add(files: FileObject[]) {
|
||||
// Logic to add the file node to the graph
|
||||
// You can implement the logic to find the appropriate location in the file graph
|
||||
// If the file node already exists, throw an error
|
||||
|
||||
files.forEach((file) => {
|
||||
this.addChild(file, { makeParents: true })
|
||||
})
|
||||
}
|
||||
|
||||
remove(files: FileObject[]) {
|
||||
// Logic to remove a file node from the graph
|
||||
// If the file node is a directory, also remove all children
|
||||
// If the file node doesn't exist, throw an error
|
||||
|
||||
files.forEach((file) => {
|
||||
this.removeChild(file)
|
||||
})
|
||||
}
|
||||
|
||||
discover(eventFiles: FileObject[]) {
|
||||
// Logic to handle the discover event
|
||||
// Overwrite the file graph with the provided files
|
||||
// Remove file nodes that don't exist anymore and add new ones
|
||||
|
||||
const newNode = new FileNode(eventFiles[0])
|
||||
|
||||
eventFiles.slice(1).forEach((file) => {
|
||||
newNode.addChild(file, { makeParents: true })
|
||||
})
|
||||
|
||||
this.merge(newNode)
|
||||
}
|
||||
|
||||
handleEvent(event: FileGraphUpdateEvent) {
|
||||
// eslint-disable-next-line default-case
|
||||
switch (true) {
|
||||
case !!event.add:
|
||||
this.add(event.add)
|
||||
break
|
||||
case !!event.remove:
|
||||
this.remove(event.remove)
|
||||
break
|
||||
case !!event.discover:
|
||||
this.discover(event.discover)
|
||||
break
|
||||
// Implement other cases if needed
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user