mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 19:49:01 +01:00 
			
		
		
		
	fix initial load and safe issue by storing noteId
This commit is contained in:
		
							parent
							
								
									272bb136d8
								
							
						
					
					
						commit
						afe2a03aef
					
				| @ -41,11 +41,6 @@ const TPL = ` | |||||||
|  * FIXME: FONTS from unpkg.com are loaded. Change font to HELVETICA?  |  * FIXME: FONTS from unpkg.com are loaded. Change font to HELVETICA?  | ||||||
|  *        See: https://www.npmjs.com/package/@excalidraw/excalidraw => FONT_FAMILY
 |  *        See: https://www.npmjs.com/package/@excalidraw/excalidraw => FONT_FAMILY
 | ||||||
|  */ |  */ | ||||||
| /** |  | ||||||
|  * FIXME: when loading a note, onchangehandler gets fired and then note is automatically saved. this leads to |  | ||||||
|  *        network overhead, and also sometimes to an empty note, if somehow loading failed, then empty content |  | ||||||
|  *        is saved. |  | ||||||
|  */ |  | ||||||
| /** | /** | ||||||
|  * Discussion?: add complete @excalidraw/excalidraw, utils, react, react-dom as library? maybe also node_modules? |  * Discussion?: add complete @excalidraw/excalidraw, utils, react, react-dom as library? maybe also node_modules? | ||||||
|  */ |  */ | ||||||
| @ -57,6 +52,7 @@ export default class ExcalidrawTypeWidget extends TypeWidget { | |||||||
|         this.debounceTimeOnchangeHandler = 750; // ms
 |         this.debounceTimeOnchangeHandler = 750; // ms
 | ||||||
| 
 | 
 | ||||||
|         // temporary vars
 |         // temporary vars
 | ||||||
|  |         this.currentNoteId = ""; | ||||||
|         this.currentSceneVersion = -1; |         this.currentSceneVersion = -1; | ||||||
| 
 | 
 | ||||||
|         // will be overwritten
 |         // will be overwritten
 | ||||||
| @ -119,8 +115,6 @@ export default class ExcalidrawTypeWidget extends TypeWidget { | |||||||
|                  |                  | ||||||
|                 ReactDOM.unmountComponentAtNode(this.$renderElement); |                 ReactDOM.unmountComponentAtNode(this.$renderElement); | ||||||
|                 ReactDOM.render(React.createElement(this.ExcalidrawReactApp), this.$renderElement); |                 ReactDOM.render(React.createElement(this.ExcalidrawReactApp), this.$renderElement); | ||||||
| 
 |  | ||||||
|                 // FIXME: probably, now, i should manually trigger a refresh?!
 |  | ||||||
|             }) |             }) | ||||||
| 
 | 
 | ||||||
|         return this.$widget; |         return this.$widget; | ||||||
| @ -133,6 +127,16 @@ export default class ExcalidrawTypeWidget extends TypeWidget { | |||||||
|      * @param {note} note  |      * @param {note} note  | ||||||
|      */ |      */ | ||||||
|     async doRefresh(note) { |     async doRefresh(note) { | ||||||
|  |         // see if note changed, since we do not get a new class for a new note
 | ||||||
|  |         this.log("doRefresh note KKKK", this.currentNoteId, note.noteId); | ||||||
|  |         const noteChanged = this.currentNoteId !== note.noteId; | ||||||
|  |         // reset scene to omit unnecessary onchange handler
 | ||||||
|  |         if (noteChanged) { | ||||||
|  |             this.log("doRefresh resetCurrentSceneVersion = -1"); | ||||||
|  |             this.currentSceneVersion = -1; | ||||||
|  |         } | ||||||
|  |         this.currentNoteId = note.noteId; | ||||||
|  |          | ||||||
|         // get note from backend and put into canvas
 |         // get note from backend and put into canvas
 | ||||||
|         const noteComplement = await froca.getNoteComplement(note.noteId); |         const noteComplement = await froca.getNoteComplement(note.noteId); | ||||||
|         this.log('doRefresh', note, noteComplement); |         this.log('doRefresh', note, noteComplement); | ||||||
| @ -232,25 +236,20 @@ export default class ExcalidrawTypeWidget extends TypeWidget { | |||||||
|         this.spacedUpdate.scheduleUpdate(); |         this.spacedUpdate.scheduleUpdate(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |  | ||||||
|      *  |  | ||||||
|         // FIXME: also, after we save, a refresh is triggered. if we switch too fast, we might get the saved
 |  | ||||||
|         //        version instead of our (draw something, activate circle, then refresh happens, circle activation
 |  | ||||||
|         //        is revoked)         
 |  | ||||||
|      */ |  | ||||||
|     onChangeHandler() { |     onChangeHandler() { | ||||||
|         this.log("onChangeHandler() =================", new Date(), this.isNewSceneVersion());         |         this.log("onChangeHandler() =================", new Date(), this.isNewSceneVersion());         | ||||||
|         const appState = this.excalidrawRef.current.getAppState() || {}; |         const appState = this.excalidrawRef.current.getAppState() || {}; | ||||||
| 
 | 
 | ||||||
|         // if cursor is down, rectangle is not yet part of elements. updating and refreshing breaks stuff
 |  | ||||||
|         const isCursorUp = appState.cursorButton === "up"; |  | ||||||
|         // changeHandler is called upon any tiny change in excalidraw. button clicked, hover, etc.
 |         // changeHandler is called upon any tiny change in excalidraw. button clicked, hover, etc.
 | ||||||
|         // make sure only when a new element is added, we actually save something.
 |         // make sure only when a new element is added, we actually save something.
 | ||||||
|         const isNewSceneVersion = this.isNewSceneVersion(); |         const isNewSceneVersion = this.isNewSceneVersion(); | ||||||
|         // FIXME: however, we might want to make an exception, if viewport changed, since viewport
 |         // FIXME: however, we might want to make an exception, if viewport changed, since viewport
 | ||||||
|         //        is desired to save? (add)
 |         //        is desired to save? (add)
 | ||||||
| 
 | 
 | ||||||
|         const shouldSave = isCursorUp && isNewSceneVersion; |         // upon updateScene, onchange is called, even though "nothing really changed" that is worth saving
 | ||||||
|  |         const isInitialScene = this.currentSceneVersion === -1; | ||||||
|  | 
 | ||||||
|  |         const shouldSave = isNewSceneVersion && !isInitialScene; | ||||||
| 
 | 
 | ||||||
|         if (shouldSave) { |         if (shouldSave) { | ||||||
|             this.updateSceneVersion(); |             this.updateSceneVersion(); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Tom
						Tom