From 2c02b6d6bcc763b5ce209766d381cb52a5dfa430 Mon Sep 17 00:00:00 2001 From: natecain Date: Fri, 11 Oct 2013 18:43:51 -0400 Subject: [PATCH] Remove watcher while saving, and use AddTiddler instead of modifying tiddlers directly --- .../tiddlywiki/filesystem/filesystemadaptor.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/plugins/tiddlywiki/filesystem/filesystemadaptor.js b/plugins/tiddlywiki/filesystem/filesystemadaptor.js index 9f4e422b8..24f606763 100644 --- a/plugins/tiddlywiki/filesystem/filesystemadaptor.js +++ b/plugins/tiddlywiki/filesystem/filesystemadaptor.js @@ -17,6 +17,7 @@ var fs = !$tw.browser ? require("fs") : null; function FileSystemAdaptor(syncer) { + var self = this; this.syncer = syncer; this.watchers = {}; this.pending = {}; @@ -28,7 +29,9 @@ function FileSystemAdaptor(syncer) { if(e === "change") { var tiddlers = $tw.loadTiddlersFromFile(filename).tiddlers; for(var t in tiddlers) { - $tw.wiki.tiddlers[tiddlers[t].title] = new $tw.Tiddler(tiddlers[t]); + if(tiddlers[t].title) { + $tw.wiki.addTiddler(tiddlers[t]); + } } } }); @@ -134,8 +137,14 @@ FileSystemAdaptor.prototype.saveTiddler = function(tiddler,callback) { } if($tw.boot.wikiInfo.doNotSave && $tw.boot.wikiInfo.doNotSave.indexOf(tiddler.fields.title) !== -1) { // Don't save the tiddler if it is on the blacklist - callback(null,{},0); - } else if(fileInfo.hasMetaFile) { + return callback(null,{},0); + } + if(self.watchers[fileInfo.filepath]) { + self.watchers[fileInfo.filepath].close(); + delete self.watchers[fileInfo.filepath]; + self.pending[fileInfo.filepath] = tiddler.fields.title; + } + if(fileInfo.hasMetaFile) { // Save the tiddler as a separate body and meta file var typeInfo = $tw.config.contentTypeInfo[fileInfo.type]; fs.writeFile(fileInfo.filepath,tiddler.fields.text,{encoding: typeInfo.encoding},function(err) {