mirror of
https://github.com/Mikescher/kpsync.git
synced 2025-10-14 08:45:08 +02:00
download kind works
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user