Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	4651cbc2eb  
						 
						
							
							
								
								
								Improve `Message.upgradeSchema preconditions  
							
							
							
						 
						
							2018-03-26 16:49:21 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	ca28f3030b  
						 
						
							
							
								
								
								Add MessageMigration module  
							
							
							
						 
						
							2018-03-26 16:49:21 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	8e762797c0  
						 
						
							
							
								
								
								Remove attachment validation  
							
							... 
							
							
							
							Turns out `fileName` is optional and maybe even `contentType`. We should revisit
this at a later point in time. 
							
						 
						
							2018-03-26 16:49:21 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	09ee2d4ea2  
						 
						
							
							
								
								
								Switch to using requestIdleCallback  
							
							... 
							
							
							
							Example:
https://developer.mozilla.org/en-US/docs/Web/API/Background_Tasks_API#Example  
							
						 
						
							2018-03-26 16:49:21 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	d13668544d  
						 
						
							
							
								
								
								Rename IdleListener to IdleDetector  
							
							
							
						 
						
							2018-03-26 16:49:21 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	92ace67846  
						 
						
							
							
								
								
								Start idle listener on startup  
							
							
							
						 
						
							2018-03-26 16:49:21 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	3140e4d66d  
						 
						
							
							
								
								
								Implement basic IdleListener  
							
							
							
						 
						
							2018-03-26 16:49:21 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	0c06fff47b  
						 
						
							
							
								
								
								Wire up Message / Attachment migration functions on startup  
							
							... 
							
							
							
							Makes `migrationContext` obsolete. 
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	867f73b80a  
						 
						
							
							
								
								
								Use double quotes for identifiers in error messages  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	70cdd2b350  
						 
						
							
							
								
								
								Add stringToArrayBuffer utility  
							
							... 
							
							
							
							This way we can avoid an extra dependency. 
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	2ad0fd7db6  
						 
						
							
							
								
								
								Use Lodash omit instead of delete  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	ef2be2cf5f  
						 
						
							
							
								
								
								Make MessageView::onUnload synchronous  
							
							... 
							
							
							
							Our tests rely on that. 
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	b3251a8de2  
						 
						
							
							
								
								
								Prevent potential NPE  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	9d25aa4e43  
						 
						
							
							
								
								
								Delete attachment files on disk upon message delete  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	279b3f81c7  
						 
						
							
							
								
								
								Add Attachment.deleteData  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	833a203559  
						 
						
							
							
								
								
								Remove Vim modeline  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	e1c1b1aa72  
						 
						
							
							
								
								
								Load attachment data before rendering  
							
							... 
							
							
							
							Prevent double rendering of attachments by multiple entries into
`MessageView::render` using promises. 
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	97e3b49a36  
						 
						
							
							
								
								
								Whitelist js/views/message_view.js for ESLint  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	b5721c2594  
						 
						
							
							
								
								
								Remove Vim modeline  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	38e2468b2e  
						 
						
							
							
								
								
								Set schemaVersion in handleMessage  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	e3dbeba963  
						 
						
							
							
								
								
								Initialize schema version during Message construction  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	9a540d6d18  
						 
						
							
							
								
								
								Load attachment data before sending message  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	8218e308cd  
						 
						
							
							
								
								
								Improve identifier names  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	6355c54114  
						 
						
							
							
								
								
								Return relative path from writeAttachmentData  
							
							... 
							
							
							
							This will make our app more robust to changes in location on the file system. 
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	2cd3d5ac16  
						 
						
							
							
								
								
								Add Message schema version 3  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	e0428355be  
						 
						
							
							
								
								
								Wire up writeAttachment  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	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. 
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	ebe2a769c9  
						 
						
							
							
								
								
								Add Attachment.migrateDataToFileSystem  
							
							
							
						 
						
							2018-03-26 16:38:34 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Navdeep Singh 
								
							 
						 
						
							
							
								
							
							
	1a117e3f78  
						 
						
							
							
								
								
								Fix   #2125  Prevent multiple settings modals  
							
							
							
						 
						
							2018-03-23 12:16:44 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Scott Nonnenberg 
								
							 
						 
						
							
							
								
							
							
	
	
	cea42bde7d 
 
						 
						
							
							
								
								
								Encryption support for backup and restore  
							
							... 
							
							
							
							Also moved to the _ prefix in backup.js for all private methods exported
for testing. 
							
						 
						
							2018-03-20 11:53:54 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Scott Nonnenberg 
								
							 
						 
						
							
							
								
							
							
	
	
	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! 
							
						 
						
							2018-03-20 11:53:22 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Scott Nonnenberg 
								
							 
						 
						
							
							
								
							
							
	
	
	153a22f46b 
 
						 
						
							
							
								
								
								Exclude unnecessary data in export: profiles, replayable errors  
							
							
							
						 
						
							2018-03-20 11:53:22 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Scott Nonnenberg 
								
							 
						 
						
							
							
								
							
							
	
	
	c0c758d459 
 
						 
						
							
							
								
								
								Backup: All exports are now 'light' exports  
							
							
							
						 
						
							2018-03-20 11:53:21 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Scott Nonnenberg 
								
							 
						 
						
							
							
								
							
							
	
	
	e583434366 
 
						 
						
							
							
								
								
								Refactor: Move Backup under window.Signal  
							
							
							
						 
						
							2018-03-20 11:53:19 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Scott Nonnenberg 
								
							 
						 
						
							
							
								
							
							
	
	
	186268a1b1 
 
						 
						
							
							
								
								
								Remove strange eslint-generated triple-parens  
							
							
							
						 
						
							2018-03-20 11:52:42 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Scott Nonnenberg 
								
							 
						 
						
							
							
								
							
							
	
	
	81e94c5aa3 
 
						 
						
							
							
								
								
								Refactor backup.js to use async/await  
							
							
							
						 
						
							2018-03-20 11:52:42 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Scott Nonnenberg 
								
							 
						 
						
							
							
								
							
							
	
	
	c01b343bd4 
 
						 
						
							
							
								
								
								Code formatting updates for backup.js  
							
							
							
						 
						
							2018-03-20 11:52:42 -07:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	c88381efe3  
						 
						
							
							
								
								
								Use async / await to improve readability  
							
							
							
						 
						
							2018-03-19 19:27:59 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	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. 
							
						 
						
							2018-03-19 19:27:59 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	db2941cbb0  
						 
						
							
							
								
								
								Measure duration of migration  
							
							
							
						 
						
							2018-03-19 19:27:59 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	a619d48fac  
						 
						
							
							
								
								
								Update schema version history  
							
							
							
						 
						
							2018-03-19 19:27:59 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	0e20e8e2ea  
						 
						
							
							
								
								
								Use Errors.toLogFormat  
							
							
							
						 
						
							2018-03-19 19:27:59 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	cd3aee962d  
						 
						
							
							
								
								
								Upgrade message schema before sending  
							
							
							
						 
						
							2018-03-19 19:27:59 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	a5edbf8328  
						 
						
							
							
								
								
								Initialize schema as first step in upgradeSchema  
							
							
							
						 
						
							2018-03-19 19:27:59 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	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. 
							
						 
						
							2018-03-19 19:27:59 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	a76a6098c4  
						 
						
							
							
								
								
								Simplify log statement  
							
							
							
						 
						
							2018-03-19 19:27:59 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	dbdf6fd880  
						 
						
							
							
								
								
								Run version 17 migration upon startup  
							
							
							
						 
						
							2018-03-19 19:27:59 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	182e6ffe10  
						 
						
							
							
								
								
								Add version 17 migration  
							
							
							
						 
						
							2018-03-19 19:27:59 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	752c8f97e6  
						 
						
							
							
								
								
								🎨  Format ternaries  
							
							
							
						 
						
							2018-03-19 19:27:59 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Daniel Gasienica 
								
							 
						 
						
							
							
								
							
							
	8dfaa5619f  
						 
						
							
							
								
								
								Prefix private functions with underscore  
							
							
							
						 
						
							2018-03-19 19:27:59 -04:00