@@ -9,23 +9,49 @@ import styles from './index.module.css';
9
9
export default function Home ( ) {
10
10
const [ codes , setCodes ] = useState ( [ ] ) ;
11
11
const [ names , setNames ] = useState ( [ ] ) ;
12
-
12
+ const [ files , setFiles ] = useState ( [ ] ) ;
13
+
14
+ const axios = require ( 'axios' ) ;
15
+
13
16
useEffect ( ( ) => {
14
- fetch ( 'https://raw.githubusercontent.com/junnei/codetree-TILs/main/240114/%EA%B7%B8%EB%9E%98%ED%94%84%20%ED%83%90%EC%83%89/graph-traversal.py' )
15
- . then ( response => {
16
- if ( ! response . ok ) {
17
- throw new Error ( 'Network response was not ok' ) ;
18
- }
19
- return response . text ( ) ;
20
- } )
21
- . then ( data => {
22
- // Python 코드를 가져온 후 상태에 저장합니다.
23
- setCodes ( [ "print(1)" , "print(2)" , "print(3)" , "print(4)" ] ) ;
24
- setNames ( [ "junnei" , "junnei" , "junnei" , "junnei" ] ) ;
25
- } )
26
- . catch ( error => console . error ( 'Error fetching Python code:' , error ) ) ;
17
+ setCodes ( [ "print(1)" , "print(2)" , "print(3)" , "print(4)" ] ) ;
18
+ setNames ( [ "junnei1" , "junnei2" , "junnei3" , "junnei4" ] ) ;
19
+ fetchFiles ( )
27
20
} , [ ] ) ;
28
-
21
+
22
+
23
+ const fetchTreeSHA = async ( owner = "Code-Study" , repo = "Code" , branch = "main" ) => {
24
+ try {
25
+ const response = await axios . get ( `https://api.github.com/repos/${ owner } /${ repo } /branches/${ branch } ` ) ;
26
+ return response . data ;
27
+ } catch ( error ) {
28
+ console . error ( 'Error fetching repository contents:' , error ) ;
29
+ return [ ] ;
30
+ }
31
+ } ;
32
+
33
+ const fetchFiles = async ( owner = "Code-Study" , repo = "Code" , branch = "main" , recursive = true ) => {
34
+ try {
35
+ const responseBranch = await fetchTreeSHA ( owner , repo , branch )
36
+ const treeSHA = responseBranch [ "commit" ] [ "commit" ] [ "tree" ] [ "sha" ]
37
+ console . log ( treeSHA )
38
+ const response = await axios . get ( `https://api.github.com/repos/${ owner } /${ repo } /git/trees/${ treeSHA } ` , {
39
+ params : {
40
+ recursive : recursive ? "true" : "false"
41
+ }
42
+ } ) ;
43
+ const data = response . data ;
44
+ data . tree . forEach ( item => {
45
+ if ( item . type === 'blob' ) {
46
+ setFiles ( prevFiles => [ ...prevFiles , { type : 'file' , path : item . path } ] ) ;
47
+ }
48
+ } )
49
+ } catch ( error ) {
50
+ console . error ( 'Error fetching repository contents:' , error ) ;
51
+ return [ ] ;
52
+ }
53
+ } ;
54
+
29
55
return (
30
56
< Layout title = "Code Study" >
31
57
< main >
@@ -36,6 +62,15 @@ export default function Home() {
36
62
< div className = { styles . codeEditorWrapper } >
37
63
< CodeEditor names = { names } codes = { codes } showButtons />
38
64
</ div >
65
+
66
+ < div >
67
+ < h1 > Files</ h1 >
68
+ < ul >
69
+ { files . map ( ( file , index ) => (
70
+ < li key = { index } > { file . path } </ li >
71
+ ) ) }
72
+ </ ul >
73
+ </ div >
39
74
</ div >
40
75
</ main >
41
76
</ Layout >
0 commit comments