1
1
import { useMemo , useState } from 'react'
2
- import { useAtomValue , useSetAtom } from 'jotai'
3
2
import { FileText , Folder } from 'lucide-react'
4
3
5
4
import FileViewer from './file-viewer'
@@ -11,29 +10,18 @@ import { Label } from '@/components/ui/label'
11
10
import { Checkbox } from '@/components/ui/checkbox'
12
11
13
12
import {
14
- applicationMode ,
15
- dryRunAtom ,
16
- includeFiles ,
17
- isInitialized ,
18
- projectFiles ,
19
- projectLocalFiles ,
13
+ useApplicationMode ,
14
+ useDryRun ,
15
+ useFilters ,
16
+ useOriginalOutput ,
17
+ useProjectLocalFiles ,
18
+ useReady ,
20
19
} from '@/store/project'
21
20
22
21
import { getFileClass , twClasses } from '@/file-classes'
23
22
24
23
export function Filters ( ) {
25
- const includedFiles = useAtomValue ( includeFiles )
26
- const setIncludeFiles = useSetAtom ( includeFiles )
27
- function toggleFilter (
28
- filter : 'unchanged' | 'added' | 'modified' | 'deleted' | 'overwritten' ,
29
- ) {
30
- setIncludeFiles ( ( state ) => {
31
- if ( state . includes ( filter ) ) {
32
- return state . filter ( ( file ) => file !== filter )
33
- }
34
- return [ ...state , filter ]
35
- } )
36
- }
24
+ const { includedFiles, toggleFilter } = useFilters ( )
37
25
38
26
return (
39
27
< div className = "p-2 rounded-md bg-gray-900 file-filters" >
@@ -104,19 +92,21 @@ export default function FileNavigator() {
104
92
'./package.json' ,
105
93
)
106
94
107
- const originalOutput = useAtomValue ( projectFiles )
108
- const localTree = useAtomValue ( projectLocalFiles )
109
- const { data : output } = useAtomValue ( dryRunAtom )
95
+ const projectFiles = useOriginalOutput ( )
96
+ const localTree = useProjectLocalFiles ( )
97
+ const dryRunOutput = useDryRun ( )
98
+
99
+ const mode = useApplicationMode ( )
110
100
111
- const mode = useAtomValue ( applicationMode )
112
- const tree = output . files
113
- const originalTree = mode === 'setup' ? output . files : originalOutput . files
114
- const deletedFiles = output . deletedFiles
101
+ const tree = dryRunOutput . files
102
+ const originalTree =
103
+ mode === 'setup' ? dryRunOutput . files : projectFiles . files
104
+ const deletedFiles = dryRunOutput . deletedFiles
115
105
116
106
const [ originalFileContents , setOriginalFileContents ] = useState < string > ( )
117
107
const [ modifiedFileContents , setModifiedFileContents ] = useState < string > ( )
118
108
119
- const includedFiles = useAtomValue ( includeFiles )
109
+ const { includedFiles } = useFilters ( )
120
110
121
111
const fileTree = useMemo ( ( ) => {
122
112
const treeData : Array < FileTreeItem > = [ ]
@@ -187,7 +177,7 @@ export default function FileNavigator() {
187
177
return treeData
188
178
} , [ tree , originalTree , localTree , includedFiles ] )
189
179
190
- const ready = useAtomValue ( isInitialized )
180
+ const ready = useReady ( )
191
181
192
182
if ( ! ready ) {
193
183
return null
0 commit comments