Text Extractor requirement

This commit is contained in:
Simon Cambier
2023-01-19 21:46:53 +01:00
parent 9c97a71d20
commit 42ba653642
3 changed files with 40 additions and 42 deletions

View File

@@ -105,11 +105,11 @@ export default class OmnisearchPlugin extends Plugin {
} }
executeFirstLaunchTasks(): void { executeFirstLaunchTasks(): void {
const code = '1.10.0-beta.1' const code = '1.10.1'
if (settings.welcomeMessage !== code) { if (settings.welcomeMessage !== code) {
const welcome = new DocumentFragment() const welcome = new DocumentFragment()
welcome.createSpan({}, span => { welcome.createSpan({}, span => {
span.innerHTML = `🔎 Omnisearch will soon require the <strong>Text Extractor</strong> plugin to index PDF and images. See Omnisearch settings for more information.` span.innerHTML = `🔎 Omnisearch now requires the <strong>Text Extractor</strong> plugin to index PDF and images. See Omnisearch settings for more information.`
}) })
new Notice(welcome, 20_000) new Notice(welcome, 20_000)
} }

View File

@@ -86,53 +86,50 @@ export class SettingsTab extends PluginSettingTab {
new Setting(containerEl).setName('Indexing').setHeading() new Setting(containerEl).setName('Indexing').setHeading()
const textExtractDesc = new DocumentFragment()
if (getTextExtractor()) { if (getTextExtractor()) {
const desc = new DocumentFragment() textExtractDesc.createSpan({}, span => {
desc.createSpan({}, span => {
span.innerHTML = `👍 You have installed <a href="https://github.com/scambier/obsidian-text-extractor">Text Extractor</a>, Omnisearch will use it to index PDFs and images. span.innerHTML = `👍 You have installed <a href="https://github.com/scambier/obsidian-text-extractor">Text Extractor</a>, Omnisearch will use it to index PDFs and images.
<br />Text extraction only works on desktop, but the cache can be synchronized with your mobile device.` <br />Text extraction only works on desktop, but the cache can be synchronized with your mobile device.`
}) })
new Setting(containerEl).setDesc(desc)
} else { } else {
const label = new DocumentFragment() textExtractDesc.createSpan({}, span => {
label.createSpan({}, span => { span.innerHTML = `⚠️ Omnisearch requires <a href="https://github.com/scambier/obsidian-text-extractor">Text Extractor</a> to index PDFs and images.`
span.innerHTML = `⚠️ Omnisearch will soon require <a href="https://github.com/scambier/obsidian-text-extractor">Text Extractor</a> to index PDFs and images.
You can already install it to get a head start.`
}) })
new Setting(containerEl).setDesc(label)
} }
new Setting(containerEl).setDesc(textExtractDesc)
// PDF Indexing // PDF Indexing
if (!Platform.isMobileApp || getTextExtractor()) { const indexPDFsDesc = new DocumentFragment()
const indexPDFsDesc = new DocumentFragment() indexPDFsDesc.createSpan({}, span => {
indexPDFsDesc.createSpan({}, span => { span.innerHTML = `Include PDFs in search results`
span.innerHTML = `Include PDFs in search results - Will soon depend on Text Extractor.` })
}) new Setting(containerEl)
new Setting(containerEl) .setName(`PDFs Indexing ${getTextExtractor() ? '' : '⚠️ Disabled'}`)
.setName(`PDFs Indexing`) .setDesc(indexPDFsDesc)
.setDesc(indexPDFsDesc) .addToggle(toggle =>
.addToggle(toggle => toggle.setValue(settings.PDFIndexing).onChange(async v => {
toggle.setValue(settings.PDFIndexing).onChange(async v => { settings.PDFIndexing = v
settings.PDFIndexing = v await saveSettings(this.plugin)
await saveSettings(this.plugin) })
}) )
) .setDisabled(!getTextExtractor())
// Images Indexing // Images Indexing
const indexImagesDesc = new DocumentFragment() const indexImagesDesc = new DocumentFragment()
indexImagesDesc.createSpan({}, span => { indexImagesDesc.createSpan({}, span => {
span.innerHTML = `Include images in search results - Will soon depend on Text Extractor.` span.innerHTML = `Include images in search results`
}) })
new Setting(containerEl) new Setting(containerEl)
.setName(`Images Indexing`) .setName(`Images Indexing ${getTextExtractor() ? '' : '⚠️ Disabled'}`)
.setDesc(indexImagesDesc) .setDesc(indexImagesDesc)
.addToggle(toggle => .addToggle(toggle =>
toggle.setValue(settings.imagesIndexing).onChange(async v => { toggle.setValue(settings.imagesIndexing).onChange(async v => {
settings.imagesIndexing = v settings.imagesIndexing = v
await saveSettings(this.plugin) await saveSettings(this.plugin)
}) })
) )
} .setDisabled(!getTextExtractor())
// Additional files to index // Additional files to index
const indexedFileTypesDesc = new DocumentFragment() const indexedFileTypesDesc = new DocumentFragment()

View File

@@ -5,16 +5,17 @@ import {
parseFrontMatterAliases, parseFrontMatterAliases,
Platform, Platform,
} from 'obsidian' } from 'obsidian'
import { getTextExtractor, type SearchMatch } from '../globals'
import { import {
excerptAfter, excerptAfter,
excerptBefore, excerptBefore,
getChsSegmenter, getChsSegmenter,
getTextExtractor,
highlightClass, highlightClass,
isSearchMatch, isSearchMatch,
regexLineSplit, regexLineSplit,
regexStripQuotes, regexStripQuotes,
regexYaml, regexYaml,
type SearchMatch,
} from '../globals' } from '../globals'
import { settings } from '../settings' import { settings } from '../settings'
import { type BinaryLike, createHash } from 'crypto' import { type BinaryLike, createHash } from 'crypto'
@@ -236,8 +237,8 @@ export function getCtrlKeyLabel(): 'ctrl' | '⌘' {
} }
export function isFileIndexable(path: string): boolean { export function isFileIndexable(path: string): boolean {
const canIndexPDF = (!Platform.isMobileApp || !!getTextExtractor()) && settings.PDFIndexing const canIndexPDF = !!getTextExtractor() && settings.PDFIndexing
const canIndexImages = (!Platform.isMobileApp || !!getTextExtractor()) && settings.imagesIndexing const canIndexImages = !!getTextExtractor() && settings.imagesIndexing
return ( return (
isFilePlaintext(path) || isFilePlaintext(path) ||
isFileCanvas(path) || isFileCanvas(path) ||