[client-app] Properly re-index threads when their data has changed

Summary:
When we detect that threads in the database have changed, if they've already
been indexed, mark them as unindexed so that the indexer picks them up and
re-indexes them with the updated data

Test Plan: manual

Reviewers: evan, spang, mark

Reviewed By: mark

Differential Revision: https://phab.nylas.com/D4023
This commit is contained in:
Juan Tejada 2017-02-22 14:39:57 -08:00
parent 93836f7973
commit 5e35d39eb2

View file

@ -122,12 +122,21 @@ class ThreadSearchIndexStore {
if (change.objectClass !== Thread.name) {
return;
}
_.defer(() => {
_.defer(async () => {
const {objects, type} = change
const threads = objects;
let promises = []
if (type === 'persist') {
const alreadyIndexedThreads = threads.filter(t => t.isSearchIndexed)
if (alreadyIndexedThreads.length > 0) {
alreadyIndexedThreads.forEach(thread => {
// Mark already indexed threads as unindexed so that we re-index them
// with updates
thread.isSearchIndexed = false
})
await DatabaseStore.inTransaction(t => t.persistModels(alreadyIndexedThreads))
}
this.indexer.notifyHasIndexingToDo();
} else if (type === 'unpersist') {
promises = threads.map(thread => this.unindexThread(thread,