diff --git a/src/win/go.mod b/src/win/go.mod index 897a05a4..09d079d5 100644 --- a/src/win/go.mod +++ b/src/win/go.mod @@ -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 ) diff --git a/src/win/go.sum b/src/win/go.sum index ab2c8d80..92280009 100644 --- a/src/win/go.sum +++ b/src/win/go.sum @@ -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= diff --git a/src/win/main.go b/src/win/main.go index a0d05e9f..7a898652 100644 --- a/src/win/main.go +++ b/src/win/main.go @@ -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