#92 - Simpler cache implementation

This commit is contained in:
Simon Cambier
2022-10-26 22:21:11 +02:00
parent 33e7f8fe25
commit cb8de1ad8d
9 changed files with 379 additions and 289 deletions

View File

@@ -13,9 +13,12 @@
import { loopIndex } from 'src/tools/utils'
import { onDestroy, onMount, tick } from 'svelte'
import { MarkdownView } from 'obsidian'
import * as Search from 'src/search/search'
import { SearchEngine } from 'src/search/search-engine'
import ModalContainer from './ModalContainer.svelte'
import { OmnisearchInFileModal, OmnisearchVaultModal } from 'src/components/modals'
import {
OmnisearchInFileModal,
OmnisearchVaultModal,
} from 'src/components/modals'
import ResultItemInFile from './ResultItemInFile.svelte'
import { Query } from 'src/search/query'
import { openNote } from 'src/tools/notes'
@@ -49,7 +52,7 @@
$: (async () => {
if (searchQuery) {
query = new Query(searchQuery)
note = (await Search.getSuggestions(query, {singleFilePath}))[0] ?? null
note = (await SearchEngine.getEngine().getSuggestions(query, { singleFilePath }))[0] ?? null
lastSearch = searchQuery
}
selectedIndex = 0
@@ -102,7 +105,7 @@
async function scrollIntoView(): Promise<void> {
await tick()
const elem = document.querySelector(`[data-result-id="${selectedIndex}"]`)
elem?.scrollIntoView({behavior: 'auto', block: 'nearest'})
elem?.scrollIntoView({ behavior: 'auto', block: 'nearest' })
}
async function openSelection(
@@ -128,8 +131,8 @@
pos.ch = 0
view.editor.setCursor(pos)
view.editor.scrollIntoView({
from: {line: pos.line - 10, ch: 0},
to: {line: pos.line + 10, ch: 0},
from: { line: pos.line - 10, ch: 0 },
to: { line: pos.line + 10, ch: 0 },
})
}
}
@@ -143,7 +146,7 @@
<InputSearch
on:input="{e => (searchQuery = e.detail)}"
placeholder="Omnisearch - File"
initialValue="{searchQuery}"/>
initialValue="{searchQuery}" />
<ModalContainer>
{#if groupedOffsets.length && note}
@@ -154,7 +157,7 @@
index="{i}"
selected="{i === selectedIndex}"
on:mousemove="{_e => (selectedIndex = i)}"
on:click="{openSelection}"/>
on:click="{openSelection}" />
{/each}
{:else}
<div style="text-align: center;">