Commit Graph

3155 Commits

Author SHA1 Message Date
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
- https://github.com/superfeedr/indexeddb-backbonejs-adapter/blob/80c7a06d5c0a75296106e9a62663230459cef857/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