提交 7ebdfb39 编写于 作者: D Daniel Imms

Call correct promise progress callback

上级 c929bf0b
...@@ -45,7 +45,7 @@ export class NsfwWatcherService implements IWatcherService { ...@@ -45,7 +45,7 @@ export class NsfwWatcherService implements IWatcherService {
return this._watcherPromise; return this._watcherPromise;
} }
private _watch(request: IWatcherRequest): TPromise<void> { private _watch(request: IWatcherRequest): void {
let undeliveredFileEvents: watcher.IRawFileChange[] = []; let undeliveredFileEvents: watcher.IRawFileChange[] = [];
const fileEventDelayer = new ThrottledDelayer(NsfwWatcherService.FS_EVENT_DELAY); const fileEventDelayer = new ThrottledDelayer(NsfwWatcherService.FS_EVENT_DELAY);
...@@ -55,67 +55,63 @@ export class NsfwWatcherService implements IWatcherService { ...@@ -55,67 +55,63 @@ export class NsfwWatcherService implements IWatcherService {
ignored: request.ignored ignored: request.ignored
}; };
const promise = new TPromise<void>((c, e, p) => { nsfw(request.basePath, events => {
nsfw(request.basePath, events => { for (let i = 0; i < events.length; i++) {
for (let i = 0; i < events.length; i++) { const e = events[i];
const e = events[i];
// Logging // Logging
if (this._verboseLogging) { if (this._verboseLogging) {
const logPath = e.action === nsfw.actions.RENAMED ? path.join(e.directory, e.oldFile) + ' -> ' + e.newFile : path.join(e.directory, e.file); const logPath = e.action === nsfw.actions.RENAMED ? path.join(e.directory, e.oldFile) + ' -> ' + e.newFile : path.join(e.directory, e.file);
console.log(e.action === nsfw.actions.CREATED ? '[CREATED]' : e.action === nsfw.actions.DELETED ? '[DELETED]' : e.action === nsfw.actions.MODIFIED ? '[CHANGED]' : '[RENAMED]', logPath); console.log(e.action === nsfw.actions.CREATED ? '[CREATED]' : e.action === nsfw.actions.DELETED ? '[DELETED]' : e.action === nsfw.actions.MODIFIED ? '[CHANGED]' : '[RENAMED]', logPath);
} }
// Convert nsfw event to IRawFileChange and add to queue // Convert nsfw event to IRawFileChange and add to queue
let absolutePath: string; let absolutePath: string;
if (e.action === nsfw.actions.RENAMED) { if (e.action === nsfw.actions.RENAMED) {
// Rename fires when a file's name changes within a single directory // Rename fires when a file's name changes within a single directory
absolutePath = path.join(e.directory, e.oldFile); absolutePath = path.join(e.directory, e.oldFile);
if (!this._isPathIgnored(absolutePath, this._pathWatchers[request.basePath].ignored)) { if (!this._isPathIgnored(absolutePath, this._pathWatchers[request.basePath].ignored)) {
undeliveredFileEvents.push({ type: FileChangeType.DELETED, path: absolutePath }); undeliveredFileEvents.push({ type: FileChangeType.DELETED, path: absolutePath });
} }
absolutePath = path.join(e.directory, e.newFile); absolutePath = path.join(e.directory, e.newFile);
if (!this._isPathIgnored(absolutePath, this._pathWatchers[request.basePath].ignored)) { if (!this._isPathIgnored(absolutePath, this._pathWatchers[request.basePath].ignored)) {
undeliveredFileEvents.push({ type: FileChangeType.ADDED, path: absolutePath }); undeliveredFileEvents.push({ type: FileChangeType.ADDED, path: absolutePath });
} }
} else { } else {
absolutePath = path.join(e.directory, e.file); absolutePath = path.join(e.directory, e.file);
if (!this._isPathIgnored(absolutePath, this._pathWatchers[request.basePath].ignored)) { if (!this._isPathIgnored(absolutePath, this._pathWatchers[request.basePath].ignored)) {
undeliveredFileEvents.push({ undeliveredFileEvents.push({
type: nsfwActionToRawChangeType[e.action], type: nsfwActionToRawChangeType[e.action],
path: absolutePath path: absolutePath
}); });
}
} }
} }
}
// Delay and send buffer // Delay and send buffer
fileEventDelayer.trigger(() => { fileEventDelayer.trigger(() => {
const events = undeliveredFileEvents; const events = undeliveredFileEvents;
undeliveredFileEvents = []; undeliveredFileEvents = [];
// Broadcast to clients normalized // Broadcast to clients normalized
const res = watcher.normalize(events); const res = watcher.normalize(events);
p(res); this._progressCallback(res);
// Logging // Logging
if (this._verboseLogging) { if (this._verboseLogging) {
res.forEach(r => { res.forEach(r => {
console.log(' >> normalized', r.type === FileChangeType.ADDED ? '[ADDED]' : r.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]', r.path); console.log(' >> normalized', r.type === FileChangeType.ADDED ? '[ADDED]' : r.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]', r.path);
}); });
} }
return TPromise.as(null); return TPromise.as(null);
});
}).then(watcher => {
this._pathWatchers[request.basePath].watcher = watcher;
const startPromise = watcher.start();
startPromise.then(() => readyPromiseCallback(watcher));
return startPromise;
}); });
}).then(watcher => {
this._pathWatchers[request.basePath].watcher = watcher;
const startPromise = watcher.start();
startPromise.then(() => readyPromiseCallback(watcher));
return startPromise;
}); });
return promise;
} }
public setRoots(roots: IWatcherRequest[]): TPromise<void> { public setRoots(roots: IWatcherRequest[]): TPromise<void> {
...@@ -144,7 +140,7 @@ export class NsfwWatcherService implements IWatcherService { ...@@ -144,7 +140,7 @@ export class NsfwWatcherService implements IWatcherService {
}); });
// Start watching some roots // Start watching some roots
rootsToStartWatching.forEach(root => promises.push(this._watch(root))); rootsToStartWatching.forEach(root => this._watch(root));
// Refresh ignored arrays in case they changed // Refresh ignored arrays in case they changed
roots.forEach(root => { roots.forEach(root => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册