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
Scott Nonnenberg
256b87aa7a
Refactor newly-added ClearDataView in settings_view.js
2018-03-14 14:42:15 -07:00
Scott Nonnenberg
ef041b29d0
Remove scrollbar when placeholder is showning when in iOS theme
2018-03-14 14:42:15 -07:00
Scott Nonnenberg
b01b939d15
Clear conversation list when the conversations collection resets
2018-03-14 14:42:15 -07:00
Scott Nonnenberg
c760fe29ac
Fix broken storeNames.forEach, since it's not an array
2018-03-14 14:42:15 -07:00
Scott Nonnenberg
a728c9efbf
Remove all mention of obsolete safety-number-approval setting
2018-03-14 14:42:15 -07:00
Scott Nonnenberg
26c273618a
Refactor: db tasks to database.js, log delete to modules/logs.js
2018-03-14 14:42:15 -07:00
Scott Nonnenberg
3527740598
Format updates to js/database.js
2018-03-14 14:42:14 -07:00
Scott Nonnenberg
3a151393c5
Move wrapDeferred from background.js to preload.js
...
It's necessary anywhere that will have to deal with Deferreds.
2018-03-14 14:42:14 -07:00
Scott Nonnenberg
a824e2b42d
Start moving towards semantic CSS class names
2018-03-14 14:42:14 -07:00
Scott Nonnenberg
2373840df8
Use proper logging if error pops when deleting all logs
2018-03-14 14:42:14 -07:00
Scott Nonnenberg
12d9d41548
Move to better database deletion call; clears in-memory caches
2018-03-14 14:42:14 -07:00
Scott Nonnenberg
c81d3f5c0b
Allow ConversationController.load() to be called more than once
2018-03-14 14:42:14 -07:00
Scott Nonnenberg
2ffabdcdd9
Delete data screen: Remove scrollbar when no convo selected
...
Turns out that the welcome screen had a min-height which caused weird
things when you take the window down to minimum height. It looked
particularly bad with the new full-screen delete data confirmation
screen.
2018-03-14 14:42:13 -07:00
Scott Nonnenberg
383e02edc4
New section in settings screen, full-screen 'are you sure?'
2018-03-14 14:42:13 -07:00
Scott Nonnenberg
928906e0f3
Enable deletion of all logs on disk via IPC
2018-03-14 14:42:13 -07:00
Scott Nonnenberg
198f356792
Return number (not id) in getNumber, remove unnecessary comment
2018-03-14 14:42:13 -07:00
Scott Nonnenberg
9acb189650
Remove config after unlink, clear db when linked with new number
2018-03-14 14:42:13 -07:00
Scott Nonnenberg
fd056e1b4c
Add nsp to dev dependencies and to travis and CI scripts
2018-03-14 14:42:13 -07:00
Scott Nonnenberg
c8555974e4
Delete data on windows uninstall
2018-03-14 14:37:13 -07:00
Scott Nonnenberg
6e86bf238e
Disable all webviews, since we never intend to create them ( #2114 )
2018-03-14 14:23:24 -07:00
Daniel Gasienica
8bd37b7f8d
Merge #2110 from gasi: Log Uncaught Errors & Unhandled Promise Rejections In Main Process
...
- [x] Add `electron-unhandled` dependency:
- ~~Ensures errors are normalized~~ (disabled to prevent serializing non-errors that are thrown and leaking information)
- Distinguishes between main and renderer processes
- Allows suppression of error dialog
- [x] Log uncaught errors and unhandled promise rejections in main process
- [x] Tested using unguarded `throw new TyperError(…)` and `Promise.reject(…)` in `setTimeout` after `app` `ready` event.
- [x] Extract `Privacy` module that centralizes how we redact sensitive information such as phone numbers, group IDs, and user file paths.
- [x] Add `eslint-plugin-mocha` to disallow exclusive tests using `*.only`.
Fixes #2019 .
2018-03-08 18:05:22 -05:00
Daniel Gasienica
8a1bff0fad
Remove unused require
2018-03-08 17:50:10 -05:00
Daniel Gasienica
c317f34f67
Remove ensure-error
and clean-error
dependency
...
It potentially could leak information from serialized non-errors that are thrown
due to `util.inspect`.
2018-03-08 17:45:55 -05:00
Daniel Gasienica
c7305db8c8
Disallow exclusive tests, i.e. .only
2018-03-08 16:23:51 -05:00