Commit Graph

2167 Commits (186268a1b12930bf23f2ca4a4c461bee384793c1)

Author SHA1 Message Date
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