mirror of
https://github.com/tiddly-gittly/TidGi-Desktop.git
synced 2025-12-27 12:22:08 -08:00
fix: parse tag name with space
This commit is contained in:
parent
645a9cc150
commit
fc40ff3f00
4 changed files with 15 additions and 10 deletions
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
/* eslint-disable unicorn/no-null, @typescript-eslint/strict-boolean-expressions, unicorn/no-useless-undefined */
|
||||
import MenuIcon from '@mui/icons-material/Menu';
|
||||
import MenuOpenIcon from '@mui/icons-material/MenuOpen';
|
||||
|
|
|
|||
|
|
@ -65,12 +65,12 @@ export function useWorkflowFromWiki(workspacesList: IWorkspaceWithMetadata[] | u
|
|||
async () => {
|
||||
const tasks = workspacesList?.map(async (workspace) => {
|
||||
try {
|
||||
const workflowTiddlersJSONString = await window.service.wiki.wikiOperation(
|
||||
const workflowTiddlers = await window.service.wiki.wikiOperation(
|
||||
WikiChannel.getTiddlersAsJson,
|
||||
workspace.id,
|
||||
`[all[tiddlers+shadows]tag[${workflowTiddlerTagName}]]`,
|
||||
);
|
||||
return JSON.parse(workflowTiddlersJSONString ?? '[]') as IWorkflowTiddler[];
|
||||
return (workflowTiddlers ?? []) as IWorkflowTiddler[];
|
||||
} catch {
|
||||
// if workspace is hibernated or is subwiki, it will throw error, just return empty workflows array
|
||||
return [];
|
||||
|
|
@ -80,13 +80,11 @@ export function useWorkflowFromWiki(workspacesList: IWorkspaceWithMetadata[] | u
|
|||
return workspacesList?.map?.((workspace, workspaceIndex) => {
|
||||
const workflowTiddlersInWorkspace = workflowsByWorkspace[workspaceIndex];
|
||||
return workflowTiddlersInWorkspace.map((tiddler) => {
|
||||
// DEBUG: console tiddler
|
||||
console.log(`tiddler`, tiddler);
|
||||
const workflowItem: IWorkflowListItem = {
|
||||
id: `${workspace.id}:${tiddler.title}`,
|
||||
title: tiddler.title,
|
||||
description: tiddler.description,
|
||||
tags: typeof tiddler.tags === 'string' ? (tiddler.tags as string).split(' ') : tiddler.tags,
|
||||
tags: tiddler.tags.filter(item => item !== workflowTiddlerTagName),
|
||||
workspaceID: workspace.id,
|
||||
image: tiddler['page-cover'],
|
||||
metadata: {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
*/
|
||||
import { WikiChannel } from '@/constants/channels';
|
||||
import { ipcRenderer, webFrame } from 'electron';
|
||||
import type { ITiddlerFields } from 'tiddlywiki';
|
||||
|
||||
export const wikiOperations = {
|
||||
[WikiChannel.setState]: async (stateKey: string, content: string) => {
|
||||
|
|
@ -103,11 +104,15 @@ ipcRenderer.on(WikiChannel.runFilter, async (event, nonceReceived: number, filte
|
|||
});
|
||||
ipcRenderer.on(WikiChannel.getTiddlersAsJson, async (event, nonceReceived: number, filter: string) => {
|
||||
/**
|
||||
* Result is a stringified JSON array, which is a string. We just return the string, which is cheaper than ipc passing a large object array.
|
||||
* Modified from `$tw.wiki.getTiddlersAsJson` (it will turn tags into string, so we are not using it.)
|
||||
* This modified version will return Object
|
||||
*/
|
||||
const filterResult: string = await (webFrame.executeJavaScript(`
|
||||
$tw.wiki.getTiddlersAsJson(\`${filter}\`)
|
||||
`) as Promise<string>);
|
||||
const filterResult: ITiddlerFields = await (webFrame.executeJavaScript(`
|
||||
$tw.wiki.filterTiddlers(\`${filter}\`).map(title => {
|
||||
const tiddler = $tw.wiki.getTiddler(title);
|
||||
return tiddler?.fields;
|
||||
}).filter(item => item !== undefined)
|
||||
`) as Promise<ITiddlerFields>);
|
||||
ipcRenderer.send(WikiChannel.getTiddlersAsJson, nonceReceived, filterResult);
|
||||
});
|
||||
// set tiddler text, we use workspaceID as callback id
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import { sendToMainWindowAndAwait, sendToMainWindowNoWait } from '@services/libs
|
|||
import serviceIdentifier from '@services/serviceIdentifier';
|
||||
import { IWindowService } from '@services/windows/interface';
|
||||
import { WindowNames } from '@services/windows/WindowProperties';
|
||||
import type { ITiddlerFields } from 'tiddlywiki';
|
||||
|
||||
/**
|
||||
* Handle sending message to trigger operations defined in `src/preload/wikiOperation.ts`
|
||||
|
|
@ -35,7 +36,7 @@ export const wikiOperations = {
|
|||
[WikiChannel.setState]: (workspaceID: string, stateKey: WikiStateKey, content: string): void => {
|
||||
sendToMainWindowNoWait(WikiChannel.setState, workspaceID, [stateKey, content]);
|
||||
},
|
||||
[WikiChannel.getTiddlersAsJson]: async <T extends string>(workspaceID: string, filterString: string): Promise<T | undefined> => {
|
||||
[WikiChannel.getTiddlersAsJson]: async <T extends ITiddlerFields>(workspaceID: string, filterString: string): Promise<T | undefined> => {
|
||||
return await sendToMainWindowAndAwait<T>(WikiChannel.getTiddlersAsJson, workspaceID, [filterString]);
|
||||
},
|
||||
[WikiChannel.runFilter]: async <T extends string[]>(workspaceID: string, filterString: string): Promise<T | undefined> => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue