mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 21:11:30 +08:00 
			
		
		
		
	fixes
This commit is contained in:
		
							parent
							
								
									7d9b720ea8
								
							
						
					
					
						commit
						7a62d1636b
					
				| @ -1,4 +1,4 @@ | |||||||
| FROM node:12.14.0-alpine | FROM node:12.14.1-alpine | ||||||
| 
 | 
 | ||||||
| # Create app directory | # Create app directory | ||||||
| WORKDIR /usr/src/app | WORKDIR /usr/src/app | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
| 
 | 
 | ||||||
| PKG_DIR=dist/trilium-linux-x64-server | PKG_DIR=dist/trilium-linux-x64-server | ||||||
| NODE_VERSION=12.14.0 | NODE_VERSION=12.14.1 | ||||||
| 
 | 
 | ||||||
| if [ "$1" != "DONTCOPY" ] | if [ "$1" != "DONTCOPY" ] | ||||||
| then | then | ||||||
|  | |||||||
| @ -105,7 +105,7 @@ class AppContext { | |||||||
|             new TabCachingWidget(this, () => new LinkMapWidget(this)), |             new TabCachingWidget(this, () => new LinkMapWidget(this)), | ||||||
|             new TabCachingWidget(this, () => new NoteRevisionsWidget(this)), |             new TabCachingWidget(this, () => new NoteRevisionsWidget(this)), | ||||||
|             new TabCachingWidget(this, () => new SimilarNotesWidget(this)), |             new TabCachingWidget(this, () => new SimilarNotesWidget(this)), | ||||||
|             new TabCachingWidget(this, () => new WhatLinksHereWidget(this)), |             new TabCachingWidget(this, () => new WhatLinksHereWidget(this)) | ||||||
|         ]; |         ]; | ||||||
| 
 | 
 | ||||||
