Button finally transisitons game over GQL

graph-rework
noah metz 2023-06-16 17:42:49 -06:00
parent 76cea43d9b
commit 353b54757d
2 changed files with 40 additions and 13 deletions

@ -197,6 +197,9 @@ type GQLWSMsg struct {
func enableCORS(w *http.ResponseWriter) {
(*w).Header().Set("Access-Control-Allow-Origin", "*")
(*w).Header().Set("Access-Control-Allow-Credentials", "true")
(*w).Header().Set("Access-Control-Allow-Headers", "*")
(*w).Header().Set("Access-Control-Allow-Methods", "*")
}
func GQLHandler(schema graphql.Schema, ctx context.Context) func(http.ResponseWriter, *http.Request) {
@ -241,8 +244,10 @@ func GQLHandler(schema graphql.Schema, ctx context.Context) func(http.ResponseWr
func sendOneResultAndClose(res *graphql.Result) chan *graphql.Result {
resultChannel := make(chan *graphql.Result)
resultChannel <- res
close(resultChannel)
go func() {
resultChannel <- res
close(resultChannel)
}()
return resultChannel
}
@ -260,7 +265,11 @@ func getOperationTypeOfReq(p graphql.Params) string{
for _, node := range AST.Definitions {
if operationDef, ok := node.(*ast.OperationDefinition); ok {
if operationDef.Name.Value == p.OperationName || p.OperationName == "" {
name := ""
if operationDef.Name != nil {
name = operationDef.Name.Value
}
if name == p.OperationName || p.OperationName == "" {
return operationDef.Operation
}
}
@ -270,12 +279,14 @@ func getOperationTypeOfReq(p graphql.Params) string{
func GQLWSDo(p graphql.Params) chan *graphql.Result {
operation := getOperationTypeOfReq(p)
log.Logf("gqlws", "GQLWSDO_OPERATION: %s %+v", operation, p.RequestString)
if operation == ast.OperationTypeSubscription {
return graphql.Subscribe(p)
}
return sendOneResultAndClose(graphql.Do(p))
res := graphql.Do(p)
return sendOneResultAndClose(res)
}
func GQLWSHandler(schema graphql.Schema, ctx context.Context) func(http.ResponseWriter, *http.Request) {
@ -932,7 +943,7 @@ func MakeGQLHandlers(server * GQLServer) (func(http.ResponseWriter, *http.Reques
}
gql_subscriptions := graphql.Fields{
"Update": GQLSubscriptionUpdate(),
"Updates": GQLSubscriptionUpdate(),
}
for key, value := range(server.extended_subscriptions) {

@ -14,25 +14,41 @@ const client = createClient({
var game_id = null
console.log("STARTING_CLIENT")
client.subscribe({
query: "query { Arenas { Name Owner { ... on Match { Name, ID } } } }"
},
{
next: (data) => {
let obj = JSON.parse(data.data)
game_id = obj.Arenas[0].Owner.ID
console.log(game_id)
},
error: (err) => {
console.log(err)
},
complete: () => {
},
});
client.subscribe({
operationName: "Sub",
query: "query GetArenas { Arenas { Name Owner { ... on Match { Name, ID } } } } subscription Sub { Update { String } }",
query: "subscription { Updates { String } }"
},
{
next: (data) => {
console.log("NEXT")
console.log(data)
},
error: (err) => {
console.log("ERROR")
console.log(err)
},
complete: () => {
console.log("COMPLETED")
},
});
async function match_state(match_id, state) {
let url = "http://localhost:8080/gql"
let data = {
@ -45,9 +61,9 @@ async function match_state(match_id, state) {
}
const response = await fetch(url, {
method: "POST",
mode: "same-origin",
mode: "cors",
cache: "no-cache",
credentials: "include",
credentials: "same-origin",
headers: {
"Content-Type": "applicaton/json",
},
@ -60,4 +76,4 @@ async function match_state(match_id, state) {
</script>
<Button on:click={()=>match_state("eafd0201-caa4-4b35-a99b-869aac9455fa", "queue_autonomous")}>Queue Autonomous</Button>
<Button on:click={()=>match_state(game_id, "queue_autonomous")}>Queue Autonomous</Button>