Daniel Gasienica
38ac9972e8
Improve termination condition
2018-04-03 13:16:05 -04:00
Daniel Gasienica
5b1a0c45df
Replace getAll
with cursor
...
This reduces the likelihood of IPC message size error.
2018-04-03 13:16:05 -04:00
Daniel Gasienica
ed77378293
Fix bug in termination condition
2018-04-03 12:30:13 -04:00
Daniel Gasienica
052fb841f6
Allow database name override in migrations
2018-04-03 11:45:10 -04:00
Daniel Gasienica
1e04083813
Support database upgrades in Database.open
2018-04-03 11:44:50 -04:00
Daniel Gasienica
f50ac1c99e
Reduce excessive logging about database status
2018-04-03 11:06:56 -04:00
Daniel Gasienica
77b1f3c505
Replace startup with attachment background migration
...
Iterates through `Message::id` index.
2018-04-02 20:07:07 -04:00
Daniel Gasienica
c853d1bccd
Remove whole database migrations
...
We should enable this when we are willing to run attachment migration
on startup.
2018-04-02 19:41:30 -04:00
Daniel Gasienica
057762806e
Add support for attachment background migration without index
2018-04-02 19:41:28 -04:00
Daniel Gasienica
32ac99b439
Prefer ISO date formatting
...
Previously, this was formatted using locale specific settings. This will allow
easier debugging by matching key rotation timestamps against log timestamps.
2018-04-02 18:57:58 -04:00
Daniel Gasienica
2e4893f4c1
Clarify implications of introducing new migrations
2018-04-02 18:54:51 -04:00
Daniel Gasienica
7413b787b6
Make migrations
private
2018-04-02 18:54:28 -04:00
Daniel Gasienica
b07c66eaa7
Generate attachments from local files
...
This ensures our benchmarking is closer to real-world usage, e.g. images, video,
etc. that are not compressible.
2018-04-02 17:58:37 -04:00
Daniel Gasienica
064a40544c
Fix error message formatting
2018-04-02 17:42:04 -04:00
Daniel Gasienica
442f5d7295
Use done
to match JavaScript iterators
...
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators
2018-04-02 17:42:04 -04:00
Daniel Gasienica
a4f0c5242f
Document why batch size is one
2018-04-02 17:42:04 -04:00
Daniel Gasienica
d59fdddb43
Improve storage.fetch
error message
2018-04-02 17:42:04 -04:00
Daniel Gasienica
805031ade8
Conditionally run post-attachment migrations
...
Introduce placeholder migrations for Backbone models so they never implicitly
run migrations whenever they are `fetch`ed. We prefer to run our migrations
explicitly upon app startup and then let Backbone models be (slightly) dumb(er)
models, without inadvertently triggering migrations.
2018-04-02 17:42:04 -04:00
Daniel Gasienica
bfbeedab5c
Temporarily disable post-attachment migration migrations
2018-04-02 15:26:24 -04:00
Daniel Gasienica
d9be6a0f94
Destructure Lodash require
s
2018-04-02 15:12:04 -04:00
Daniel Gasienica
b7b6195cfc
Extract IIFE into separate function
2018-04-02 12:17:36 -04:00
Daniel Gasienica
11f98474ba
Capture how many messages we have to process
2018-04-02 12:17:36 -04:00
Daniel Gasienica
0fdc1140dd
Add Database.getCount
function
2018-04-02 12:17:36 -04:00
Daniel Gasienica
1f8556b049
Remove unused createCollection
2018-04-02 12:17:36 -04:00
Daniel Gasienica
c67c2a858a
Remove Backbone references for attachment migration
...
It has to run without any other migrations interfering.
2018-04-02 12:17:36 -04:00
Daniel Gasienica
0c40f35623
Document disadvantage of fetching messages without index
2018-04-02 12:17:36 -04:00
Daniel Gasienica
a4ecf1a9d6
Define constant after creating idle detector
2018-04-02 12:17:36 -04:00
Daniel Gasienica
d3c9de4712
Add debug module
...
Lets us generate large conversations with large attachments.
2018-04-02 12:17:36 -04:00
Daniel Gasienica
30037e5308
Reduce attachment migration batch size to 1
...
This prevents ‘Maximum IPC message size exceeded’ due to IDB `getAll` operation.
- https://github.com/zincbase/zincdb/issues/17
- https://cs.chromium.org/chromium/src/content/browser/indexed_db/indexed_db_database.cc?q=%22Maximum+IPC+message+size+exceeded%22&sq=package:chromium&l=1160
2018-04-02 12:17:36 -04:00
Daniel Gasienica
21147a20a0
Add sleep
module
2018-04-02 12:17:36 -04:00
Daniel Gasienica
08f73b8420
Remove last processed index after attachment migration
2018-04-02 12:17:36 -04:00
Daniel Gasienica
696a144ab7
Add settings.deleteItem
2018-04-02 12:17:36 -04:00
Daniel Gasienica
a18e462817
Move migrations to Signal.Migrations
2018-04-02 12:17:36 -04:00
Daniel Gasienica
5910f84af4
Remove outdated documentation
2018-04-02 12:17:36 -04:00
Daniel Gasienica
efe3cd67fc
Allow attachment migration run on higher database version
2018-04-02 12:17:36 -04:00
Daniel Gasienica
921c3dba7c
Skip migrations that have already been applied
2018-04-02 12:17:36 -04:00
Daniel Gasienica
417511ffd2
Add database.getVersion
2018-04-02 12:17:36 -04:00
Daniel Gasienica
c5c94bc3ab
Extract getMigrationVersions
2018-04-02 12:17:36 -04:00
Daniel Gasienica
6aea36240d
Rename closeDatabase
to closeDatabaseConnection
2018-04-02 12:17:36 -04:00
Daniel Gasienica
016432826b
Extract database
and settings
modules
2018-04-02 12:17:36 -04:00
Daniel Gasienica
5bea894abd
Close database connection via Backbone IDB adapter
2018-04-02 12:17:36 -04:00
Daniel Gasienica
f50e9ae364
Log closing connection of database
2018-04-02 12:17:36 -04:00
Daniel Gasienica
4ff8bc3357
Use camelCase
for non-constructors
2018-04-02 12:17:36 -04:00
Daniel Gasienica
3720c3f3bb
Improve log message
2018-04-02 12:17:36 -04:00
Daniel Gasienica
ce5b450fdb
Log targetSchemaVersion
2018-04-02 12:17:36 -04:00
Daniel Gasienica
f7f24b5822
Log total number of processed messages
2018-04-02 12:17:36 -04:00
Daniel Gasienica
eca930770c
Remove hard-coded database connection settings
2018-04-02 12:17:36 -04:00
Daniel Gasienica
1df6dc8378
Abort processing if there are no more messages
2018-04-02 12:17:36 -04:00
Daniel Gasienica
85490fbc98
Disable JSHint for background.js
...
It doesn’t recognize `async` and I couldn’t figure out how to ignore a top-level
`async` without cascading errors.
2018-04-02 12:17:36 -04:00
Daniel Gasienica
d5d0eabdfd
Remove usage of storage
module
2018-04-02 12:17:36 -04:00
Daniel Gasienica
8966e80284
Improve identifier names
2018-04-02 12:17:36 -04:00
Daniel Gasienica
3e2d575506
Document MessageDataMigrator
module design
2018-04-02 12:17:36 -04:00
Daniel Gasienica
3c57dbfb56
Extract NUM_MESSAGES_PER_BATCH
2018-04-02 12:17:36 -04:00
Daniel Gasienica
85788d3c4a
Match items
storage format to Backbone adapter
2018-04-02 12:17:36 -04:00
Daniel Gasienica
7de7fcf561
Avoid no-param-reassign
violation
2018-04-02 12:17:36 -04:00
Daniel Gasienica
070235b59b
Implement MessageDataMigrator.processAll
...
Upgrades schema of all messags upon startup.
2018-04-02 12:17:36 -04:00
Daniel Gasienica
b8a0bc3423
Run attachment to disk migration on startup
2018-04-02 12:17:36 -04:00
Daniel Gasienica
178a3cc262
Reduce work for verifying transaction completion
2018-04-02 12:17:36 -04:00
Daniel Gasienica
b6e978f74c
Implement MessagesDataMigrator.processAll
2018-04-02 12:17:36 -04:00
Daniel Gasienica
457bf7ab9d
Add createCollection
function
2018-04-02 12:17:36 -04:00
Daniel Gasienica
8ea257ad4d
Use double quotes for identifiers in error messages
2018-04-02 12:17:36 -04:00
Daniel Gasienica
172616ca4f
Add log message for dummy migration 18
2018-04-02 12:17:36 -04:00
Daniel Gasienica
579b01283e
Replace wrapDeferred
with deferredToPromise
2018-04-02 12:17:36 -04:00
Daniel Gasienica
40c40c800a
Prefer exports
2018-04-02 12:17:36 -04:00
Daniel Gasienica
da144edc56
Manually close database connection after migration
2018-04-02 12:17:36 -04:00
Daniel Gasienica
106ce21c49
Remove redundant log message
2018-04-02 12:17:36 -04:00
Daniel Gasienica
fcd30cd919
Close database after migration
...
This is not 100% reliable as database connections are closed in a separate
thread according to the documentation:
- https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase/close
- https://stackoverflow.com/a/18639298
- 80c7a06d5c/backbone-indexeddb.js (L558-L565)
2018-04-02 12:17:36 -04:00
Daniel Gasienica
c765422fa1
Extract deferredToPromise
2018-04-02 12:17:36 -04:00
Daniel Gasienica
e2f1339ab9
Explicitly run post-attachment migrations
2018-04-02 12:17:36 -04:00
Daniel Gasienica
d7c8d33edb
Extract runMigrations
2018-04-02 12:17:36 -04:00
Daniel Gasienica
d16178638e
Split database migrations into pre- and post-attachment migration
...
- Run light-weight migrations before attachment migration.
- Run regular migrations after attachments have been moved to disk.
2018-04-02 12:17:36 -04:00
Daniel Gasienica
b24dad23ea
Fix search view conversation reset bug
...
When searching for an existing conversation using a phone number, it’s possible
to click on ‘Start conversation…’ and have that new dummy entry overwrite the
existing conversation.
This change ensures we are always showing a dummy conversation model that is not
part of the conversation collection. Adding it is always idempotent as it goes
through `getOrCreateAndWait`.
2018-03-27 19:54:35 -04:00
Daniel Gasienica
08f6886f3e
Strengthen precondition of ConversationController.getOrCreate
2018-03-27 19:52:18 -04:00
Daniel Gasienica
83c979fb84
Rename createTemporary
to dangerouslyCreateAndAdd
...
Class: `ConversationController`.
This function should not be used in application code as it creates potentially
invalid `Conversation` instances in our global conversation collection. We keep
making it available for testing purposes.
2018-03-27 19:52:17 -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
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
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