|         for (const widget of rightPaneWidgets) { |         for (const widget of rightPaneWidgets) { | ||||||
| @ -320,7 +320,7 @@ class AppContext { | |||||||
| 
 | 
 | ||||||
|         this.activeTabId = tabId; |         this.activeTabId = tabId; | ||||||
| 
 | 
 | ||||||
|         this.trigger('activeTabChanged', { oldActiveTabId }); |         this.trigger('activeTabChanged', { oldActiveTabId, newActiveTabId: tabId }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     newTabListener() { |     newTabListener() { | ||||||
|  | |||||||
| @ -7,8 +7,10 @@ export default class SpacedUpdate { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     scheduleUpdate() { |     scheduleUpdate() { | ||||||
|  |         if (!this.changeForbidden) { | ||||||
|             this.changed = true; |             this.changed = true; | ||||||
|         setTimeout(() => this.triggerUpdate()) |             setTimeout(() => this.triggerUpdate()); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async updateNowIfNecessary() { |     async updateNowIfNecessary() { | ||||||
| @ -33,4 +35,15 @@ export default class SpacedUpdate { | |||||||
|             this.scheduleUpdate(); |             this.scheduleUpdate(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     allowUpdateWithoutChange(callback) { | ||||||
|  |         this.changeForbidden = true; | ||||||
|  | 
 | ||||||
|  |         try { | ||||||
|  |             callback(); | ||||||
|  |         } | ||||||
|  |         finally { | ||||||
|  |             this.changeForbidden = false; | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ export default class Component { | |||||||
|     async eventReceived(name, data, sync = false) { |     async eventReceived(name, data, sync = false) { | ||||||
|         await this.initialized; |         await this.initialized; | ||||||
| 
 | 
 | ||||||
| //        console.log(`Received ${name} to ${this.componentId}`);
 |         console.log(`Received ${name} to ${this.componentId}`); | ||||||
| 
 | 
 | ||||||
|         const fun = this[name + 'Listener']; |         const fun = this[name + 'Listener']; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -138,12 +138,11 @@ export default class NoteDetailWidget extends TabAwareWidget { | |||||||
|         const clazz = await import(typeWidgetClasses[type]); |         const clazz = await import(typeWidgetClasses[type]); | ||||||
| 
 | 
 | ||||||
|         const typeWidget = this.typeWidgets[type] = new clazz.default(this.appContext); |         const typeWidget = this.typeWidgets[type] = new clazz.default(this.appContext); | ||||||
|  |         typeWidget.spacedUpdate = this.spacedUpdate; | ||||||
|  | 
 | ||||||
|         this.children.push(typeWidget); |         this.children.push(typeWidget); | ||||||
| 
 |  | ||||||
|         this.$widget.append(typeWidget.render()); |         this.$widget.append(typeWidget.render()); | ||||||
| 
 | 
 | ||||||
|         typeWidget.onNoteChange(() => this.spacedUpdate.scheduleUpdate()); |  | ||||||
| 
 |  | ||||||
|         typeWidget.eventReceived('setTabContext', {tabContext: this.tabContext}); |         typeWidget.eventReceived('setTabContext', {tabContext: this.tabContext}); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -464,8 +464,8 @@ export default class TabRowWidget extends BasicWidget { | |||||||
|         return !!this.activeTabEl; |         return !!this.activeTabEl; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     activeTabChangedListener({tabId}) { |     activeTabChangedListener({newActiveTabId}) { | ||||||
|         const tabEl = this.getTabById(tabId)[0]; |         const tabEl = this.getTabById(newActiveTabId)[0]; | ||||||
|         const activeTabEl = this.activeTabEl; |         const activeTabEl = this.activeTabEl; | ||||||
|         if (activeTabEl === tabEl) return; |         if (activeTabEl === tabEl) return; | ||||||
|         if (activeTabEl) activeTabEl.removeAttribute('active'); |         if (activeTabEl) activeTabEl.removeAttribute('active'); | ||||||
|  | |||||||
| @ -39,6 +39,7 @@ const TPL = ` | |||||||
|     .note-detail-book { |     .note-detail-book { | ||||||
|         height: 100%; |         height: 100%; | ||||||
|         padding: 10px; |         padding: 10px; | ||||||
|  |         position: relative; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     .note-detail-book-content { |     .note-detail-book-content { | ||||||
| @ -280,14 +281,8 @@ export default class BookTypeWidget extends TypeWidget { | |||||||
|         return ""; |         return ""; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     show() { |  | ||||||
|         this.$widget.show(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     focus() {} |     focus() {} | ||||||
| 
 | 
 | ||||||
|     onNoteChange() {} |  | ||||||
| 
 |  | ||||||
|     cleanup() { |     cleanup() { | ||||||
|         this.$content.empty(); |         this.$content.empty(); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -68,10 +68,11 @@ export default class CodeTypeWidget extends TypeWidget { | |||||||
|             dragDrop: false // with true the editor inlines dropped files which is not what we expect
 |             dragDrop: false // with true the editor inlines dropped files which is not what we expect
 | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|         //this.onNoteChange(() => this.tabContext.noteChanged());
 |         this.codeEditor.on('change', () => this.spacedUpdate.scheduleUpdate()); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     doRefresh(note) { |     doRefresh(note) { | ||||||
|  |         this.spacedUpdate.allowUpdateWithoutChange(() => { | ||||||
|             // CodeMirror breaks pretty badly on null so even though it shouldn't happen (guarded by consistency check)
 |             // CodeMirror breaks pretty badly on null so even though it shouldn't happen (guarded by consistency check)
 | ||||||
|             // we provide fallback
 |             // we provide fallback
 | ||||||
|             this.codeEditor.setValue(note.content || ""); |             this.codeEditor.setValue(note.content || ""); | ||||||
| @ -82,6 +83,7 @@ export default class CodeTypeWidget extends TypeWidget { | |||||||
|                 this.codeEditor.setOption("mode", info.mime); |                 this.codeEditor.setOption("mode", info.mime); | ||||||
|                 CodeMirror.autoLoadMode(this.codeEditor, info.mode); |                 CodeMirror.autoLoadMode(this.codeEditor, info.mode); | ||||||
|             } |             } | ||||||
|  |         }); | ||||||
| 
 | 
 | ||||||
|         this.show(); |         this.show(); | ||||||
|     } |     } | ||||||
| @ -123,12 +125,6 @@ export default class CodeTypeWidget extends TypeWidget { | |||||||
|         toastService.showMessage("Note executed"); |         toastService.showMessage("Note executed"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async onNoteChange(func) { |  | ||||||
|         await this.initialized; |  | ||||||
| 
 |  | ||||||
|         this.codeEditor.on('change', func); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     cleanup() { |     cleanup() { | ||||||
|         if (this.codeEditor) { |         if (this.codeEditor) { | ||||||
|             this.codeEditor.setValue(''); |             this.codeEditor.setValue(''); | ||||||
|  | |||||||
| @ -40,14 +40,10 @@ export default class EmptyTypeWidget extends TypeWidget { | |||||||
|         this.toggle(!this.tabContext.note); |         this.toggle(!this.tabContext.note); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     show() {} |  | ||||||
| 
 |  | ||||||
|     getContent() {} |     getContent() {} | ||||||
| 
 | 
 | ||||||
|     focus() {} |     focus() {} | ||||||
| 
 | 
 | ||||||
|     onNoteChange() {} |  | ||||||
| 
 |  | ||||||
|     cleanup() {} |     cleanup() {} | ||||||
| 
 | 
 | ||||||
|     scrollToTop() {} |     scrollToTop() {} | ||||||
|  | |||||||
| @ -144,14 +144,10 @@ export default class FileTypeWidget extends TypeWidget { | |||||||
|         return utils.getUrlForDownload("api/notes/" + this.tabContext.note.noteId + "/download"); |         return utils.getUrlForDownload("api/notes/" + this.tabContext.note.noteId + "/download"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     show() {} |  | ||||||
| 
 |  | ||||||
|     getContent() {} |     getContent() {} | ||||||
| 
 | 
 | ||||||
|     focus() {} |     focus() {} | ||||||
| 
 | 
 | ||||||
|     onNoteChange() {} |  | ||||||
| 
 |  | ||||||
|     cleanup() {} |     cleanup() {} | ||||||
| 
 | 
 | ||||||
|     scrollToTop() {} |     scrollToTop() {} | ||||||
|  | |||||||
| @ -149,14 +149,10 @@ class NoteDetailImage extends TypeWidget { | |||||||
|         return utils.getUrlForDownload(`api/notes/${this.tabContext.note.noteId}/download`); |         return utils.getUrlForDownload(`api/notes/${this.tabContext.note.noteId}/download`); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     show() {} |  | ||||||
| 
 |  | ||||||
|     getContent() {} |     getContent() {} | ||||||
| 
 | 
 | ||||||
|     focus() {} |     focus() {} | ||||||
| 
 | 
 | ||||||
|     onNoteChange() {} |  | ||||||
| 
 |  | ||||||
|     cleanup() {} |     cleanup() {} | ||||||
| 
 | 
 | ||||||
|     scrollToTop() { |     scrollToTop() { | ||||||
|  | |||||||
| @ -40,14 +40,10 @@ export default class ProtectedSessionTypeWidget extends TypeWidget { | |||||||
|         return this.$widget; |         return this.$widget; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     show() {} |  | ||||||
| 
 |  | ||||||
|     getContent() {} |     getContent() {} | ||||||
| 
 | 
 | ||||||
|     focus() {} |     focus() {} | ||||||
| 
 | 
 | ||||||
|     onNoteChange() {} |  | ||||||
| 
 |  | ||||||
|     cleanup() {} |     cleanup() {} | ||||||
| 
 | 
 | ||||||
|     scrollToTop() { |     scrollToTop() { | ||||||
|  | |||||||
| @ -644,11 +644,7 @@ export default class RelationMapTypeWidget extends TypeWidget { | |||||||
|         return JSON.stringify(this.mapData); |         return JSON.stringify(this.mapData); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     show() {} |  | ||||||
| 
 |  | ||||||
|     focus() {} |     focus() {} | ||||||
| 
 | 
 | ||||||
|     onNoteChange() {} |  | ||||||
| 
 |  | ||||||
|     scrollToTop() {} |     scrollToTop() {} | ||||||
| } | } | ||||||
| @ -40,12 +40,8 @@ export default class RenderTypeWidget extends TypeWidget { | |||||||
| 
 | 
 | ||||||
|     getContent() {} |     getContent() {} | ||||||
| 
 | 
 | ||||||
|     show() {} |  | ||||||
| 
 |  | ||||||
|     focus() {} |     focus() {} | ||||||
| 
 | 
 | ||||||
|     onNoteChange() {} |  | ||||||
| 
 |  | ||||||
|     cleanup() { |     cleanup() { | ||||||
|         this.$noteDetailRenderContent.empty(); |         this.$noteDetailRenderContent.empty(); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -65,10 +65,6 @@ export default class SearchTypeWidget extends TypeWidget { | |||||||
| 
 | 
 | ||||||
|     focus() {} |     focus() {} | ||||||
| 
 | 
 | ||||||
|     show() {} |  | ||||||
| 
 |  | ||||||
|     onNoteChange() {} |  | ||||||
| 
 |  | ||||||
|     cleanup() {} |     cleanup() {} | ||||||
| 
 | 
 | ||||||
|     scrollToTop() {} |     scrollToTop() {} | ||||||
|  | |||||||
| @ -128,6 +128,8 @@ export default class TextTypeWidget extends TypeWidget { | |||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|  |         this.textEditor.model.document.on('change:data', () => this.spacedUpdate.scheduleUpdate()); | ||||||
|  | 
 | ||||||
|         if (glob.isDev && ENABLE_INSPECTOR) { |         if (glob.isDev && ENABLE_INSPECTOR) { | ||||||
|             await import('../../libraries/ckeditor/inspector.js'); |             await import('../../libraries/ckeditor/inspector.js'); | ||||||
|             CKEditorInspector.attach(this.textEditor); |             CKEditorInspector.attach(this.textEditor); | ||||||
| @ -137,9 +139,9 @@ export default class TextTypeWidget extends TypeWidget { | |||||||
|     async doRefresh(note) { |     async doRefresh(note) { | ||||||
|         this.textEditor.isReadOnly = await this.isReadOnly(); |         this.textEditor.isReadOnly = await this.isReadOnly(); | ||||||
| 
 | 
 | ||||||
|         this.$widget.show(); |         this.spacedUpdate.allowUpdateWithoutChange(() => { | ||||||
| 
 |  | ||||||
|             this.textEditor.setData(note.content); |             this.textEditor.setData(note.content); | ||||||
|  |         }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     getContent() { |     getContent() { | ||||||
| @ -174,12 +176,6 @@ export default class TextTypeWidget extends TypeWidget { | |||||||
|         return this.textEditor; |         return this.textEditor; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async onNoteChange(func) { |  | ||||||
|         await this.initialized; |  | ||||||
| 
 |  | ||||||
|         this.textEditor.model.document.on('change:data', func); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     cleanup() { |     cleanup() { | ||||||
|         if (this.textEditor) { |         if (this.textEditor) { | ||||||
|             this.textEditor.setData(''); |             this.textEditor.setData(''); | ||||||
|  | |||||||
| @ -92,7 +92,9 @@ async function fillInAdditionalProperties(sync) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async function sendPing(client) { | async function sendPing(client) { | ||||||
|     const syncData = require('./sync_table').getEntitySyncsNewerThan(lastAcceptedSyncIds[client.id]); |     const syncData = require('./sync_table') | ||||||
|  |         .getEntitySyncsNewerThan(lastAcceptedSyncIds[client.id]) | ||||||
|  |         .filter(r => r.entityName !== 'recent_notes'); // only noise ...
 | ||||||
| 
 | 
 | ||||||
|     for (const sync of syncData) { |     for (const sync of syncData) { | ||||||
|         try { |         try { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 zadam
						zadam