diff --git a/packages/gallery/src/app.js b/packages/gallery/src/app.js index 9a54a54..3091552 100644 --- a/packages/gallery/src/app.js +++ b/packages/gallery/src/app.js @@ -9,7 +9,6 @@ import { getDatabase } from './services/db.js'; import { EventEmitter } from 'events'; EventEmitter.defaultMaxListeners = 1000; // https://github.com/pouchdb/pouchdb/issues/6123 -window.db = getDatabase(); // Attach our root view to the DOM createView(GalleryView, { db: getDatabase() }).mount(document.querySelector('#app')); diff --git a/packages/gallery/src/interface/album.js b/packages/gallery/src/interface/album.js index 7760e29..e54e5c8 100644 --- a/packages/gallery/src/interface/album.js +++ b/packages/gallery/src/interface/album.js @@ -4,9 +4,9 @@ import { ImageView } from './image.js'; import { LiveArray } from '../utils/livearray.js'; export function AlbumView(vm, model) { - const { remove } = model; + const { remove, db } = model; let data = null; - let currentMembers = []; + let currentMemberLen = -1; let title = null; function removeImageFromAlbum(id, rev) { @@ -17,18 +17,18 @@ export function AlbumView(vm, model) { const { doc, remove } = model; const { props, members } = doc; - if (title !== props.title || currentMembers.length !== members.length) { + if (title !== props.title || currentMemberLen !== members.length) { if (data) { data.cleanup(); } title = props.title; - currentMembers = members; - const SELECTOR = { - $or: [ - Object.assign({ [`tags.${title}`]: { $eq: true } }, image.SELECTOR), - { _id: { $in: members } } - ] - }; + currentMemberLen = members.length; + const SELECTOR = Object.assign( + { + [`tags.${title}`]: { $eq: true } + }, + image.SELECTOR + ); data = LiveArray(db, SELECTOR); data.subscribe(() => vm.redraw()); diff --git a/packages/gallery/src/interface/gallery.js b/packages/gallery/src/interface/gallery.js index 7bc4663..41abfcf 100644 --- a/packages/gallery/src/interface/gallery.js +++ b/packages/gallery/src/interface/gallery.js @@ -76,6 +76,7 @@ export function GalleryView(vm, model) { AlbumView, { doc: a, + db, addTag: imageTag.add, remove: imageTag.remove }, diff --git a/packages/gallery/src/services/db.js b/packages/gallery/src/services/db.js index e9ca57e..1b0572e 100644 --- a/packages/gallery/src/services/db.js +++ b/packages/gallery/src/services/db.js @@ -23,6 +23,7 @@ export function getDatabase(name = 'gallery') { } export async function getOrCreate(doc) { + const db = getDatabase(); try { const results = await db.get(doc._id); return [results, false];