package monitor import ( "sync" st "git.davoryn.de/calic/syncwarden/internal/syncthing" ) // FolderTracker tracks per-folder status. type FolderTracker struct { mu sync.Mutex folders []FolderInfo } // NewFolderTracker creates a new folder tracker. func NewFolderTracker() *FolderTracker { return &FolderTracker{} } // UpdateFromConfig sets the folder list from Syncthing config. func (ft *FolderTracker) UpdateFromConfig(folders []st.FolderConfig) { ft.mu.Lock() defer ft.mu.Unlock() ft.folders = make([]FolderInfo, len(folders)) for i, f := range folders { ft.folders[i] = FolderInfo{ ID: f.ID, Label: f.Label, Path: f.Path, State: "unknown", } if f.Label == "" { ft.folders[i].Label = f.ID } } } // UpdateStatus updates the state for a specific folder. func (ft *FolderTracker) UpdateStatus(folderID, state string) { ft.mu.Lock() defer ft.mu.Unlock() for i := range ft.folders { if ft.folders[i].ID == folderID { ft.folders[i].State = state return } } } // Folders returns a snapshot of all folder info. func (ft *FolderTracker) Folders() []FolderInfo { ft.mu.Lock() defer ft.mu.Unlock() out := make([]FolderInfo, len(ft.folders)) copy(out, ft.folders) return out }