diff --git a/package.json b/package.json index 381ce1c..bd35909 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "logseq-plugin-favorite-tree", - "version": "1.0.1", + "version": "1.0.2", "main": "dist/index.html", "logseq": { "id": "_sethyuan-logseq-favorite-tree", diff --git a/src/libs/utils.ts b/src/libs/utils.ts index ad4655b..fd9fc55 100644 --- a/src/libs/utils.ts +++ b/src/libs/utils.ts @@ -44,18 +44,20 @@ export async function queryForSubItems(name: string) { await logseq.DB.datascriptQuery( hierarchyProperty === "tags" ? `[:find (pull ?p [:block/name :block/original-name :block/uuid :block/properties]) - :in $ ?name + :in $ ?name ?equals ?contains :where [?t :block/name ?name] [?p :block/tags ?t]]` : `[:find (pull ?p [:block/name :block/original-name :block/uuid :block/properties]) - :in $ ?name + :in $ ?name ?equals ?contains :where [?p :block/original-name] [?p :block/properties ?props] [(get ?props :${hierarchyProperty}) ?v] - (or [(= ?v ?name)] [(contains? ?v ?name)])]`, + (or [(?equals ?v ?name)] [(?contains ?v ?name)])]`, `"${name}"`, + equals, + contains, ) ).flat() @@ -174,3 +176,14 @@ function constructFilter( obj.filters, ) } + +function equals(prop: any, val: string) { + if (prop.toLowerCase == null) return false + return prop.toLowerCase() === val.toLowerCase() +} + +function contains(prop: any, val: string) { + if (!Array.isArray(prop)) return false + const lowerVal = val.toLowerCase() + return prop.some((v) => v.toLowerCase().includes(lowerVal)) +}