mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 18:36:30 +01:00 
			
		
		
		
	when resolving note path attempt to find one going through hoisted note
This commit is contained in:
		
							
								
								
									
										793
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										793
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -54,7 +54,7 @@ | |||||||
|     "jsdom": "^16.4.0", |     "jsdom": "^16.4.0", | ||||||
|     "mime-types": "2.1.29", |     "mime-types": "2.1.29", | ||||||
|     "multer": "1.4.2", |     "multer": "1.4.2", | ||||||
|     "node-abi": "2.19.3", |     "node-abi": "2.20.0", | ||||||
|     "open": "7.4.2", |     "open": "7.4.2", | ||||||
|     "portscanner": "2.2.0", |     "portscanner": "2.2.0", | ||||||
|     "rand-token": "1.0.1", |     "rand-token": "1.0.1", | ||||||
| @@ -78,8 +78,8 @@ | |||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "cross-env": "7.0.3", |     "cross-env": "7.0.3", | ||||||
|     "electron": "9.4.3", |     "electron": "9.4.4", | ||||||
|     "electron-builder": "22.9.1", |     "electron-builder": "22.10.5", | ||||||
|     "electron-packager": "15.2.0", |     "electron-packager": "15.2.0", | ||||||
|     "electron-rebuild": "2.3.5", |     "electron-rebuild": "2.3.5", | ||||||
|     "esm": "3.2.25", |     "esm": "3.2.25", | ||||||
| @@ -87,7 +87,7 @@ | |||||||
|     "jsdoc": "3.6.6", |     "jsdoc": "3.6.6", | ||||||
|     "lorem-ipsum": "2.0.3", |     "lorem-ipsum": "2.0.3", | ||||||
|     "rcedit": "3.0.0", |     "rcedit": "3.0.0", | ||||||
|     "webpack": "5.24.2", |     "webpack": "5.24.3", | ||||||
|     "webpack-cli": "4.5.0" |     "webpack-cli": "4.5.0" | ||||||
|   }, |   }, | ||||||
|   "optionalDependencies": { |   "optionalDependencies": { | ||||||
|   | |||||||
| @@ -542,7 +542,7 @@ class NoteShort { | |||||||
|             }); |             }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     hasAncestor(ancestorNote, visitedNoteIds) { |     hasAncestor(ancestorNote, visitedNoteIds = null) { | ||||||
|         if (this.noteId === ancestorNote.noteId) { |         if (this.noteId === ancestorNote.noteId) { | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -79,7 +79,7 @@ class TabContext extends Component { | |||||||
|             return inputNotePath; |             return inputNotePath; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         const resolvedNotePath = await treeService.resolveNotePath(inputNotePath); |         const resolvedNotePath = await treeService.resolveNotePath(inputNotePath, this.hoistedNoteId); | ||||||
|  |  | ||||||
|         if (!resolvedNotePath) { |         if (!resolvedNotePath) { | ||||||
|             logError(`Cannot resolve note path ${inputNotePath}`); |             logError(`Cannot resolve note path ${inputNotePath}`); | ||||||
|   | |||||||
| @@ -205,7 +205,7 @@ export default class TabManager extends Component { | |||||||
|         let hoistedNoteId = 'root'; |         let hoistedNoteId = 'root'; | ||||||
|  |  | ||||||
|         if (tabContext) { |         if (tabContext) { | ||||||
|             const resolvedNotePath = await treeService.resolveNotePath(notePath); |             const resolvedNotePath = await treeService.resolveNotePath(notePath, tabContext.hoistedNoteId); | ||||||
|  |  | ||||||
|             if (resolvedNotePath.includes(tabContext.hoistedNoteId)) { |             if (resolvedNotePath.includes(tabContext.hoistedNoteId)) { | ||||||
|                 hoistedNoteId = tabContext.hoistedNoteId; |                 hoistedNoteId = tabContext.hoistedNoteId; | ||||||
|   | |||||||
| @@ -8,8 +8,8 @@ import appContext from "./app_context.js"; | |||||||
| /** | /** | ||||||
|  * @return {string|null} |  * @return {string|null} | ||||||
|  */ |  */ | ||||||
| async function resolveNotePath(notePath) { | async function resolveNotePath(notePath, hoistedNoteId = 'root') { | ||||||
|     const runPath = await resolveNotePathToSegments(notePath); |     const runPath = await resolveNotePathToSegments(notePath, hoistedNoteId); | ||||||
|  |  | ||||||
|     return runPath ? runPath.join("/") : null; |     return runPath ? runPath.join("/") : null; | ||||||
| } | } | ||||||
| @@ -21,7 +21,7 @@ async function resolveNotePath(notePath) { | |||||||
|  * |  * | ||||||
|  * @return {string[]} |  * @return {string[]} | ||||||
|  */ |  */ | ||||||
| async function resolveNotePathToSegments(notePath, logErrors = true) { | async function resolveNotePathToSegments(notePath, hoistedNoteId = 'root', logErrors = true) { | ||||||
|     utils.assertArguments(notePath); |     utils.assertArguments(notePath); | ||||||
|  |  | ||||||
|     // we might get notePath with the tabId suffix, remove it if present |     // we might get notePath with the tabId suffix, remove it if present | ||||||
| @@ -75,7 +75,11 @@ async function resolveNotePathToSegments(notePath, logErrors = true) { | |||||||
|                     console.log(utils.now(), `Did not find parent ${parentNoteId} (${parent ? parent.title : 'n/a'}) for child ${childNoteId} (${child.title}), available parents: ${parents.map(p => `${p.noteId} (${p.title})`)}`); |                     console.log(utils.now(), `Did not find parent ${parentNoteId} (${parent ? parent.title : 'n/a'}) for child ${childNoteId} (${child.title}), available parents: ${parents.map(p => `${p.noteId} (${p.title})`)}`); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 const someNotePath = getSomeNotePath(parents[0]); |                 const hoistedNote = await treeCache.getNote(hoistedNoteId); | ||||||
|  |  | ||||||
|  |                 const chosenParent = parents.find(parent => parent.hasAncestor(hoistedNote)) | ||||||
|  |                     || parents[0]; // if no parent is in hoisted subtree then it just doesn't matter and pick any | ||||||
|  |                 const someNotePath = getSomeNotePath(chosenParent); | ||||||
|  |  | ||||||
|                 if (someNotePath) { // in case it's root the path may be empty |                 if (someNotePath) { // in case it's root the path may be empty | ||||||
|                     const pathToRoot = someNotePath.split("/").reverse(); |                     const pathToRoot = someNotePath.split("/").reverse(); | ||||||
|   | |||||||
| @@ -807,7 +807,7 @@ export default class NoteTreeWidget extends TabAwareWidget { | |||||||
|         /** @let {FancytreeNode} */ |         /** @let {FancytreeNode} */ | ||||||
|         let parentNode = this.getNodesByNoteId('root')[0]; |         let parentNode = this.getNodesByNoteId('root')[0]; | ||||||
|  |  | ||||||
|         const resolvedNotePathSegments = (await treeService.resolveNotePathToSegments(notePath, logErrors)) |         const resolvedNotePathSegments = (await treeService.resolveNotePathToSegments(notePath, this.hoistedNoteId, logErrors)) | ||||||
|             .slice(1); |             .slice(1); | ||||||
|  |  | ||||||
|         if (!resolvedNotePathSegments) { |         if (!resolvedNotePathSegments) { | ||||||
|   | |||||||
| @@ -22,6 +22,10 @@ export default class TabAwareWidget extends BasicWidget { | |||||||
|         return this.tabContext && this.tabContext.notePath; |         return this.tabContext && this.tabContext.notePath; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     get hoistedNoteId() { | ||||||
|  |         return this.tabContext && this.tabContext.hoistedNoteId; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     isEnabled() { |     isEnabled() { | ||||||
|         return !!this.note; |         return !!this.note; | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user