ca28f3030b 
								
							
								 
							
						 
						
							
							
								
								Add `MessageMigration` module  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								8e762797c0 
								
							
								 
							
						 
						
							
							
								
								Remove attachment validation  
							
							... 
							
							
							
							Turns out `fileName` is optional and maybe even `contentType`. We should revisit
this at a later point in time. 
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								09ee2d4ea2 
								
							
								 
							
						 
						
							
							
								
								Switch to using `requestIdleCallback`  
							
							... 
							
							
							
							Example:
https://developer.mozilla.org/en-US/docs/Web/API/Background_Tasks_API#Example  
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								d13668544d 
								
							
								 
							
						 
						
							
							
								
								Rename `IdleListener` to `IdleDetector`  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								92ace67846 
								
							
								 
							
						 
						
							
							
								
								Start idle listener on startup  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								3140e4d66d 
								
							
								 
							
						 
						
							
							
								
								Implement basic `IdleListener`  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								0c06fff47b 
								
							
								 
							
						 
						
							
							
								
								Wire up `Message` / `Attachment` migration functions on startup  
							
							... 
							
							
							
							Makes `migrationContext` obsolete. 
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								867f73b80a 
								
							
								 
							
						 
						
							
							
								
								Use double quotes for identifiers in error messages  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								70cdd2b350 
								
							
								 
							
						 
						
							
							
								
								Add `stringToArrayBuffer` utility  
							
							... 
							
							
							
							This way we can avoid an extra dependency. 
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								2ad0fd7db6 
								
							
								 
							
						 
						
							
							
								
								Use Lodash `omit` instead of `delete`  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								ef2be2cf5f 
								
							
								 
							
						 
						
							
							
								
								Make `MessageView::onUnload` synchronous  
							
							... 
							
							
							
							Our tests rely on that. 
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								b3251a8de2 
								
							
								 
							
						 
						
							
							
								
								Prevent potential NPE  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								9d25aa4e43 
								
							
								 
							
						 
						
							
							
								
								Delete attachment files on disk upon message delete  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								279b3f81c7 
								
							
								 
							
						 
						
							
							
								
								Add `Attachment.deleteData`  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								833a203559 
								
							
								 
							
						 
						
							
							
								
								Remove Vim modeline  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								e1c1b1aa72 
								
							
								 
							
						 
						
							
							
								
								Load attachment data before rendering  
							
							... 
							
							
							
							Prevent double rendering of attachments by multiple entries into
`MessageView::render` using promises. 
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								97e3b49a36 
								
							
								 
							
						 
						
							
							
								
								Whitelist `js/views/message_view.js` for ESLint  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								b5721c2594 
								
							
								 
							
						 
						
							
							
								
								Remove Vim modeline  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								38e2468b2e 
								
							
								 
							
						 
						
							
							
								
								Set `schemaVersion` in `handleMessage`  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								e3dbeba963 
								
							
								 
							
						 
						
							
							
								
								Initialize schema version during `Message` construction  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								9a540d6d18 
								
							
								 
							
						 
						
							
							
								
								Load attachment data before sending message  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								8218e308cd 
								
							
								 
							
						 
						
							
							
								
								Improve identifier names  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								6355c54114 
								
							
								 
							
						 
						
							
							
								
								Return relative path from `writeAttachmentData`  
							
							... 
							
							
							
							This will make our app more robust to changes in location on the file system. 
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								2cd3d5ac16 
								
							
								 
							
						 
						
							
							
								
								Add `Message` schema version 3  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								e0428355be 
								
							
								 
							
						 
						
							
							
								
								Wire up `writeAttachment`  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								aa82a2a5fb 
								
							
								 
							
						 
						
							
							
								
								Add `context` to `Message.upgradeSchema`  
							
							... 
							
							
							
							Allows us to pass in Electron/Node.js specific functions. This allows better
unit testing in Mocha where we don’t have access to Electron APIs. 
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								ebe2a769c9 
								
							
								 
							
						 
						
							
							
								
								Add `Attachment.migrateDataToFileSystem`  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								1a117e3f78 
								
							
								 
							
						 
						
							
							
								
								Fix   #2125  Prevent multiple settings modals  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								cea42bde7d 
								
									
								
							
								 
							
						 
						
							
							
								
								Encryption support for backup and restore  
							
							... 
							
							
							
							Also moved to the _ prefix in backup.js for all private methods exported
