1
- import { useRouteData } from 'solid-app-router' ;
1
+ import { useNavigate , useRouteData } from 'solid-app-router' ;
2
2
import { Icon } from 'solid-heroicons' ;
3
3
import { eye , eyeOff , plus , x } from 'solid-heroicons/outline' ;
4
4
import { createResource , For } from 'solid-js' ;
5
+ import { defaultTabs } from '../../src' ;
5
6
import { API , useAppContext } from '../context' ;
6
7
7
8
interface Repls {
@@ -22,6 +23,7 @@ interface Repls {
22
23
export const Home = ( ) => {
23
24
const user = useRouteData ( ) ;
24
25
const context = useAppContext ( ) ! ;
26
+ const navigate = useNavigate ( ) ;
25
27
26
28
const [ repls ] = createResource (
27
29
( ) => user || context . user ( ) ?. display ,
@@ -34,13 +36,26 @@ export const Home = () => {
34
36
35
37
return (
36
38
< div class = "bg-brand-other h-full m-8" >
37
- < button class = "bg-solid-lightgray shadow-md dark:bg-solid-darkLighterBg rounded-xl p-4 text-3xl flex mx-auto" onClick = {
38
- ( ) => {
39
- fetch ( `${ API } /repls` , {
40
- method : "POST" ,
41
- } )
42
- }
43
- } >
39
+ < button
40
+ class = "bg-solid-lightgray shadow-md dark:bg-solid-darkLighterBg rounded-xl p-4 text-3xl flex mx-auto"
41
+ onClick = { async ( ) => {
42
+ const result = await fetch ( `${ API } /repl` , {
43
+ method : 'POST' ,
44
+ headers : {
45
+ authorization : `Bearer ${ context . token } ` ,
46
+ } ,
47
+ body : JSON . stringify ( {
48
+ title : 'Counter Example' ,
49
+ public : true ,
50
+ labels : [ ] ,
51
+ version : '1.0' ,
52
+ files : defaultTabs . map ( ( x ) => ( { name : `${ x . name } .${ x . type } ` , content : x . source . split ( '\n' ) } ) ) ,
53
+ } ) ,
54
+ } ) ;
55
+ const { id } = await result . json ( ) ;
56
+ navigate ( `/${ context . user ( ) ?. display } /${ id } ` ) ;
57
+ } }
58
+ >
44
59
< Icon path = { plus } class = "w-8" /> Create new REPL
45
60
</ button >
46
61
0 commit comments