From 336dc5c158af21214bd097c2a0eadbc44f7c2cf6 Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Thu, 13 Nov 2025 22:35:07 -0500 Subject: [PATCH] Continue dropping support for non-continuous TOTP copy --- clip/arguments.go | 2 +- clip/totp.go | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/clip/arguments.go b/clip/arguments.go index d7dd670..2792e0b 100644 --- a/clip/arguments.go +++ b/clip/arguments.go @@ -35,7 +35,7 @@ func CopyShortcut(targetLocation string, field int) error { if field == 2 { // TOTP mode fmt.Println(back.AnsiWarning + "[Starting]" + back.AnsiReset + " TOTP clipboard refresher") errorChan := make(chan error) - go TOTPCopier(decSlice[2], field, errorChan, nil) // "done" is not needed because the process runs until the program is killed + go TOTPCopier(decSlice[2], errorChan, nil) // "done" is not needed because the process runs until the program is killed err = <-errorChan if err != nil { // handle error from first copy return errors.New("error encountered in TOTP refresh process: " + err.Error()) diff --git a/clip/totp.go b/clip/totp.go index 2105a4d..22eead9 100644 --- a/clip/totp.go +++ b/clip/totp.go @@ -31,7 +31,7 @@ func GenTOTP(secret string, time time.Time, forSteam bool) (string, error) { // TOTPCopier is meant to be run as a goroutine to keep // the clipboard up-to-date with the latest TOTP token. -func TOTPCopier(secret string, oneTime int, errorChan chan<- error, done <-chan bool) error { +func TOTPCopier(secret string, errorChan chan<- error, done <-chan bool) { var forSteam bool if strings.HasPrefix(secret, "steam@") { secret = secret[6:] @@ -43,25 +43,21 @@ func TOTPCopier(secret string, oneTime int, errorChan chan<- error, done <-chan token, err := GenTOTP(secret, currentTime, forSteam) if err != nil { errorChan <- err - return err // return for when not used as goroutine; should exit on error regardless } err = CopyString(false, token) if err != nil { errorChan <- err - return err // return for when not used as goroutine; should exit on error regardless - } - if oneTime != -1 { - errorChan <- err - time.Sleep(time.Duration(30-(currentTime.Second()%30)) * time.Second) - } else { - return nil } + errorChan <- nil // indicate that first copy was successful + + // sleep till next 30-second interval + time.Sleep(time.Duration(30-(currentTime.Second()%30)) * time.Second) + // exit after sleep if indicated (will not update clipboard again) select { case <-done: - errorChan <- err - return nil + return default: } }