diff --git a/internal/model/rwfolder.go b/internal/model/rwfolder.go index 0213d9446..320e38d8d 100644 --- a/internal/model/rwfolder.go +++ b/internal/model/rwfolder.go @@ -528,7 +528,7 @@ nextFile: // handleDir creates or updates the given directory func (p *rwFolder) handleDir(file protocol.FileInfo) { var err error - events.Default.Log(events.ItemStarted, map[string]interface{}{ + events.Default.Log(events.ItemStarted, map[string]string{ "folder": p.folder, "item": file.Name, "type": "dir", @@ -611,7 +611,7 @@ func (p *rwFolder) handleDir(file protocol.FileInfo) { // deleteDir attempts to delete the given directory func (p *rwFolder) deleteDir(file protocol.FileInfo) { var err error - events.Default.Log(events.ItemStarted, map[string]interface{}{ + events.Default.Log(events.ItemStarted, map[string]string{ "folder": p.folder, "item": file.Name, "type": "dir", @@ -657,7 +657,7 @@ func (p *rwFolder) deleteDir(file protocol.FileInfo) { // deleteFile attempts to delete the given file func (p *rwFolder) deleteFile(file protocol.FileInfo) { var err error - events.Default.Log(events.ItemStarted, map[string]interface{}{ + events.Default.Log(events.ItemStarted, map[string]string{ "folder": p.folder, "item": file.Name, "type": "file", @@ -706,13 +706,13 @@ func (p *rwFolder) deleteFile(file protocol.FileInfo) { // and set the right attributes on it. func (p *rwFolder) renameFile(source, target protocol.FileInfo) { var err error - events.Default.Log(events.ItemStarted, map[string]interface{}{ + events.Default.Log(events.ItemStarted, map[string]string{ "folder": p.folder, "item": source.Name, "type": "file", "action": "delete", }) - events.Default.Log(events.ItemStarted, map[string]interface{}{ + events.Default.Log(events.ItemStarted, map[string]string{ "folder": p.folder, "item": target.Name, "type": "file", @@ -815,13 +815,6 @@ func (p *rwFolder) renameFile(source, target protocol.FileInfo) { // handleFile queues the copies and pulls as necessary for a single new or // changed file. func (p *rwFolder) handleFile(file protocol.FileInfo, copyChan chan<- copyBlocksState, finisherChan chan<- *sharedPullerState) { - events.Default.Log(events.ItemStarted, map[string]interface{}{ - "folder": p.folder, - "item": file.Name, - "type": "file", - "action": "update", - }) - curFile, ok := p.model.CurrentFolderFile(p.folder, file.Name) if ok && len(curFile.Blocks) == len(file.Blocks) && scanner.BlocksEqual(curFile.Blocks, file.Blocks) { @@ -831,23 +824,40 @@ func (p *rwFolder) handleFile(file protocol.FileInfo, copyChan chan<- copyBlocks if debug { l.Debugln(p, "taking shortcut on", file.Name) } + + events.Default.Log(events.ItemStarted, map[string]string{ + "folder": p.folder, + "item": file.Name, + "type": "file", + "action": "metadata", + }) + p.queue.Done(file.Name) + var err error if file.IsSymlink() { err = p.shortcutSymlink(file) } else { err = p.shortcutFile(file) } + events.Default.Log(events.ItemFinished, map[string]interface{}{ "folder": p.folder, "item": file.Name, "error": events.Error(err), "type": "file", - "action": "update", + "action": "metadata", }) return } + events.Default.Log(events.ItemStarted, map[string]string{ + "folder": p.folder, + "item": file.Name, + "type": "file", + "action": "update", + }) + scanner.PopulateOffsets(file.Blocks) // Figure out the absolute filenames we need once and for all