Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								0b7ce39ff7 
								
							
								 
							
						 
						
							
							
								
								Remove `desktop-idle` dependency  
							
							 
							
							... 
							
							
							
							We’d rather not rely on a native dependency for this functionality. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								09ee2d4ea2 
								
							
								 
							
						 
						
							
							
								
								Switch to using `requestIdleCallback`  
							
							 
							
							... 
							
							
							
							Example:
https://developer.mozilla.org/en-US/docs/Web/API/Background_Tasks_API#Example  
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								d13668544d 
								
							
								 
							
						 
						
							
							
								
								Rename `IdleListener` to `IdleDetector`  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								92ace67846 
								
							
								 
							
						 
						
							
							
								
								Start idle listener on startup  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								3140e4d66d 
								
							
								 
							
						 
						
							
							
								
								Implement basic `IdleListener`  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								ca2afdc202 
								
							
								 
							
						 
						
							
							
								
								Add `desktop-idle` dependency  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								2e9f3bcf8d 
								
							
								 
							
						 
						
							
							
								
								Migrate attachments from IndexedDB to file system ( #2129 )  
							
							 
							
							... 
							
							
							
							- [x] Generate random file names.
- [x] Generate random file paths that prevent too many files per folder using
      fan-out.
- [x] Create attachment directory in user data folder.
- [x] Investigate operating system file indexing on:
  - [x] Windows: Confirmed that `AppData` is not indexed by default.
  - [x] macOS: Confirmed that `~/Library` files are not indexed by default.
        Searching system files using Spotlight requires multi-step opt-in:
        https://lifehacker.com/5711409/how-to-search-for-hidden-packaged-and-system-files-in-os-x .
        More info https://apple.stackexchange.com/a/92785 .
        Added `.noindex` suffix to `attachments` folder.
  - [x] Linux: n/a
- [x] Save incoming attachment files to disk
  - [x] On received
  - [x] On sync
- [x] Save outgoing attachments files to disk before sending
- [x] Display attachments either from disk or memory in attachment view.
      Be robust to multiple render passes.
  - [x] Test that missing attachment on disk doesn’t break app.
        Behavior: Message is displayed without attachment.
- [x] Delete attachment files when message is deleted.
Relates to #1589 . 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								7eaa6ef2f7 
								
							
								 
							
						 
						
							
							
								
								Remove `string-to-arraybuffer` dependency  
							
							 
							
							... 
							
							
							
							The function is simple enough to inline and this allows us to reduce our
dependencies surface area. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								0c06fff47b 
								
							
								 
							
						 
						
							
							
								
								Wire up `Message` / `Attachment` migration functions on startup  
							
							 
							
							... 
							
							
							
							Makes `migrationContext` obsolete. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								867f73b80a 
								
							
								 
							
						 
						
							
							
								
								Use double quotes for identifiers in error messages  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								06e7bca276 
								
							
								 
							
						 
						
							
							
								
								Use new `stringToArrayBuffer` function  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								70cdd2b350 
								
							
								 
							
						 
						
							
							
								
								Add `stringToArrayBuffer` utility  
							
							 
							
							... 
							
							
							
							This way we can avoid an extra dependency. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								232e906650 
								
							
								 
							
						 
						
							
							
								
								Remove `tmp` as dev dependency  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								2ad0fd7db6 
								
							
								 
							
						 
						
							
							
								
								Use Lodash `omit` instead of `delete`  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								ef2be2cf5f 
								
							
								 
							
						 
						
							
							
								
								Make `MessageView::onUnload` synchronous  
							
							 
							
							... 
							
							
							
							Our tests rely on that. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								add5d4ab0b 
								
							
								 
							
						 
						
							
							
								
								Prevent macOS Spotlight indexing of attachments folder  
							
							 
							
							... 
							
							
							
							See: https://apple.stackexchange.com/a/92785  
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								b3251a8de2 
								
							
								 
							
						 
						
							
							
								
								Prevent potential NPE  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								9d25aa4e43 
								
							
								 
							
						 
						
							
							
								
								Delete attachment files on disk upon message delete  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								279b3f81c7 
								
							
								 
							
						 
						
							
							
								
								Add `Attachment.deleteData`  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								10afcf1bb0 
								
							
								 
							
						 
						
							
							
								
								Add `Attachments.deleteData`  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								9b636a1885 
								
							
								 
							
						 
						
							
							
								
								Add test for `Attachments.readData`  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								f6f0359a61 
								
							
								 
							
						 
						
							
							
								
								Use `assert.deepEqual` instead of Lodash `isEqual`  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								833a203559 
								
							
								 
							
						 
						
							
							
								
								Remove Vim modeline  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								aba261122f 
								
							
								 
							
						 
						
							
							
								
								🎨  Use `camelCase` for mutable variable  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								e1c1b1aa72 
								
							
								 
							
						 
						
							
							
								
								Load attachment data before rendering  
							
							 
							
							... 
							
							
							
							Prevent double rendering of attachments by multiple entries into
`MessageView::render` using promises. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								97e3b49a36 
								
							
								 
							
						 
						
							
							
								
								Whitelist `js/views/message_view.js` for ESLint  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								b5721c2594 
								
							
								 
							
						 
						
							
							
								
								Remove Vim modeline  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								f031ac3126 
								
							
								 
							
						 
						
							
							
								
								Remove duplicate ESLint ignore entry  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								38e2468b2e 
								
							
								 
							
						 
						
							
							
								
								Set `schemaVersion` in `handleMessage`  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								e3dbeba963 
								
							
								 
							
						 
						
							
							
								
								Initialize schema version during `Message` construction  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								9a540d6d18 
								
							
								 
							
						 
						
							
							
								
								Load attachment data before sending message  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								1c8123ff1a 
								
							
								 
							
						 
						
							
							
								
								Move `writeAttachmentData` into `Attachments`  
							
							 
							
							... 
							
							
							
							Encapsulates all attachment operations that require Node.js / Electron APIs,
e.g. file system access. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								19a70ad8b8 
								
							
								 
							
						 
						
							
							
								
								Add `to-arraybuffer` dependency  
							
							 
							
							... 
							
							
							
							Used for converting Node.js buffers to `ArrayBuffer`. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								32911002d4 
								
							
								 
							
						 
						
							
							
								
								Verify `makeAttachmentPointer` and `encryptAttachment` arguments  
							
							 
							
							... 
							
							
							
							The underlying `crypto.subtle.encrypt` API requires it. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								8218e308cd 
								
							
								 
							
						 
						
							
							
								
								Improve identifier names  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								6355c54114 
								
							
								 
							
						 
						
							
							
								
								Return relative path from `writeAttachmentData`  
							
							 
							
							... 
							
							
							
							This will make our app more robust to changes in location on the file system. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								1262d1d696 
								
							
								 
							
						 
						
							
							
								
								Shorten prefix to 2 characters  
							
							 
							
							... 
							
							
							
							Using 2 hex characters [0-9a-f] will give us 16 * 16 = 256 root folders which
seems more manageable than 4096 (16^3). Assuming a user has 10,000 attachments,
they should roughly distribute at ~40 per folder with prefix length 2 rather
than ~2.5 per folder with a prefix of 3. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								2cd3d5ac16 
								
							
								 
							
						 
						
							
							
								
								Add `Message` schema version 3  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								e0428355be 
								
							
								 
							
						 
						
							
							
								
								Wire up `writeAttachment`  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								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. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								ebe2a769c9 
								
							
								 
							
						 
						
							
							
								
								Add `Attachment.migrateDataToFileSystem`  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								0fc2868f0e 
								
							
								 
							
						 
						
							
							
								
								Remove `tempy` dependency  
							
							 
							
							... 
							
							
							
							We already use `tmp`. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								8a94ca5c42 
								
							
								 
							
						 
						
							
							
								
								🎨  Use `Buffer.from`  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								1283c77518 
								
							
								 
							
						 
						
							
							
								
								Switch from hashed to random attachment file names  
							
							 
							
							... 
							
							
							
							Using hashes, we get the benefit of deduplication but if a user receives two
messages with the same attachment, deleting one would delete it for both since
they are only stored once. To avoid the complexity of tracking number of
references, we simply generate random file names similar to iMessage on MacOS
(?) and Signal Android. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								d9de6dacba 
								
							
								 
							
						 
						
							
							
								
								Add `writeAttachmentData` module  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								14f58281bc 
								
							
								 
							
						 
						
							
							
								
								Add `string-to-array-buffer` as dev dependency  
							
							 
							
							... 
							
							
							
							Used for testing attachment data migration. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								925ddbd7db 
								
							
								 
							
						 
						
							
							
								
								Add `tempy` as dev dependency  
							
							 
							
							... 
							
							
							
							Useful for creating random temporary directories for testing. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Daniel Gasienica
							
						 
						
							 
							
							
							
								
							
								14422652c6 
								
							
								 
							
						 
						
							
							
								
								Add `fs-extra` as direct dependency  
							
							 
							
							... 
							
							
							
							Allows us to use `fs` with promises. Turns out it’s already a
transitive dependency. 
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Navdeep Singh
							
						 
						
							 
							
							
							
								
							
								1a117e3f78 
								
							
								 
							
						 
						
							
							
								
								Fix   #2125  Prevent multiple settings modals  
							
							 
							
							
							
						 
						
							8 years ago  
						
					 
				
					
						
							
							
								 
								Vincent
							
						 
						
							 
							
							
							
								
							
								d520ba3b38 
								
							
								 
							
						 
						
							
							
								
								Mention correct branch to rebase off of  
							
							 
							
							
							
						 
						
							8 years ago