Cleaned global app warnings

This commit is contained in:
Simon Cambier
2024-05-18 09:52:28 +02:00
parent 82fe4c7eb8
commit 5010a47466
10 changed files with 46 additions and 30 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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 {

View File

@@ -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))

View File

@@ -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]

View File

@@ -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,

View 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
}

View File

@@ -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()

View File

@@ -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
/** /**

View File

@@ -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,