for testing. 
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								6d8f4b7b6e 
								
									
								
							
								 
							
						 
						
							
							
								
								Backup: zipped messages.json, flat attachments dir  
							
							... 
							
							
							
							Backup creates, in a target directory:
  - An attachments folder, with all attachments, each named for their
    parent message's id - a GUID. If there is more than one attachment
    in a given message,  each attachment beyond the first will end with
    '-N', zero-indexed.
  - A file named messages.zip. It contains exactly what went to disk in
    the original export code, but zipped up.
Export is now only 'light,' and in this new messages.zip format.
Import supports both the new format and the old format. If the target
directory has a messages.zip file, we'll treat it as the new format.
Next up: Encrypting attachments and the messages.zip! 
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								153a22f46b 
								
									
								
							
								 
							
						 
						
							
							
								
								Exclude unnecessary data in export: profiles, replayable errors  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								c0c758d459 
								
									
								
							
								 
							
						 
						
							
							
								
								Backup: All exports are now 'light' exports  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								e583434366 
								
									
								
							
								 
							
						 
						
							
							
								
								Refactor: Move Backup under window.Signal  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								186268a1b1 
								
									
								
							
								 
							
						 
						
							
							
								
								Remove strange eslint-generated triple-parens  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								81e94c5aa3 
								
									
								
							
								 
							
						 
						
							
							
								
								Refactor backup.js to use async/await  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								c01b343bd4 
								
									
								
							
								 
							
						 
						
							
							
								
								Code formatting updates for backup.js  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								c88381efe3 
								
							
								 
							
						 
						
							
							
								
								Use `async` / `await` to improve readability  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								2642844c27 
								
							
								 
							
						 
						
							
							
								
								Rewrite migration 17 without `idb`  
							
							... 
							
							
							
							We ran into issues when doing async operations inside of an IndexedDB
`onupgradeneeded` handler. The errors were ‘The transaction is not active’ or
‘Transaction has finished’. The following documentation confirmed that
transactions are committed/terminated when control returns to the event loop:
Spec
- https://www.w3.org/TR/IndexedDB/#transaction-lifetime-concept 
- https://www.w3.org/TR/IndexedDB/#upgrade-transaction-construct 
Stack Overflow
- https://stackoverflow.com/a/11059085 
- https://stackoverflow.com/a/27338944 
Since the initial database migration is so critical, I decided to avoid `idb`
with promise support for IndexedDB for now, but will reconsider using it for
other tasks in the future to improve readability of IndexedDB code. 
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								db2941cbb0 
								
							
								 
							
						 
						
							
							
								
								Measure duration of migration  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								a619d48fac 
								
							
								 
							
						 
						
							
							
								
								Update schema version history  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								0e20e8e2ea 
								
							
								 
							
						 
						
							
							
								
								Use `Errors.toLogFormat`  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								cd3aee962d 
								
							
								 
							
						 
						
							
							
								
								Upgrade message schema before sending  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								a5edbf8328 
								
							
								 
							
						 
						
							
							
								
								Initialize schema as first step in `upgradeSchema`  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								5d927b73e6 
								
							
								 
							
						 
						
							
							
								
								Use `while` loop for IDB cursor iteration  
							
							... 
							
							
							
							Previously, I messily combined promises and callbacks because I thought we
were affected by the microtask issue:
https://github.com/gasi/idb#iteratecursor--iteratekeycursor 
ESLint’s `more/no-then` encouraged me to revisit this and it works as expected. 
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								a76a6098c4 
								
							
								 
							
						 
						
							
							
								
								Simplify log statement  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								dbdf6fd880 
								
							
								 
							
						 
						
							
							
								
								Run version 17 migration upon startup  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								182e6ffe10 
								
							
								 
							
						 
						
							
							
								
								Add version 17 migration  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								752c8f97e6 
								
							
								 
							
						 
						
							
							
								
								🎨  Format ternaries  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								8dfaa5619f 
								
							
								 
							
						 
						
							
							
								
								Prefix private functions with underscore  
							
							
							
						 
						
							8 years ago  
				
					
						
							
							
								 
						
							
							
								ed336d31d7 
								
							
								 
							
						 
						
							
							
								
								Move schema versioning from `Attachment` to `Message`  
							
							
							
						 
						
							8 years ago