diff --git a/src/components/ModalVault.svelte b/src/components/ModalVault.svelte
index 24496e8..8482be3 100644
--- a/src/components/ModalVault.svelte
+++ b/src/components/ModalVault.svelte
@@ -3,7 +3,7 @@
import { onDestroy, onMount, tick } from 'svelte'
import InputSearch from './InputSearch.svelte'
import ModalContainer from './ModalContainer.svelte'
- import { eventBus, type ResultNote } from 'src/globals'
+ import { eventBus, IndexingStep, type ResultNote } from 'src/globals'
import { createNote, openNote } from 'src/tools/notes'
import { SearchEngine } from 'src/search/search-engine'
import { getCtrlKeyLabel, getExtension, loopIndex } from 'src/tools/utils'
@@ -24,7 +24,8 @@
let searchQuery: string | undefined
let resultNotes: ResultNote[] = []
let query: Query
- let { isIndexing } = SearchEngine
+ let { indexingStep } = SearchEngine
+ let indexingStepDesc = ''
$: selectedNote = resultNotes[selectedIndex]
$: searchQuery = searchQuery ?? previousQuery
@@ -33,6 +34,30 @@
} else {
resultNotes = []
}
+ $: {
+ switch ($indexingStep) {
+ case IndexingStep.LoadingCache:
+ indexingStepDesc = 'Loading cache...'
+ break
+ case IndexingStep.ReadingNotes:
+ updateResults()
+ indexingStepDesc = 'Reading notes...'
+ break
+ case IndexingStep.ReadingPDFs:
+ indexingStepDesc = 'Reading PDFs...'
+ break
+ case IndexingStep.ReadingImages:
+ indexingStepDesc = 'Reading images...'
+ break
+ case IndexingStep.UpdatingCache:
+ indexingStepDesc = 'Updating cache...'
+ break
+ default:
+ updateResults()
+ indexingStepDesc = ''
+ break
+ }
+ }
onMount(async () => {
eventBus.enable('vault')
@@ -211,9 +236,9 @@
{/if}
-{#if $isIndexing}
+{#if indexingStepDesc}
- ⏳ Omnisearch indexing is currently in progress
+ ⏳ Work in progress: {indexingStepDesc}
{/if}
diff --git a/src/globals.ts b/src/globals.ts
index f77e44a..dc457da 100644
--- a/src/globals.ts
+++ b/src/globals.ts
@@ -16,6 +16,15 @@ export const EventNames = {
ToggleExcerpts: 'toggle-excerpts',
} as const
+export const enum IndexingStep {
+ Done,
+ LoadingCache,
+ ReadingNotes,
+ ReadingPDFs,
+ ReadingImages,
+ UpdatingCache,
+}
+
export type IndexedDocument = {
path: string
basename: string
diff --git a/src/main.ts b/src/main.ts
index bd741a2..b924185 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -5,7 +5,7 @@ import {
OmnisearchVaultModal,
} from './components/modals'
import { loadSettings, settings, SettingsTab, showExcerpt } from './settings'
-import { eventBus, EventNames } from './globals'
+import { eventBus, EventNames, IndexingStep } from './globals'
import { registerAPI } from '@vanakat/plugin-api'
import api from './tools/api'
import { isFilePlaintext, wait } from './tools/utils'
@@ -114,6 +114,7 @@ async function populateIndex(): Promise {
}
// Load plaintext files
+ SearchEngine.indexingStep.set(IndexingStep.ReadingNotes)
console.log('Omnisearch - Reading notes')
const plainTextFiles = await FileLoader.getPlainTextFiles()
let allFiles = [...plainTextFiles]
@@ -125,6 +126,7 @@ async function populateIndex(): Promise {
// Load PDFs
if (settings.PDFIndexing) {
+ SearchEngine.indexingStep.set(IndexingStep.ReadingPDFs)
console.log('Omnisearch - Reading PDFs')
const pdfDocuments = await FileLoader.getPDFAsDocuments()
// iOS: since there's no cache, just index the documents
@@ -138,6 +140,7 @@ async function populateIndex(): Promise {
// Load Images
if (settings.imagesIndexing) {
+ SearchEngine.indexingStep.set(IndexingStep.ReadingImages)
console.log('Omnisearch - Reading Images')
const imagesDocuments = await FileLoader.getImagesAsDocuments()
// iOS: since there's no cache, just index the documents
@@ -154,6 +157,7 @@ async function populateIndex(): Promise {
// Other platforms: make a diff of what's to add/update/delete
if (!Platform.isIosApp) {
+ SearchEngine.indexingStep.set(IndexingStep.UpdatingCache)
console.log('Omnisearch - Checking index cache diff...')
// Check which documents need to be removed/added/updated
const diffDocs = await cacheManager.getDiffDocuments(allFiles)
@@ -184,7 +188,7 @@ async function populateIndex(): Promise {
// Load PDFs into the main search engine, and write cache
// SearchEngine.loadTmpDataIntoMain()
- SearchEngine.isIndexing.set(false)
+ SearchEngine.indexingStep.set(IndexingStep.Done)
if (!Platform.isIosApp && needToUpdateCache) {
console.log('Omnisearch - Writing cache...')
diff --git a/src/search/search-engine.ts b/src/search/search-engine.ts
index cbaec26..88c6d31 100644
--- a/src/search/search-engine.ts
+++ b/src/search/search-engine.ts
@@ -5,6 +5,7 @@ import {
type ResultNote,
type SearchMatch,
SPACE_OR_PUNCTUATION,
+ IndexingStep,
} from '../globals'
import {
removeDiacritics,
@@ -53,7 +54,7 @@ export const minisearchOptions: Options = {
export class SearchEngine {
private static engine?: SearchEngine
- public static isIndexing = writable(true)
+ public static indexingStep = writable(IndexingStep.LoadingCache)
/**
* The main singleton SearchEngine instance.