@@ -13,14 +13,15 @@ import (
1313 "github.com/google/uuid"
1414)
1515
16- var openingUI = make (map [string ](chan struct {}))
1716var ServerPort = - 1
1817
19- func OpenUI (params url.Values , auth bool ) error {
18+ var sessionActive = make (map [string ]chan <- struct {})
19+
20+ func OpenUI (params url.Values , auth bool ) (<- chan struct {}, func (), error ) {
2021 if auth {
2122 allUsers , err := store .Users .List ()
2223 if err != nil {
23- return err
24+ return nil , nil , err
2425 }
2526
2627 var userName string
@@ -32,7 +33,7 @@ func OpenUI(params url.Values, auth bool) error {
3233
3334 token , err := GenerateJWT (userName )
3435 if err != nil {
35- return err
36+ return nil , nil , err
3637 }
3738 params .Set ("username" , userName )
3839 params .Set ("token" , token )
@@ -42,28 +43,27 @@ func OpenUI(params url.Values, auth bool) error {
4243 params .Set ("session" , sessionId )
4344 params .Set ("port" , strconv .Itoa (ServerPort ))
4445
45- err := openBrowser .OpenBrowser (constants .UserName , constants .AppBaseUrl + "?" + params .Encode ())
46- if err != nil {
47- return err
48- }
46+ openBrowser .OpenBrowser (constants .UserName , constants .AppBaseUrl + "?" + params .Encode ())
4947
5048 channel := make (chan struct {})
51- openingUI [sessionId ] = channel
52- defer delete (openingUI , sessionId )
49+ sessionActive [sessionId ] = channel
50+ cleanup := func () {
51+ delete (sessionActive , sessionId )
52+ }
5353
5454 select {
5555 case <- channel :
56- return nil
56+ return channel , cleanup , nil
5757 case <- time .After (5 * time .Second ):
58- return fmt .Errorf ("failed to open UI: timeout" )
58+ cleanup ()
59+ return nil , nil , fmt .Errorf ("failed to open UI: timeout" )
5960 }
6061}
6162
62- func OnUIOpened (sessionId string ) {
63- channel , ok := openingUI [sessionId ]
64- if ! ok {
65- return
63+ func OnUIActive (sessionId string ) bool {
64+ channel , ok := sessionActive [sessionId ]
65+ if ok {
66+ channel <- struct {}{}
6667 }
67- channel <- struct {}{}
68- close (channel )
68+ return ok
6969}
0 commit comments