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

send file looks better

This commit is contained in:
Zack Scholl 2019-10-09 08:50:22 -07:00
parent e2198faa24
commit 6cdf8cecfc
3 changed files with 79 additions and 59 deletions

View file

@ -5,6 +5,6 @@ go 1.13
require (
fyne.io/fyne v1.1.1
github.com/gotk3/gotk3 v0.0.0-20190930052053-f6994e9a1558 // indirect
github.com/schollz/croc/v6 v6.1.6-0.20191009002122-3fcccecf3750
github.com/schollz/croc/v6 v6.1.6-0.20191009003006-e2198faa24d0
github.com/sqweek/dialog v0.0.0-20190728103509-6254ed5b0d3c
)

View file

@ -58,6 +58,8 @@ github.com/schollz/croc/v6 v6.1.5 h1:+qBtJXDb5uSoGpFELvfjofkSTrGc1g4YkNjF8XgEXwY
github.com/schollz/croc/v6 v6.1.5/go.mod h1:tri46MTpgVh2pPQ9IJJsJDQKHK63VfMW4+lvJAKqVlE=
github.com/schollz/croc/v6 v6.1.6-0.20191009002122-3fcccecf3750 h1:LkqHUcYqFzWi1xWV1Mtz23yUTrgKKOgTpY72IuaTi/Y=
github.com/schollz/croc/v6 v6.1.6-0.20191009002122-3fcccecf3750/go.mod h1:Wd/ZHrsZlxT21hRqbxaEWl8ww1uCHGR6xACaZQQV/wk=
github.com/schollz/croc/v6 v6.1.6-0.20191009003006-e2198faa24d0 h1:UH27BGqcbGDIog19qzaOGp6yYOwKNRZM1FgnKGpJ3PQ=
github.com/schollz/croc/v6 v6.1.6-0.20191009003006-e2198faa24d0/go.mod h1:Wd/ZHrsZlxT21hRqbxaEWl8ww1uCHGR6xACaZQQV/wk=
github.com/schollz/logger v1.0.1 h1:BuBAU+euqphM0Ny9qFVScl4RSxatis4nCHIkOxO2cUU=
github.com/schollz/logger v1.0.1/go.mod h1:P6F4/dGMGcx8wh+kG1zrNEd4vnNpEBY/mwEMd/vn6AM=
github.com/schollz/mnemonicode v1.0.1 h1:LiH5hwADZwjwnfXsaD4xgnMyTAtaKHN+e5AyjRU6WSU=

View file

@ -73,74 +73,92 @@ func main() {
progress := widget.NewProgressBar()
var sendFileButton *widget.Button
pathToFile := ""
sendFileButton = widget.NewButton("Select file", func() {
fname := ""
currentInfo := widget.NewLabel("")
sendFileButton = widget.NewButton("Choose a file to send", func() {
filename, err := nativedialog.File().Title("Select a file to send").Load()
pathToFile = filename
if err == nil {
fnames := strings.Split(filename, "\\")
sendFileButton.SetText(fnames[len(fnames)-1])
fname = fnames[len(fnames)-1]
sendFileButton.SetText(fmt.Sprintf("Sending '%s'", fname))
}
for {
if len(filename) > 0 {
break
}
time.Sleep(50 * time.Millisecond)
}
})
currentInfo := widget.NewLabel("")
codePhrase := utils.GetRandomName()
codePhrase = "zack1"
crocOptions := croc.Options{
SharedSecret: codePhrase,
IsSender: true,
Debug: false,
NoPrompt: true,
RelayAddress: models.DEFAULT_RELAY,
Stdout: false,
DisableLocal: true,
RelayPorts: strings.Split("9009,9010,9011,9012,9013", ","),
}
cr, err := croc.New(crocOptions)
if err != nil {
return
}
finfo, err := os.Stat(pathToFile)
if err != nil {
// TODO show something
return
}
currentInfo.SetText("Code phrase: " + codePhrase)
finished := false
transfering := false
prog := dialog.NewProgress("Progress", fmt.Sprintf("Transfering '%s' (%s)", fname, utils.ByteCountDecimal(finfo.Size())), w)
prog.Hide()
startTime := time.Now()
go func() {
for {
if finished || cr == nil {
mbPerSecond := float64(finfo.Size()) / time.Since(startTime).Seconds()
currentInfo.SetText(fmt.Sprintf("Finished transfer (%s/s).", utils.ByteCountDecimal(int64(mbPerSecond))))
prog.Hide()
sendFileButton.SetText("Choose a file to send")
return
}
if cr.Step1ChannelSecured {
currentInfo.SetText("Channel secured.")
}
if cr.Step4FileTransfer && !transfering {
transfering = true
currentInfo.SetText("Transfering file.")
prog.Show()
startTime = time.Now()
}
if cr.Bar != nil {
prog.SetValue(cr.Bar.State().CurrentPercent)
}
time.Sleep(100 * time.Millisecond)
}
}()
err = cr.Send(croc.TransferOptions{
PathToFiles: []string{pathToFile},
KeepPathInRemote: false,
})
if err != nil {
// TODO: do something
}
cr = nil
finished = true
fmt.Println("send")
})
sendScreen := widget.NewVBox(
widget.NewLabelWithStyle("Send a file", fyne.TextAlignCenter, fyne.TextStyle{Bold: true}),
sendFileButton,
widget.NewButton("Send", func() {
codePhrase := utils.GetRandomName()
crocOptions := croc.Options{
SharedSecret: codePhrase,
IsSender: true,
Debug: false,
NoPrompt: true,
RelayAddress: models.DEFAULT_RELAY,
Stdout: false,
DisableLocal: true,
RelayPorts: strings.Split("9009,9010,9011,9012,9013", ","),
}
cr, err := croc.New(crocOptions)
if err != nil {
return
}
currentInfo.SetText("Code phrase: " + codePhrase)
finished := false
go func() {
for {
if finished || cr == nil {
currentInfo.SetText("Finished transfer.")
return
}
if cr.Step1ChannelSecured {
currentInfo.SetText("Channel secured.")
}
if cr.Step4FileTransfer {
currentInfo.SetText("Transfering file.")
}
if cr.Bar != nil {
progress.SetValue(cr.Bar.State().CurrentPercent)
}
time.Sleep(100 * time.Millisecond)
}
}()
err = cr.Send(croc.TransferOptions{
PathToFiles: []string{pathToFile},
KeepPathInRemote: false,
})
if err != nil {
// TODO: do something
}
cr = nil
finished = true
fmt.Println("send")
}),
layout.NewSpacer(),
currentInfo,
widget.NewHBox(
widget.NewLabel("Progress:"),
progress,
),
layout.NewSpacer(),
)
var codePhraseToReceive string