Scott Nonnenberg
186268a1b1
Remove strange eslint-generated triple-parens
7 years ago
Scott Nonnenberg
81e94c5aa3
Refactor backup.js to use async/await
7 years ago
Scott Nonnenberg
c01b343bd4
Code formatting updates for backup.js
7 years ago
Daniel Gasienica
c88381efe3
Use `async` / `await` to improve readability
7 years ago
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.
7 years ago
Daniel Gasienica
db2941cbb0
Measure duration of migration
7 years ago
Daniel Gasienica
a619d48fac
Update schema version history
7 years ago
Daniel Gasienica
0e20e8e2ea
Use `Errors.toLogFormat`
7 years ago
Daniel Gasienica
cd3aee962d
Upgrade message schema before sending
7 years ago
Daniel Gasienica
a5edbf8328
Initialize schema as first step in `upgradeSchema`
7 years ago
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.
7 years ago
Daniel Gasienica
a76a6098c4
Simplify log statement
7 years ago
Daniel Gasienica
dbdf6fd880
Run version 17 migration upon startup
7 years ago
Daniel Gasienica
182e6ffe10
Add version 17 migration
7 years ago
Daniel Gasienica
752c8f97e6
🎨 Format ternaries
7 years ago
Daniel Gasienica
8dfaa5619f
Prefix private functions with underscore
7 years ago
Daniel Gasienica
ed336d31d7
Move schema versioning from `Attachment` to `Message`
7 years ago
Daniel Gasienica
b9e9f5e19a
🎨 `withInheritedSchemaVersion` to `inheritSchemaVersion`
7 years ago
Daniel Gasienica
df693ade7c
Allow `Attachment.fileName` to be `null`
7 years ago
Daniel Gasienica
c81ce1dc92
Fix log line
7 years ago
Daniel Gasienica
c27746b79e
Add `Message.withInheritedSchemaVersion`
7 years ago
Daniel Gasienica
e9e46464c2
Add `SchemaVersion` type
7 years ago
Daniel Gasienica
add4b11df3
Skip invalid attachments and make function sync
7 years ago
Daniel Gasienica
3dfc823716
Add `Attachment.removeSchemaVersion`
7 years ago
Scott Nonnenberg
256b87aa7a
Refactor newly-added ClearDataView in settings_view.js
7 years ago
Scott Nonnenberg
b01b939d15
Clear conversation list when the conversations collection resets
7 years ago
Scott Nonnenberg
c760fe29ac
Fix broken storeNames.forEach, since it's not an array
7 years ago
Scott Nonnenberg
a728c9efbf
Remove all mention of obsolete safety-number-approval setting
7 years ago
Scott Nonnenberg
26c273618a
Refactor: db tasks to database.js, log delete to modules/logs.js
7 years ago
Scott Nonnenberg
3527740598
Format updates to js/database.js
7 years ago
Scott Nonnenberg
3a151393c5
Move wrapDeferred from background.js to preload.js
...
It's necessary anywhere that will have to deal with Deferreds.
7 years ago
Scott Nonnenberg
12d9d41548
Move to better database deletion call; clears in-memory caches
7 years ago
Scott Nonnenberg
c81d3f5c0b
Allow ConversationController.load() to be called more than once
7 years ago
Scott Nonnenberg
383e02edc4
New section in settings screen, full-screen 'are you sure?'
7 years ago
Scott Nonnenberg
198f356792
Return number (not id) in getNumber, remove unnecessary comment
7 years ago
Scott Nonnenberg
9acb189650
Remove config after unlink, clear db when linked with new number
7 years ago
Daniel Gasienica
8a1bff0fad
Remove unused `require`
7 years ago
Daniel Gasienica
43b47fd349
Avoid `ensure-error` for privacy reasons
...
Example:
```
> node
> const nonError = {foo: 'i-am-private'};
undefined
// before
> util.inspect(nonError);
'{ foo: \'i-am-private\' }'
// after
> nonError.toString()
'[object Object]'
>
```
7 years ago
Daniel Gasienica
ea07915e6b
Escape special characters in file path
7 years ago
Daniel Gasienica
44b81f68dd
Remove privacy redaction from `Errors.toLogFormat`
7 years ago
Daniel Gasienica
49e0850fb2
Extract `Privacy` module
...
Centralizes how we redact sensitive information.
7 years ago
Daniel Gasienica
0c317c5498
Redact all private information from logs
7 years ago
Daniel Gasienica
0e2f8a8a06
Extract `Errors.redactSensitivePaths`
7 years ago
Daniel Gasienica
33bbb12626
Use `Errors.toLogFormat` in `backgrounds.js`
7 years ago
Daniel Gasienica
3dffdc3f0b
Rename `Errors` to `GlobalErrors` for clarity
7 years ago
Daniel Gasienica
2575196617
Extract `Errors.addGlobalHandler` procedure
7 years ago
Daniel Gasienica
be3e4d86c2
Add `Errors.toLogFormat`
...
Allows errors to be formatted and sanitized for logging. Removes sensitive paths
such as the app root directory.
Ideally, this module would be called singular `Error` but that is already a
global name. Using `Errors` plural is similar to Java convention for utilities
such as `Arrays`, `Collections`, `Files`, etc. See:
https://stackoverflow.com/a/11673838
7 years ago
Daniel Gasienica
b049412bfd
Document workaround for `got` `FormData` bug
...
See: https://github.com/sindresorhus/got/pull/466
7 years ago
Daniel Gasienica
710701d0fc
Document why `key` comes first
7 years ago
Daniel Gasienica
8b71155e7c
Replace `superagent` with `got` for debug logs
7 years ago