0
0
Fork 0
mirror of https://github.com/schollz/croc.git synced 2025-10-11 13:21:00 +02:00

better ui handling with spinner

This commit is contained in:
Zack Scholl 2018-09-23 05:57:05 -07:00
parent 8afc75f1fc
commit d860fe1e9e
4 changed files with 13 additions and 12 deletions

2
go.mod
View file

@ -12,7 +12,7 @@ require (
github.com/schollz/pake v1.0.2
github.com/schollz/peerdiscovery v1.2.1
github.com/schollz/progressbar/v2 v2.5.3
github.com/schollz/spinner v0.0.0-20180922205015-b33181242d11
github.com/schollz/spinner v0.0.0-20180922210718-ea497ee41258
github.com/tscholl2/siec v0.0.0-20180721101609-21667da05937
github.com/urfave/cli v1.20.0
golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b

View file

@ -156,6 +156,7 @@ func (c *Croc) sendReceive(websocketAddress, fname, codephrase string, isSender
if err != nil {
return err
}
time.Sleep(50 * time.Millisecond)
// Cleanly close the connection by sending a close message and then
// waiting (with timeout) for the server to close the connection.

View file

@ -33,10 +33,9 @@ func Receive(isLocal bool, done chan struct{}, c *websocket.Conn, codephrase str
logger.SetLogLevel(DebugLevel)
err := receive(isLocal, c, codephrase, noPrompt, useStdout)
if err != nil {
if strings.HasPrefix(err.Error(), "websocket: close 100") {
return
if !strings.HasPrefix(err.Error(), "websocket: close 100") {
fmt.Fprintf(os.Stderr, "\n"+err.Error())
}
log.Error(err)
}
done <- struct{}{}
}
@ -73,8 +72,8 @@ func receive(isLocal bool, c *websocket.Conn, codephrase string, noPrompt bool,
if messageType == websocket.PongMessage || messageType == websocket.PingMessage {
continue
}
if messageType == websocket.TextMessage && bytes.Equal(messsage, "interrupt") {
return errors.New("interrupted by other party")
if messageType == websocket.TextMessage && bytes.Equal(message, []byte("interrupt")) {
return errors.New("\rinterrupted by other party")
}
log.Debugf("got %d: %s", messageType, message)
@ -117,7 +116,7 @@ func receive(isLocal bool, c *websocket.Conn, codephrase string, noPrompt bool,
if fstats.IsDir {
fileOrFolder = "folder"
}
fmt.Fprintf(os.Stderr, "%s %s (%s) into: %s\n",
fmt.Fprintf(os.Stderr, "\r%s %s (%s) into: %s\n",
overwritingOrReceiving,
fileOrFolder,
humanize.Bytes(uint64(fstats.Size)),

View file

@ -33,10 +33,11 @@ func Send(isLocal bool, done chan struct{}, c *websocket.Conn, fname string, cod
log.Debugf("sending %s", fname)
err := send(isLocal, c, fname, codephrase, useCompression, useEncryption)
if err != nil {
if strings.HasPrefix(err.Error(), "websocket: close 100") {
err = nil
if !strings.HasPrefix(err.Error(), "websocket: close 100") {
fmt.Fprintf(os.Stderr, "\n"+err.Error())
}
}
done <- struct{}{}
}
@ -78,8 +79,8 @@ func send(isLocal bool, c *websocket.Conn, fname string, codephrase string, useC
if messageType == websocket.PongMessage || messageType == websocket.PingMessage {
continue
}
if messageType == websocket.TextMessage && bytes.Equal(messsage, "interrupt") {
return errors.New("interrupted by other party")
if messageType == websocket.TextMessage && bytes.Equal(message, []byte("interrupt")) {
return errors.New("\rinterrupted by other party")
}
log.Debugf("got %d: %s", messageType, message)
switch step {
@ -166,7 +167,7 @@ func send(isLocal bool, c *websocket.Conn, fname string, codephrase string, useC
return errors.New("recipient refused file")
}
fmt.Fprintf(os.Stderr, "Sending...\n")
fmt.Fprintf(os.Stderr, "\rSending...\n")
// send file, compure hash simultaneously
buffer := make([]byte, 1024*1024*8)
bar := progressbar.NewOptions(