From 55768a892a9f86f4e83a5f38fe437acc533da8be Mon Sep 17 00:00:00 2001 From: Timothy Farrell Date: Mon, 30 Oct 2017 04:46:28 -0500 Subject: [PATCH] GenerateThumbnails was loading too often --- packages/gallery/src/app.js | 4 ---- .../src/contextLoaders/generateThumbnails.js | 15 ++++++++++----- packages/gallery/src/data/image.js | 2 +- packages/gallery/src/utils/watcher.js | 6 ++++-- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/packages/gallery/src/app.js b/packages/gallery/src/app.js index 2c3b1cb..c3e87c5 100644 --- a/packages/gallery/src/app.js +++ b/packages/gallery/src/app.js @@ -1,7 +1,6 @@ // import { createView } from 'domvm/dist/dev/domvm.dev.js'; import { createView } from 'domvm/dist/full/domvm.full.js'; -import * as image from './data/image.js'; import generateThumbnails from './contextLoaders/generateThumbnails.js'; import { GalleryView } from './interface/gallery.js'; import { router } from './services/router.js'; @@ -12,9 +11,6 @@ import { EventEmitter } from 'events'; EventEmitter.defaultMaxListeners = 1000; // https://github.com/pouchdb/pouchdb/issues/6123 window.db = getDatabase(); -// Watch for new images, generate thumbnails if they need them. -image.watcher(generateThumbnails); - // Attach our root view to the DOM createView(GalleryView, {}).mount(document.querySelector('#app')); diff --git a/packages/gallery/src/contextLoaders/generateThumbnails.js b/packages/gallery/src/contextLoaders/generateThumbnails.js index 58da3ee..6cc0b8e 100644 --- a/packages/gallery/src/contextLoaders/generateThumbnails.js +++ b/packages/gallery/src/contextLoaders/generateThumbnails.js @@ -1,6 +1,11 @@ -export default async function(id, deleted) { - if (!deleted) { - const module = await import('../context/generateThumbnails'); - module.invoke(id, deleted); +import * as image from '../data/image.js'; + +// Watch for new images, generate thumbnails if they need them. +image.watcher(async function generateThumbnails(id, deleted, doc) { + if (deleted || (doc.attachmentUrls.thumbnail && doc._attachments.thumbnail)) { + return; } -} + + const module = await import('../context/generateThumbnails'); + module.invoke(id); +}); diff --git a/packages/gallery/src/data/image.js b/packages/gallery/src/data/image.js index a695648..241de4a 100644 --- a/packages/gallery/src/data/image.js +++ b/packages/gallery/src/data/image.js @@ -26,7 +26,7 @@ export const imported = new Event('Image.imported'); export const removed = new Event('Image.removed'); // Watchers -export const watcher = Watcher(db, SELECTOR); +export const watcher = Watcher(db, SELECTOR, true); export const importWatcher = Watcher(db, IMPORT_SELECTOR); // Methods diff --git a/packages/gallery/src/utils/watcher.js b/packages/gallery/src/utils/watcher.js index 03f1a6f..d72b514 100644 --- a/packages/gallery/src/utils/watcher.js +++ b/packages/gallery/src/utils/watcher.js @@ -1,6 +1,6 @@ import { log, error } from '../services/console.js'; -export function Watcher(db, selector) { +export function Watcher(db, selector, include_docs) { const subscribers = new Set(); let changes = null; @@ -13,11 +13,13 @@ export function Watcher(db, selector) { .changes({ since: 'now', live: true, + include_docs, selector }) .on('change', change => { log('changed:', change); - subscribers.forEach(s => s(change.id, !!change.deleted)); + const { id, deleted, doc } = change; + subscribers.forEach(s => s(id, !!deleted, doc)); }) .on('error', err => { error(err);