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 MiniSearch from 'minisearch'
|
||||
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
|
||||
|
||||
@@ -2,10 +2,11 @@ import Dexie from 'dexie'
|
||||
import type { AsPlainObject } from 'minisearch'
|
||||
import type { DocumentRef } from './globals'
|
||||
import { Notice } from 'obsidian'
|
||||
import { getObsidianApp } from './stores/obsidian-app'
|
||||
|
||||
export class OmnisearchCache extends Dexie {
|
||||
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
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import { writable } from 'svelte/store'
|
||||
import { settings } from './settings'
|
||||
import type { TFile } from 'obsidian'
|
||||
import { Platform } from 'obsidian'
|
||||
import { getObsidianApp } from './stores/obsidian-app'
|
||||
|
||||
export const regexLineSplit = /\r?\n|\r|((\.|\?|!)( |\r?\n|\r))/g
|
||||
export const regexYaml = /^---\s*\n(.*?)\n?^---\s?/ms
|
||||
@@ -101,7 +102,7 @@ export function isInputComposition(): boolean {
|
||||
* @returns
|
||||
*/
|
||||
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 = {
|
||||
@@ -114,7 +115,7 @@ export type TextExtractorApi = {
|
||||
* @returns
|
||||
*/
|
||||
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 {
|
||||
|
||||
@@ -25,14 +25,15 @@ import { database, OmnisearchCache } from './database'
|
||||
import * as NotesIndex from './notes-index'
|
||||
import { searchEngine } from './search/omnisearch'
|
||||
import { cacheManager } from './cache-manager'
|
||||
import { setObsidianApp } from './stores/obsidian-app'
|
||||
|
||||
export default class OmnisearchPlugin extends Plugin {
|
||||
private ribbonButton?: HTMLElement
|
||||
|
||||
// FIXME: fix the type
|
||||
public apiHttpServer: null | any = null
|
||||
private ribbonButton?: HTMLElement
|
||||
|
||||
async onload(): Promise<void> {
|
||||
setObsidianApp(this.app)
|
||||
await loadSettings(this)
|
||||
this.addSettingTab(new SettingsTab(this))
|
||||
|
||||
|
||||
@@ -9,8 +9,12 @@ import { cacheManager } from '../cache-manager'
|
||||
import { sortBy } from 'lodash-es'
|
||||
import { getMatches, stringsToRegex } from 'src/tools/text-processing'
|
||||
import { tokenizeForIndexing, tokenizeForSearch } from './tokenizer'
|
||||
import { getObsidianApp } from '../stores/obsidian-app'
|
||||
|
||||
export class Omnisearch {
|
||||
|
||||
app = getObsidianApp()
|
||||
|
||||
public static readonly options: Options<IndexedDocument> = {
|
||||
tokenize: tokenizeForIndexing,
|
||||
extractField: (doc, fieldName) => {
|
||||
@@ -244,16 +248,16 @@ export class Omnisearch {
|
||||
results = results.filter(
|
||||
result =>
|
||||
!(
|
||||
app.metadataCache.isUserIgnored &&
|
||||
app.metadataCache.isUserIgnored(result.id)
|
||||
this.app.metadataCache.isUserIgnored &&
|
||||
this.app.metadataCache.isUserIgnored(result.id)
|
||||
)
|
||||
)
|
||||
} else {
|
||||
// Just downrank them
|
||||
results.forEach(result => {
|
||||
if (
|
||||
app.metadataCache.isUserIgnored &&
|
||||
app.metadataCache.isUserIgnored(result.id)
|
||||
this.app.metadataCache.isUserIgnored &&
|
||||
this.app.metadataCache.isUserIgnored(result.id)
|
||||
) {
|
||||
result.score /= 10
|
||||
}
|
||||
@@ -293,7 +297,7 @@ export class Omnisearch {
|
||||
}
|
||||
|
||||
// Boost custom properties
|
||||
const metadata = app.metadataCache.getCache(path)
|
||||
const metadata = this.app.metadataCache.getCache(path)
|
||||
if (metadata) {
|
||||
for (const { name, weight } of settings.weightCustomProperties) {
|
||||
const values = metadata?.frontmatter?.[name]
|
||||
|
||||
@@ -15,6 +15,7 @@ import {
|
||||
isCacheEnabled,
|
||||
} from './globals'
|
||||
import type OmnisearchPlugin from './main'
|
||||
import { getObsidianApp } from './stores/obsidian-app'
|
||||
|
||||
interface WeightingSettings {
|
||||
weightBasename: number
|
||||
@@ -711,6 +712,8 @@ export class SettingsTab extends PluginSettingTab {
|
||||
}
|
||||
}
|
||||
|
||||
const app = getObsidianApp()
|
||||
|
||||
export const DEFAULT_SETTINGS: OmnisearchSettings = {
|
||||
useCache: true,
|
||||
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 { makeExcerpt } from './text-processing'
|
||||
import { refreshIndex } from '../notes-index'
|
||||
import { getObsidianApp } from '../stores/obsidian-app'
|
||||
|
||||
type ResultNoteApi = {
|
||||
score: number
|
||||
@@ -19,6 +20,8 @@ export type SearchMatchApi = {
|
||||
offset: number
|
||||
}
|
||||
|
||||
const app = getObsidianApp()
|
||||
|
||||
let notified = false
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { type CachedMetadata, MarkdownView, TFile } from 'obsidian'
|
||||
import type { ResultNote } from '../globals'
|
||||
import { stringsToRegex } from './text-processing'
|
||||
import { getObsidianApp } from '../stores/obsidian-app'
|
||||
|
||||
const app = getObsidianApp()
|
||||
|
||||
export async function openNote(
|
||||
item: ResultNote,
|
||||
|
||||
Reference in New Issue
Block a user