download kind works

This commit is contained in:
2025-08-19 10:03:12 +02:00
parent e7293464c1
commit 0f9b423d2f
14 changed files with 587 additions and 36 deletions

View File

@@ -3,18 +3,29 @@ package app
import (
"os"
"os/signal"
"sync"
"syscall"
"fyne.io/systray"
"git.blackforestbytes.com/BlackForestBytes/goext/syncext"
"mikescher.com/kpsync"
"mikescher.com/kpsync/assets"
"mikescher.com/kpsync/log"
)
type Application struct {
masterLock sync.Mutex
config kpsync.Config
trayReady bool
sigStopChan chan bool
sigErrChan chan error
trayReady bool
uploadRunning *syncext.AtomicBool
sigStopChan chan bool // keepass exited
sigErrChan chan error // fatal error
sigSyncLoopStopChan chan bool // stop sync loop
sigTermKeepassChan chan bool // stop keepass
dbFile string
stateFile string
@@ -25,10 +36,14 @@ func NewApplication() *Application {
cfg := kpsync.LoadConfig()
return &Application{
config: cfg,
trayReady: false,
sigStopChan: make(chan bool, 128),
sigErrChan: make(chan error, 128),
masterLock: sync.Mutex{},
config: cfg,
uploadRunning: syncext.NewAtomicBool(false),
trayReady: false,
sigStopChan: make(chan bool, 128),
sigErrChan: make(chan error, 128),
sigSyncLoopStopChan: make(chan bool, 128),
sigTermKeepassChan: make(chan bool, 128),
}
}
@@ -42,6 +57,9 @@ func (app *Application) Run() {
app.sigErrChan <- err
return
}
app.setTrayStateDirect("Sleeping...", assets.IconDefault)
err = app.runSyncLoop()
if err != nil {
app.sigErrChan <- err
@@ -55,14 +73,27 @@ func (app *Application) Run() {
select {
case <-sigTerm:
app.sigSyncLoopStopChan <- true
app.sigTermKeepassChan <- true
log.LogInfo("Stopping application (received SIGTERM signal)")
// TODO term
case _ = <-app.sigErrChan:
case err := <-app.sigErrChan:
app.sigSyncLoopStopChan <- true
app.sigTermKeepassChan <- true
log.LogInfo("Stopping application (received ERROR)")
log.LogError(err.Error(), err)
// TODO stop
case _ = <-app.sigStopChan:
app.sigSyncLoopStopChan <- true
app.sigTermKeepassChan <- true
log.LogInfo("Stopping application (received STOP)")
// TODO stop
}