plugins icon indicating copy to clipboard operation
plugins copied to clipboard

🧩 logseq.App.getInfo

Open utterances-bot opened this issue 1 year ago • 3 comments

https://plugins-doc.logseq.com/logseq/App/getInfo

utterances-bot avatar Aug 25 '24 08:08 utterances-bot

This is not available in 0.0.17.

benjypng avatar Aug 25 '24 08:08 benjypng

  • How to check the version of Logseq (DB model or file-based model, DB graph), for TypeScript

let logseqVersion: string = ""
let logseqMdModel: boolean = false
let logseqDbGraph: boolean = false
export const getLogseqVersion = () => logseqVersion
const replaceLogseqVersion = (version: string) => logseqVersion = version
export const booleanLogseqMdModel = () => logseqMdModel
const replaceLogseqMdModel = (mdModel: boolean) => logseqMdModel = mdModel
export const booleanDbGraph = () => logseqDbGraph
const replaceLogseqDbGraph = (dbGraph: boolean) => logseqDbGraph = dbGraph

const main = async () => {
const [logseqDbGraph, logseqMdModel] = await logseqModelCheck()

}

// Check if the model is Markdown-based. Returns false for DB models.
const checkLogseqVersion = async (): Promise<boolean> => {
    const logseqInfo = (await logseq.App.getInfo("version")) as AppInfo | any
    // The version format is like "0.11.0" or "0.11.0-alpha+nightly.20250427".
    // Extract the first three numeric parts (1-digit, 2-digit, 2-digit) using a regular expression.
    const version = logseqInfo.match(/(\d+)\.(\d+)\.(\d+)/)
    if (version) {
        replaceLogseqVersion(version[0]) // Update the version
        // If the version is 0.10.* or lower, set logseqVersionMd to true.
        if (version[0].match(/0\.([0-9]|10)\.\d+/)) {
            return true
        }
    } else {
        replaceLogseqVersion("0.0.0") // Update the version
    }
    return false
}

// Check if the graph is a DB graph. Returns true only for DB graphs.
const checkLogseqDbGraph = async (): Promise<boolean> => (logseq.App as any).checkCurrentIsDbGraph() as boolean || false


/**
 * Checks the Logseq model type (Markdown or DB graph) and handles related state and UI updates.
 * @returns Promise<boolean[]> - [isDbGraph, isMdModel]
 */
export const logseqModelCheck = async (): Promise<boolean[]> => {
    const logseqMdModel = await checkLogseqVersion() // Check if it's an MD model
    replaceLogseqMdModel(logseqMdModel)
    const logseqDbGraph = logseqMdModel === true ?
        false
        : await checkLogseqDbGraph() // Check if it's a DB graph
    replaceLogseqDbGraph(logseqDbGraph)
    // Wait for 100ms
    await new Promise(resolve => setTimeout(resolve, 100))

    if (logseqDbGraph === true) {
        // Not supported for DB graph



    }

    logseq.App.onCurrentGraphChanged(async () => { // Callback when the graph changes
        const logseqDbGraph = await checkLogseqDbGraph()
        if (logseqDbGraph === true) {
            // Not supported for DB graph



        } else {
            
        }

    })
    return [logseqDbGraph, logseqMdModel] // Return [isDbGraph, isMdModel]
}

https://github.com/YU000jp/logseq-plugin-sample-kit-typescript/blob/main/src/logseqModelCheck.ts

YU000jp avatar Jun 01 '25 04:06 YU000jp

Now logseq.App.getInfo() returns an object:

{
  version: string
  supportDb: boolean
}

benjypng avatar Nov 15 '25 04:11 benjypng