package main import "time" // resyncPendingUploads repairs tasks that finished locally while WebDAV was // unavailable or the user's WebDAV permission was not yet configured. func (a *App) resyncPendingUploads() { var tasks []Task if err := a.db.Where("status IN ? AND local_path <> ? AND (remote_path = ? OR remote_path IS NULL)", []string{"done", "upload_pending", "error"}, "", "").Order("id asc").Limit(100).Find(&tasks).Error; err != nil { return } for i := range tasks { t := tasks[i] if _, _, ok := a.storageForTask(&t); !ok { continue } a.upload(&t) time.Sleep(50 * time.Millisecond) } } // startWebDAVResync runs a small periodic repair loop. It is intentionally // conservative: only tasks with a completed local file and no confirmed remote path are retried. func (a *App) startWebDAVResync() { go func() { a.resyncPendingUploads() ticker := time.NewTicker(5 * time.Minute) defer ticker.Stop() for range ticker.C { a.resyncPendingUploads() } }() }