Wait folder insync before sending exit event.
[src/xds/xds-server.git] / lib / model / folder.go
index 6687b68..fa94409 100644 (file)
@@ -3,6 +3,7 @@ package model
 import (
        "fmt"
 
+       "github.com/iotbzh/xds-server/lib/common"
        "github.com/iotbzh/xds-server/lib/syncthing"
        "github.com/iotbzh/xds-server/lib/xdsconfig"
 )
@@ -69,15 +70,15 @@ func (c *Folder) UpdateFolder(newFolder xdsconfig.FolderConfig) (xdsconfig.Folde
                return xdsconfig.FolderConfig{}, err
        }
 
+       // Normalize path (needed for Windows path including bashlashes)
+       newFolder.RelativePath = common.PathNormalize(newFolder.RelativePath)
+
+       // Update config folder
        c.Conf.Folders = c.Conf.Folders.Update(xdsconfig.FoldersConfig{newFolder})
 
-       err := c.SThg.FolderChange(st.FolderChangeArg{
-               ID:           newFolder.ID,
-               Label:        newFolder.Label,
-               RelativePath: newFolder.RelativePath,
-               SyncThingID:  newFolder.SyncThingID,
-               ShareRootDir: c.Conf.ShareRootDir,
-       })
+       // Update Syncthing folder
+       err := c.SThg.FolderChange(newFolder)
+
        newFolder.BuilderSThgID = c.Conf.Builder.SyncThingID // FIXME - should be removed after local ST config rework
        newFolder.Status = xdsconfig.FolderStatusEnable
 
@@ -97,3 +98,13 @@ func (c *Folder) DeleteFolder(id string) (xdsconfig.FolderConfig, error) {
 
        return fld, err
 }
+
+// ForceSync Force the synchronization of a folder
+func (c *Folder) ForceSync(id string) error {
+       return c.SThg.FolderScan(id, "")
+}
+
+// IsFolderInSync Returns true when folder is in sync
+func (c *Folder) IsFolderInSync(id string) (bool, error) {
+       return c.SThg.IsFolderInSync(id)
+}