Commit graph

3504 commits

Author SHA1 Message Date
Daniel Gasienica
14f58281bc Add string-to-array-buffer as dev dependency
Used for testing attachment data migration.
2018-03-26 16:38:34 -04:00
Daniel Gasienica
925ddbd7db Add tempy as dev dependency
Useful for creating random temporary directories for testing.
2018-03-26 16:38:34 -04:00
Daniel Gasienica
14422652c6 Add fs-extra as direct dependency
Allows us to use `fs` with promises. Turns out it’s already a
transitive dependency.
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
Vincent
d520ba3b38 Mention correct branch to rebase off of 2018-03-23 12:15:52 -07:00
Vincent
5b5903c70e Fix link to Signal update location
Fixes #2043.
2018-03-23 12:15:52 -07:00
Vincent
e0d0aa520e Fix typo contribution guide 2018-03-23 12:15:52 -07:00
Daniel Gasienica
79d9f36070
Request translation changes via Transifex (#2157)
Some of our users submit direct PRs against our translations. This update to our PR template is meant to encourage them to contribute translations via Transifex.

Prompted by this user PR: https://github.com/signalapp/Signal-Desktop/pull/2156
2018-03-21 15:00:28 -04:00
Daniel Gasienica
7d264354be Request translation changes to be made via Transifex 2018-03-21 11:29:34 -04:00
Scott Nonnenberg
0d105fc190
1.7.0-beta.2
Fixed: White block at bottom of conversation panel in iOS theme
(#2144 and #2153)

Fixed: Would attempt to rotate signed prekey every five seconds,
forever, after app discovers it is unlinked
(1c6d91b59c)

Dev:
  - Introduce IndexedDB index on `messages` store tracking
    `schemaVersion` (#2128)
  - Preparation for encrypted backups
    (cea42bde7d)
  - Updates to structure of exported data - messages.zip, flat list of
    attachments (6d8f4b7b6e)
2018-03-20 14:05:16 -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
1c6d91b59c
Harden rotateSignedPrekey against nonexistent identity key
This is now what happens after Signal Desktop discovers that it is no
longer linked with a mobile device, since the identityh key is deleted.
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
8636ef3f18
Merge pull request #2153 from signalapp/ios-theme-conversation-panel-position
iOS Theme: Ensure first message is not cut off
2018-03-20 14:50:52 -04:00
Daniel Gasienica
696b23a3e0 Ensure first message is not cut off in iOS theme
Without this, the user couldn’t scroll all the way up and  the first message was
cut off as panel extended below header.
2018-03-20 14:31:43 -04:00
Daniel Gasienica
51d17a6dcb
Create IndexedDB index from schemaVersion to Message (#2128) 2018-03-19 19:47:26 -04:00
Daniel Gasienica
bde8436829 Remove idb dependency
See f3c879a3b516645f908783a92c73bdfc143f20f2 for details.
2018-03-19 19:27:59 -04: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
ac31dcbd75 Expose Signal.Migrations namespace 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
Daniel Gasienica
fa209fb98f Add idb fork with upgradeDBFromTransaction support
This allows us to use `async` / `await` with IndexedDB.
2018-03-19 19:27:59 -04:00
Daniel Gasienica
ed336d31d7 Move schema versioning from Attachment to Message 2018-03-19 19:27:59 -04:00
Daniel Gasienica
7e3cc432d6 Whitelist js/database.js for ESLint 2018-03-19 19:27:59 -04:00
Daniel Gasienica
b9e9f5e19a 🎨 withInheritedSchemaVersion to inheritSchemaVersion 2018-03-19 19:27:59 -04:00
Daniel Gasienica
df693ade7c Allow Attachment.fileName to be null 2018-03-19 19:27:59 -04:00
Daniel Gasienica
c81ce1dc92 Fix log line 2018-03-19 19:27:59 -04:00
Daniel Gasienica
c27746b79e Add Message.withInheritedSchemaVersion 2018-03-19 19:27:59 -04:00
Daniel Gasienica
e9e46464c2 Add SchemaVersion type 2018-03-19 19:27:59 -04:00
Daniel Gasienica
add4b11df3 Skip invalid attachments and make function sync 2018-03-19 19:27:59 -04:00
Daniel Gasienica
3dfc823716 Add Attachment.removeSchemaVersion 2018-03-19 19:27:59 -04:00
Daniel Gasienica
37d35db3c3
Merge pull request #2144 from signalapp/ios-theme-conversation-panel-height
iOS Theme: Ensure conversation panel fills screen vertically
2018-03-19 19:20:13 -04:00
Daniel Gasienica
685f05a99d Ensure conversation panel fills screen vertically
Required addition to the following change:
ef041b29d0
2018-03-19 18:10:07 -04:00
Scott Nonnenberg
bbbd527985
v1.7.0-beta.1
New option in settings: delete all application data
(383e02edc4)

Remove all configuration in database when we discover we are unlinked
(9acb189650)

Delete everything in database when we link with a different phone number
from previous link (9acb189650)

Windows: Delete all data on uninstall
(c8555974e4)

Dev:
  - Switch to a new service for debug logs, since GitHub is retiring
    anonymous gists (#2111)
  - Redact file paths in anything that goes to the log on disk (#2110)
  - When top-level process errors happen, don't show dialog with stack
    trace (#2110)
  - Add `nsp` to CI runs
    (fd056e1b4c)
  - Add eslint-plugin-mocha to disallow exclusive tests using *.only
    (#2110)
2018-03-16 11:32:03 -07:00