Scott Nonnenberg
4e6d1e128f
Update to electron 1.8.4 ( #2186 )
2018-03-26 14:39:55 -07:00
Daniel Gasienica
a3d43a56a7
Show Optimization Message During Database Migration ( #2165 )
2018-03-26 17:02:12 -04:00
Daniel Gasienica
90de9d85a3
Remove type annotation
2018-03-26 16:56:37 -04:00
Daniel Gasienica
4c10fcfa17
Reduce threshold until optimization appears to 1s
2018-03-26 16:56:37 -04:00
Daniel Gasienica
dede0f1e25
Improve user messaging during initialization
...
- We first show a localized loading message.
- If initialization takes longer than a certain threshold, we show a different
‘optimization’ message.
- If initialization is below the threshold the message change is canceled right
before the regular loading screen.
2018-03-26 16:56:37 -04:00
Daniel Gasienica
add19aa732
Add initialization view
2018-03-26 16:56:37 -04:00
Daniel Gasienica
1c4b7eb01c
Make namespace generation clearer
...
Let’s make it clear that this is where we initialize our namespaces to avoid
proliferation of various initialization points now that we support CommonJS.
2018-03-26 16:56:20 -04:00
Daniel Gasienica
fb4445cbd6
Run background script after DOM is parsed
...
This allows us to leverage the existing loading screen for messaging without
having to explicitly wait for DOM load event.
2018-03-26 16:53:45 -04:00
Daniel Gasienica
d35e365507
Upgrade Message Schema (Data) in Background ( #2162 )
...
In order to avoid incurring long startup times, we migrate message schema (data) in the background using `window.requestIdleCallback` API. The migration moves attachment data from IndexedDB to disk and reduces load on our database which may cause data loss (#1589 ).
On my development profile, this migration reduced the IndexedDB directory from 33.4MB to 4.7MB.
2018-03-26 16:53:01 -04:00
Daniel Gasienica
f253fef5c6
Explicitly make onDestroy
have void
return type
2018-03-26 16:49:21 -04:00
Daniel Gasienica
9b112489cd
Upgrade 2 messages every 30 seconds
...
This results in 4 messages per minute or 240 messages per hour.
2018-03-26 16:49:21 -04:00
Daniel Gasienica
7c2fde4433
Add Signal.Workflow
namespace
2018-03-26 16:49:21 -04:00
Daniel Gasienica
4a7cc22de3
🎨 Use window.requestIdleCallback
2018-03-26 16:49:21 -04:00
Daniel Gasienica
5c9f18e1ae
Wire up background message migration
2018-03-26 16:49:21 -04:00
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
0b7ce39ff7
Remove desktop-idle
dependency
...
We’d rather not rely on a native dependency for this functionality.
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
ca2afdc202
Add desktop-idle
dependency
2018-03-26 16:49:21 -04:00
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 .
2018-03-26 16:43:47 -04:00
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.
2018-03-26 16:38:34 -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
06e7bca276
Use new stringToArrayBuffer
function
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
232e906650
Remove tmp
as dev 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
add5d4ab0b
Prevent macOS Spotlight indexing of attachments folder
...
See: https://apple.stackexchange.com/a/92785
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
10afcf1bb0
Add Attachments.deleteData
2018-03-26 16:38:34 -04:00
Daniel Gasienica
9b636a1885
Add test for Attachments.readData
2018-03-26 16:38:34 -04:00
Daniel Gasienica
f6f0359a61
Use assert.deepEqual
instead of Lodash isEqual
2018-03-26 16:38:34 -04:00
Daniel Gasienica
833a203559
Remove Vim modeline
2018-03-26 16:38:34 -04:00
Daniel Gasienica
aba261122f
🎨 Use camelCase
for mutable variable
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
f031ac3126
Remove duplicate ESLint ignore entry
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
1c8123ff1a
Move writeAttachmentData
into Attachments
...
Encapsulates all attachment operations that require Node.js / Electron APIs,
e.g. file system access.
2018-03-26 16:38:34 -04:00
Daniel Gasienica
19a70ad8b8
Add to-arraybuffer
dependency
...
Used for converting Node.js buffers to `ArrayBuffer`.
2018-03-26 16:38:34 -04:00