Cleaned global app warnings
This commit is contained in:
@@ -25,6 +25,9 @@ import type { CanvasData } from 'obsidian/canvas'
|
|||||||
import type { AsPlainObject } from 'minisearch'
|
import type { AsPlainObject } from 'minisearch'
|
||||||
import type MiniSearch from 'minisearch'
|
import type MiniSearch from 'minisearch'
|
||||||
import { settings } from './settings'
|
import { settings } from './settings'
|
||||||
|
import { getObsidianApp } from './stores/obsidian-app'
|
||||||
|
|
||||||
|
const app = getObsidianApp()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function is responsible for extracting the text from a file and
|
* This function is responsible for extracting the text from a file and
|
||||||
|
|||||||
@@ -2,10 +2,11 @@ import Dexie from 'dexie'
|
|||||||
import type { AsPlainObject } from 'minisearch'
|
import type { AsPlainObject } from 'minisearch'
|
||||||
import type { DocumentRef } from './globals'
|
import type { DocumentRef } from './globals'
|
||||||
import { Notice } from 'obsidian'
|
import { Notice } from 'obsidian'
|
||||||
|
import { getObsidianApp } from './stores/obsidian-app'
|
||||||
|
|
||||||
export class OmnisearchCache extends Dexie {
|
export class OmnisearchCache extends Dexie {
|
||||||
public static readonly dbVersion = 8
|
public static readonly dbVersion = 8
|
||||||
public static readonly dbName = 'omnisearch/cache/' + app.appId
|
public static readonly dbName = 'omnisearch/cache/' + getObsidianApp().appId
|
||||||
|
|
||||||
private static instance: OmnisearchCache
|
private static instance: OmnisearchCache
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { writable } from 'svelte/store'
|
|||||||
import { settings } from './settings'
|
import { settings } from './settings'
|
||||||
import type { TFile } from 'obsidian'
|
import type { TFile } from 'obsidian'
|
||||||
import { Platform } from 'obsidian'
|
import { Platform } from 'obsidian'
|
||||||
|
import { getObsidianApp } from './stores/obsidian-app'
|
||||||
|
|
||||||
export const regexLineSplit = /\r?\n|\r|((\.|\?|!)( |\r?\n|\r))/g
|
export const regexLineSplit = /\r?\n|\r|((\.|\?|!)( |\r?\n|\r))/g
|
||||||
export const regexYaml = /^---\s*\n(.*?)\n?^---\s?/ms
|
export const regexYaml = /^---\s*\n(.*?)\n?^---\s?/ms
|
||||||
@@ -101,7 +102,7 @@ export function isInputComposition(): boolean {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function getChsSegmenter(): any | undefined {
|
export function getChsSegmenter(): any | undefined {
|
||||||
return (app as any).plugins.plugins['cm-chs-patch']
|
return (getObsidianApp() as any).plugins.plugins['cm-chs-patch']
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TextExtractorApi = {
|
export type TextExtractorApi = {
|
||||||
@@ -114,7 +115,7 @@ export type TextExtractorApi = {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function getTextExtractor(): TextExtractorApi | undefined {
|
export function getTextExtractor(): TextExtractorApi | undefined {
|
||||||
return (app as any).plugins?.plugins?.['text-extractor']?.api
|
return (getObsidianApp() as any).plugins?.plugins?.['text-extractor']?.api
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isCacheEnabled(): boolean {
|
export function isCacheEnabled(): boolean {
|
||||||
|
|||||||
@@ -25,14 +25,15 @@ import { database, OmnisearchCache } from './database'
|
|||||||
import * as NotesIndex from './notes-index'
|
import * as NotesIndex from './notes-index'
|
||||||
import { searchEngine } from './search/omnisearch'
|
import { searchEngine } from './search/omnisearch'
|
||||||
import { cacheManager } from './cache-manager'
|
import { cacheManager } from './cache-manager'
|
||||||
|
import { setObsidianApp } from './stores/obsidian-app'
|
||||||
|
|
||||||
export default class OmnisearchPlugin extends Plugin {
|
export default class OmnisearchPlugin extends Plugin {
|
||||||
private ribbonButton?: HTMLElement
|
|
||||||
|
|
||||||
// FIXME: fix the type
|
// FIXME: fix the type
|
||||||
public apiHttpServer: null | any = null
|
public apiHttpServer: null | any = null
|
||||||
|
private ribbonButton?: HTMLElement
|
||||||
|
|
||||||
async onload(): Promise<void> {
|
async onload(): Promise<void> {
|
||||||
|
setObsidianApp(this.app)
|
||||||
await loadSettings(this)
|
await loadSettings(this)
|
||||||
this.addSettingTab(new SettingsTab(this))
|
this.addSettingTab(new SettingsTab(this))
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,12 @@ import { cacheManager } from '../cache-manager'
|
|||||||
import { sortBy } from 'lodash-es'
|
import { sortBy } from 'lodash-es'
|
||||||
import { getMatches, stringsToRegex } from 'src/tools/text-processing'
|
import { getMatches, stringsToRegex } from 'src/tools/text-processing'
|
||||||
import { tokenizeForIndexing, tokenizeForSearch } from './tokenizer'
|
import { tokenizeForIndexing, tokenizeForSearch } from './tokenizer'
|
||||||
|
import { getObsidianApp } from '../stores/obsidian-app'
|
||||||
|
|
||||||
export class Omnisearch {
|
export class Omnisearch {
|
||||||
|
|
||||||
|
app = getObsidianApp()
|
||||||
|
|
||||||
public static readonly options: Options<IndexedDocument> = {
|
public static readonly options: Options<IndexedDocument> = {
|
||||||
tokenize: tokenizeForIndexing,
|
tokenize: tokenizeForIndexing,
|
||||||
extractField: (doc, fieldName) => {
|
extractField: (doc, fieldName) => {
|
||||||
@@ -244,16 +248,16 @@ export class Omnisearch {
|
|||||||
results = results.filter(
|
results = results.filter(
|
||||||
result =>
|
result =>
|
||||||
!(
|
!(
|
||||||
app.metadataCache.isUserIgnored &&
|
this.app.metadataCache.isUserIgnored &&
|
||||||
app.metadataCache.isUserIgnored(result.id)
|
this.app.metadataCache.isUserIgnored(result.id)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
// Just downrank them
|
// Just downrank them
|
||||||
results.forEach(result => {
|
results.forEach(result => {
|
||||||
if (
|
if (
|
||||||
app.metadataCache.isUserIgnored &&
|
this.app.metadataCache.isUserIgnored &&
|
||||||
app.metadataCache.isUserIgnored(result.id)
|
this.app.metadataCache.isUserIgnored(result.id)
|
||||||
) {
|
) {
|
||||||
result.score /= 10
|
result.score /= 10
|
||||||
}
|
}
|
||||||
@@ -293,7 +297,7 @@ export class Omnisearch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Boost custom properties
|
// Boost custom properties
|
||||||
const metadata = app.metadataCache.getCache(path)
|
const metadata = this.app.metadataCache.getCache(path)
|
||||||
if (metadata) {
|
if (metadata) {
|
||||||
for (const { name, weight } of settings.weightCustomProperties) {
|
for (const { name, weight } of settings.weightCustomProperties) {
|
||||||
const values = metadata?.frontmatter?.[name]
|
const values = metadata?.frontmatter?.[name]
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import {
|
|||||||
isCacheEnabled,
|
isCacheEnabled,
|
||||||
} from './globals'
|
} from './globals'
|
||||||
import type OmnisearchPlugin from './main'
|
import type OmnisearchPlugin from './main'
|
||||||
|
import { getObsidianApp } from './stores/obsidian-app'
|
||||||
|
|
||||||
interface WeightingSettings {
|
interface WeightingSettings {
|
||||||
weightBasename: number
|
weightBasename: number
|
||||||
@@ -711,6 +712,8 @@ export class SettingsTab extends PluginSettingTab {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const app = getObsidianApp()
|
||||||
|
|
||||||
export const DEFAULT_SETTINGS: OmnisearchSettings = {
|
export const DEFAULT_SETTINGS: OmnisearchSettings = {
|
||||||
useCache: true,
|
useCache: true,
|
||||||
hideExcluded: false,
|
hideExcluded: false,
|
||||||
|
|||||||
17
src/stores/obsidian-app.ts
Normal file
17
src/stores/obsidian-app.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import type { App } from 'obsidian'
|
||||||
|
|
||||||
|
let obsidianApp: App | null = null
|
||||||
|
|
||||||
|
export function setObsidianApp(app: App) {
|
||||||
|
obsidianApp = app
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function to get the Obsidian app instance.
|
||||||
|
*/
|
||||||
|
export function getObsidianApp() {
|
||||||
|
if (!obsidianApp) {
|
||||||
|
throw new Error('Obsidian app not set')
|
||||||
|
}
|
||||||
|
return obsidianApp as App
|
||||||
|
}
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
import type { ResultNote } from 'src/globals'
|
|
||||||
import { writable } from 'svelte/store'
|
|
||||||
|
|
||||||
function createSearchResultsStore() {
|
|
||||||
const { subscribe, set, update } = writable<ResultNote[]>([])
|
|
||||||
|
|
||||||
return {
|
|
||||||
subscribe,
|
|
||||||
add: (item: ResultNote) =>
|
|
||||||
update(arr => {
|
|
||||||
arr.push(item)
|
|
||||||
return arr
|
|
||||||
}),
|
|
||||||
set: (items: ResultNote[]) => set(items),
|
|
||||||
reset: () => set([]),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const searchResultsStore = createSearchResultsStore()
|
|
||||||
@@ -3,6 +3,7 @@ import { Query } from '../search/query'
|
|||||||
import { searchEngine } from '../search/omnisearch'
|
import { searchEngine } from '../search/omnisearch'
|
||||||
import { makeExcerpt } from './text-processing'
|
import { makeExcerpt } from './text-processing'
|
||||||
import { refreshIndex } from '../notes-index'
|
import { refreshIndex } from '../notes-index'
|
||||||
|
import { getObsidianApp } from '../stores/obsidian-app'
|
||||||
|
|
||||||
type ResultNoteApi = {
|
type ResultNoteApi = {
|
||||||
score: number
|
score: number
|
||||||
@@ -19,6 +20,8 @@ export type SearchMatchApi = {
|
|||||||
offset: number
|
offset: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const app = getObsidianApp()
|
||||||
|
|
||||||
let notified = false
|
let notified = false
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import { type CachedMetadata, MarkdownView, TFile } from 'obsidian'
|
import { type CachedMetadata, MarkdownView, TFile } from 'obsidian'
|
||||||
import type { ResultNote } from '../globals'
|
import type { ResultNote } from '../globals'
|
||||||
import { stringsToRegex } from './text-processing'
|
import { getObsidianApp } from '../stores/obsidian-app'
|
||||||
|
|
||||||
|
const app = getObsidianApp()
|
||||||
|
|
||||||
export async function openNote(
|
export async function openNote(
|
||||||
item: ResultNote,
|
item: ResultNote,
|
||||||
|
|||||||
Reference in New Issue
Block a user