Compare commits

..

3 Commits

2 changed files with 28 additions and 23 deletions

View File

@ -60,10 +60,8 @@ type applyState struct {
func (s *applyState) replace(t string) string { func (s *applyState) replace(t string) string {
for k, f := range substitute { for k, f := range substitute {
t = strings.ReplaceAll(t, "%"+k, f(s)) t = strings.ReplaceAll(t, "%"+k, f(s))
go func() { replCounter.Add(uint64(len(t)))
replCounter.Add(uint64(len(t))) statusReplaces.SetText(strconv.Itoa(int(replCounter.Load())) + " bytes")
statusReplaces.SetText(strconv.Itoa(int(replCounter.Load())) + " bytes")
}()
} }
return t return t
} }
@ -86,18 +84,24 @@ func apply() {
act := *prof.Activity act := *prof.Activity
s := &applyState{} s := &applyState{}
act.State = s.replace(act.State) fyne.DoAndWait(func() {
act.Details = s.replace(act.Details) act.State = s.replace(act.State)
act.Timestamps = &discord.ActivityTimestamps{Start: launchTime.Unix()} act.Details = s.replace(act.Details)
act.Assets = &discord.ActivityAssets{ act.Timestamps = &discord.ActivityTimestamps{Start: launchTime.Unix()}
LargeImage: act.Assets.LargeImage, act.Assets = &discord.ActivityAssets{
LargeText: s.replace(act.Assets.LargeText), LargeImage: act.Assets.LargeImage,
SmallImage: act.Assets.SmallImage, LargeText: s.replace(act.Assets.LargeText),
SmallText: s.replace(act.Assets.SmallText), SmallImage: act.Assets.SmallImage,
} SmallText: s.replace(act.Assets.SmallText),
}
})
confLock.RUnlock() confLock.RUnlock()
if nonce, err := retry(&act, s); err != nil { if nonce, err := retry(&act, s); err != nil {
if errors.Is(err, syscall.EINTR) || errors.Is(err, discord.ErrNonce) {
log.Printf("abandoned further attempts on current tick: %v", err)
return
}
log.Fatalf("error setting activity: %s", err) log.Fatalf("error setting activity: %s", err)
} else { } else {
log.Printf("activity updated with nonce %s", nonce) log.Printf("activity updated with nonce %s", nonce)
@ -109,20 +113,25 @@ var retryTicker = time.NewTicker(100 * time.Millisecond)
func retry(act *discord.Activity, s *applyState) (nonce string, err error) { func retry(act *discord.Activity, s *applyState) (nonce string, err error) {
fyne.DoAndWait(func() { uiUpdateClientInfo(s) }) fyne.DoAndWait(func() { uiUpdateClientInfo(s) })
i := 0
for range retryTicker.C { for range retryTicker.C {
nonce, err = d.SetActivity(act) if i == 5 {
if err == nil {
break break
} }
nonce, err = d.SetActivity(act)
if err == nil {
fyne.DoAndWait(func() { uiSetFailureState(true) })
break
}
i++
if errors.Is(err, syscall.EINTR) || errors.Is(err, discord.ErrNonce) { if errors.Is(err, syscall.EINTR) || errors.Is(err, discord.ErrNonce) {
log.Println("retrying in 100 milliseconds...") log.Printf("retrying in 100 milliseconds...")
} else { } else {
log.Printf("cannot set activity: %v", err) log.Printf("cannot set activity: %v", err)
} }
fyne.DoAndWait(func() { uiSetFailureState(false) }) fyne.DoAndWait(func() { uiSetFailureState(false) })
} }
fyne.DoAndWait(func() { uiSetFailureState(true) })
return return
} }

View File

@ -375,15 +375,11 @@ func ui() error {
presetUp.SetIcon(theme.MoveUpIcon()) presetUp.SetIcon(theme.MoveUpIcon())
presetDown.SetIcon(theme.MoveDownIcon()) presetDown.SetIcon(theme.MoveDownIcon())
go func() {
for range time.Tick(time.Second) {
fyne.DoAndWait(func() { statusTimer.SetText(time.Now().UTC().Sub(launchTime).Round(time.Second).String()) })
}
}()
active.Store(true) active.Store(true)
go func() { go func() {
for range time.Tick(1 * time.Second) { for range time.Tick(1 * time.Second) {
fyne.DoAndWait(func() { statusTimer.SetText(time.Now().UTC().Sub(launchTime).Round(time.Second).String()) })
if active.Load() { if active.Load() {
apply() apply()
} }